这里的第一个问题:
目前我正在开发一个需要使用 3 个不同实体的项目。这些实体是:用户、场地和设施。
每个实体都有它的表:
设施表:
CREATE TABLE `facility` (
`facility_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`venue_id` INT(10) UNSIGNED NOT NULL,
`name` VARCHAR(50) NOT NULL COLLATE 'utf8_unicode_ci',
`surface` VARCHAR(50) NOT NULL COLLATE 'utf8_unicode_ci',
`max_timeblock` INT(10) UNSIGNED NOT NULL,
`min_timeblock` INT(10) UNSIGNED NOT NULL,
`availability` INT(10) UNSIGNED NOT NULL,
PRIMARY KEY (`facility_id`),
UNIQUE INDEX `facility_id` (`facility_id`),
INDEX `facility-venue_id_key` (`venue_id`),
CONSTRAINT `facility-venue_id_key` FOREIGN KEY (`venue_id`) REFERENCES `venue` (`venue_id`) ON UPDATE CASCADE ON DELETE CASCADE)
场地表:
CREATE TABLE `venue` (
`venue_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) NOT NULL COLLATE 'utf8_unicode_ci',
`description` VARCHAR(50) NOT NULL COLLATE 'utf8_unicode_ci',
`email` VARCHAR(50) NOT NULL COLLATE 'utf8_unicode_ci',
`phone` VARCHAR(50) NOT NULL COLLATE 'utf8_unicode_ci',
`opening_time` TIME NOT NULL,
`closing_time` TIME NOT NULL,
`booking_conditions` VARCHAR(50) NOT NULL COLLATE 'utf8_unicode_ci',
`booking_method` INT(10) UNSIGNED NOT NULL,
`status` INT(10) UNSIGNED NULL DEFAULT NULL,
PRIMARY KEY (`venue_id`),
UNIQUE INDEX `venue_id` (`venue_id`)
)
用户表:
CREATE TABLE `user` (
`user_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'This field will hold the Unique ID for each user.',
`username` VARCHAR(50) NOT NULL COMMENT 'This field will be classed as a display name for the users so when searching they arent looking for the ID.' COLLATE 'utf8_unicode_ci',
`email` VARCHAR(50) NOT NULL COLLATE 'utf8_unicode_ci',
`password` VARCHAR(128) NOT NULL COLLATE 'utf8_unicode_ci',
`first_name` VARCHAR(50) NOT NULL COLLATE 'utf8_unicode_ci',
`last_name` VARCHAR(50) NOT NULL COLLATE 'utf8_unicode_ci',
`facebook_id` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
`user_type_id` INT(10) NULL DEFAULT NULL,
`postcode` INT(10) NULL DEFAULT NULL,
`status` INT(10) NULL DEFAULT NULL,
`date_created` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00',
`date_modified` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`user_id`),
UNIQUE INDEX `username` (`username`),
UNIQUE INDEX `email` (`email`),
UNIQUE INDEX `user_id` (`user_id`)
)
因此,我试图实现一个媒体表。
该表的一个示例如下:
CREATE TABLE `media` (
`media_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`album_id` INT(10) UNSIGNED NULL DEFAULT '0',
`alt_name` VARCHAR(50) NOT NULL DEFAULT '0' COLLATE 'utf8_unicode_ci',
`mine_type` VARCHAR(50) NOT NULL DEFAULT '0' COLLATE 'utf8_unicode_ci',
`url_link` VARCHAR(50) NOT NULL DEFAULT '0' COLLATE 'utf8_unicode_ci',
PRIMARY KEY (`media_id`),
INDEX `media-album_id_key` (`album_id`),
CONSTRAINT `media-album_id_key` FOREIGN KEY (`album_id`) REFERENCES `album` (`album_id`) ON UPDATE CASCADE ON DELETE CASCADE
)
我想要的是允许用户、设施有 1 张与之关联的图像和场地有与之关联的相册。
因此,我不确定如何在这方面实现外键,因为如果我将一列媒体放入用户表中,并在删除媒体时将外键设置为 Media_ID,它会删除用户,因为级联影响会这样做。
我想要的是,如果我删除用户/设施/场地,它将删除与之关联的所有图像。
任何援助将不胜感激。
问候,
罗伯特