电影数据库,每部电影的多个流派(不使用movieID)

时间:2015-07-29 16:22:26

标签: mysql database relational-database

我正在尝试改进我的旧数据库分配,我正在从提供的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 ...

0 个答案:

没有答案