Vinnaren i pepparkakshustävlingen!
2015-07-29, 18:01
  #1
Medlem
p4nd0ras avatar
Håller på att fixa till min filmdatabas (gammal skoluppgift) utifrån olika textfiler (genres.txt, movies.txt, directors.txt, times.txt osv).
Mitt problem är att göra så att en film kan ha flera olika genrer. Genres.txt innehåller titlar som inte finns med i movies.txt och ska inte vara med i databasen. Istället för att använda ett movieID så ska jag enligt uppgiften använda en primary key av title, year som unikt identifierar varje film. Har provat på lite olika sätt men kan inte få så att en film har flera genres..

SQL-kod:
Kod:
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;
Citera
2015-07-29, 22:02
  #2
Medlem
John-Pauls avatar
Funkar utan problem dock en annan DMBS med lite annan syntax, orkar/kan inte lusläsa så om du posta felmeddelandet så underlättar kanske det.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback