2009-11-18 12 views
0

J'ai un modèle de données qui inclut les types d'éléments Stage, Actor et Form. Logiquement, des paires peuvent être attribuées aux étapes (formulaire < ---> acteur), qui peuvent être dupliquées plusieurs fois (c'est-à-dire la même personne et le même formulaire ajoutés à la même étape à une date/heure ultérieure).Comment modéliser une paire parent-enfant dans MySQL (SQL)

En ce moment je suis la modélisation de ce avec ces tableaux:

Stage 
Form 
Actor 

Form_Actor  
_______________ 
|Id   | 
|FormId  | --> Id in Form 
|ActorId  | --> Id in Actor 


Stage_FormActor 
__________________ 
|Id    | 
|StageId   | --> Id in Stage 
|FormActorId  | --> Id in Form_Actor 

J'utilise CodeSmith pour générer la couche de données pour cette configuration et aucun des modèles savent vraiment comment gérer correctement ce type de relation lors de la génération Des classes. Idéalement, l'ORM aurait Stage.FormActors où FormActor serait la paire Form, Actor.

Est-ce la bonne façon de modéliser ces relations. Je l'ai essayé d'utiliser les trois Ids dans une table et

Stage_Form_Actor 
______________ 
|Id   | 
|StageId  | --> Id in Stage 
|FormId  | --> Id in Form 
|ActorId  | --> Id in Actor 

Cela ne se produit pas vraiment très bien non plus. Des idées?

+0

Essayez de visualiser avec plan de travail de MySQL, il peut le rendre plus facile pour vous pour voir les relations. – Cryophallion

Répondre

0

Je ne connais rien à CodeSmith, mais votre schéma de base de données pour définir les relations plusieurs-à-plusieurs inhérentes entre ces trois entités est correct (StageFormActor est le meilleur).

Une chose à noter est que vous pouvez définir une clé primaire composé à cette table d'association (au lieu d'utiliser une clé primaire artificielle ID)

+0

J'ai utilisé la clé primaire comme les quatre colonnes jusqu'ici. J'étais surtout en train de m'assurer que je modélisais les choses du côté DB comme je devrais être. Les différences dans les clés sont ce que les modèles utilisent pour décider quels types de relations modéliser, donc je peux avoir à jouer avec ceux plus pour obtenir la bonne sortie de CodeSmith je pense. – mikeschuld

+0

Dois-je utiliser les quatre colonnes ou suggérerais-je autre chose (étant donné que les Form-Acteur sont traités comme une paire) – mikeschuld

+0

Chaque acteur n'effectue-t-il qu'un seul formulaire? Ou un acteur peut-il faire plus d'une forme? –