2010-04-05 8 views
3

J'écris une base de données de tous les DVD que j'ai à la maison. L'un des champs, actors, je voudrais qu'il soit un ensemble de valeurs d'une autre table, qui stocke les acteurs. Donc, pour chaque film, je veux stocker une liste d'acteurs, tous choisis parmi une liste d'acteurs, tirés d'une table différente.Utilisation de l'ensemble avec les valeurs d'une table

Est-ce possible? Comment puis-je faire cela? Ce serait un ensemble de clés étrangères essentiellement. J'utilise une base de données MySQL pour une application Django (python), donc tout indice en SQL ou en Python serait très apprécié. Je souhaite que la question soit claire, merci beaucoup.

Répondre

2

Faites vos tables comme ceci:

Movies 
MovieID int auto increment/identity PK 
MovieTitle 
MovieDescription 
etc... 

Actors 
ActorID int auto increment/identity PK 
ActorName 
DateOfBirth 
etc... 

MovieActors 
MovieID  PK and FK 
ActorID  PK and FK 
RoleName 
etc... 

Ne pas stocker plusieurs acteurs dans un seul champ dans la table de films, les libérer en lignes individuelles dans la table MovieActors.

Si vous combinez tous les acteurs dans un champ, cela rendra les requêtes d'écriture difficiles. Par exemple, vous devez effectuer une manipulation de chaîne pour interroger tous les films dans lesquels l'acteur X se trouvait.

1

La réponse est également claire. Vous n'aurez pas besoin d'un champ, mais d'une autre table films_actors. Cette table agirait comme votre champ, mais beaucoup plus fiable. C'est ce qu'on appelle la relation plusieurs-à-plusieurs.

Questions connexes