我正在尝试改进我的旧数据库分配,我正在从提供的txt文件构建电影数据库。我的问题是在电影和流派之间建立多对多的关系(一部电影应该能够有多种类型)。
TXT文件: movies.txt:标题,年份 genres.txt:title,genre,year
Genres.txt包含不在movies.txt中的电影,这些电影不应包含在数据库中。电影是由它的标题和年份唯一标识的(所以我猜没有movieID)。这就是我建立关系的方式:
CREATE TABLE `tempGenres` (
`title` varchar(100) NOT NULL,
`genre` varchar(20) NOT NULL,
`year` INT NOT NULL
) ENGINE=InnoDB;
CREATE TABLE `movies` (
`title` varchar(100) NOT NULL,
`length` int NULL,
`year` INT NOT NULL,
PRIMARY KEY (title,year)
) ENGINE=InnoDB;
CREATE TABLE `genres` (
`genre` varchar(20) NOT NULL,
PRIMARY KEY (genre)
) ENGINE=InnoDB;
CREATE TABLE movie_genre
(
`genre` VARCHAR(20) NOT NULL,
`title` VARCHAR(100) NOT NULL,
`year` INT NOT NULL,
PRIMARY KEY (`genre`, `title`, `year`),
INDEX `fk_genres_has_movies_movies1_idx` (`title` ASC, `year` ASC),
INDEX `fk_genres_has_movies_genres1_idx` (`genre` ASC),
CONSTRAINT `fk_genres_has_movies_genres1`
FOREIGN KEY (`genre`)
REFERENCES `mdb`.`genres` (`genre`)
ON DELETE cascade
ON UPDATE cascade,
CONSTRAINT `fk_genres_has_movies_movies1`
FOREIGN KEY (`title` , `year`)
REFERENCES `mdb`.`movies` (`title` , `year`)
ON DELETE cascade
ON UPDATE cascade
) ENGINE INNODB;
我已尝试以各种方式导入数据并改变我的关系,但我仍然从genres.txt中获取所有电影,流派和年份,这些都不在movies.txt中,我不会为这些电影获得多种类型这实际上是在movies.txt ...