2013-05-04 3 views
0

J'ai une base de données FILMS et il a 2 tables. 1 est MOVIE et l'autre est GENRE. Je veux être en mesure d'avoir une entrée de ligne de MOVIE à associer à plusieurs lignes dans la table GENRE. Cela peut-il être fait avec seulement 1 colonne dans la table MOVIE?clé avec plusieurs clés étrangères

J'ai vu des exemples de bases de données de films, mais ils ne permettent qu'un seul genre d'être mappé à un seul film. Existe-t-il un moyen d'avoir plusieurs genres appartenant à un seul film d'entrée? J'utilise mySQL pour créer la base de données.

+0

De la réponse que j'ai eu il semble qu'une relation many-to-many est nécessaire. Si j'avais une troisième table pour suivre cette relation, cela devrait ressembler à ceci: [link] http://oi40.tinypic.com/343gs9i.jpg ou 1 ligne dans le troisième tableau pourrait représenter 1 entrée de MOVIE et plusieurs entrées de GENRE? –

Répondre

3

Vous devez avoir une troisième table, MOVIE_GENRE qui implémente cette relation many-to-many. Il a des clés étrangères dans les tables MOVIE et GENRE. Une requête pour trouver la liste de tous les films avec leurs genres ressemblerait à:

SELECT m.title, 
     IFNULL(GROUP_CONCAT(g.name), "") genres 
FROM Movie m 
LEFT JOIN Movie_Genre mg ON m.id = mg.movie_id 
JOIN Genre g ON g.id = mg.genre_id 
GROUP BY m.id 
+0

Si je crée une troisième table, cela signifie-t-il que les entrées pour MOVIE_GENRE ont 1 clé de la table de film et 1 clé de la table de genre? Si oui, dois-je créer une nouvelle entrée de ligne dans MOVIE_GENRE pour chaque genre auquel une vidéo est associée? –

+0

Oui, c'est exactement ce que cela signifie. C'est ainsi que vous représentez le fait qu'un film appartient à un genre, vous ajoutez une entrée à la table. – Barmar

2

Vous avez besoin d'un grand nombre à plusieurs ou se joindre à une table avec 2 colonnes,

MovieID et GenreId

Avoir cette structure vous permettra de relier un seul film à autant de genres que vous aimez

Questions connexes