2010-04-29 10 views
0

Je prévois actuellement un logiciel pour dogbreeders et je suis dans le doute au sujet de mon Datadesign ... si je fais quelque chose d'intelligent ou stupide :)parent-enfant table layout

Le plan au moment est une sorta holistique de la table « chien » comme ça ...

Id | Name | FatherId | MotherId 
------------------------------- 
1 | A | NULL  | NULL 
2 | B | 1  | NULL 
3 | C | NULL  | NULL 
4 | D | NULL  | 3 
5 | E | 1  | 3 
6 | F | 5  | 2 
7 | G | 4  | 3 

Ma question est, est-il commun de faire comme ça ou est-ce vraiment bâclée. Je peux voir une raison de recherche rapide pour l'avoir mais je suis vraiment dans le doute si c'est bon ou mauvais à la fin. Je pense qu'il serait mieux conçu si j'avais une rel-table sur le côté avec un couplage Id, mais je doute vraiment de la qualité des cas.

Une note de côté est que cela ne fera que me cherchera personnellement les données de cette façon (ou quelqu'un d'adopter le projet de moi)

Répondre

1

Votre conception est bonne. Parent to child n'est pas une relation many-to-many, il n'y a donc pas besoin d'une table de liens séparée.

3

Ceci est une conception de base de données relationnelle parfaitement valide, vous seriez probablement en train de regarder faire des auto-jointures pour interroger les données.

+0

J'ai eu le concept de comment l'utiliser, était plus curieux si c'était une bonne idée, quelle est la chute des différentes méthodes de le faire. – cyberzed

+0

Ah je vois. J'ai eu un peu de recherche sur les inconvénients de l'utilisation de cette conception, mais je ne peux pas en trouver. Je l'ai utilisé plusieurs fois dans mes propres créations. –

+1

Si les zéros de FatherId et MotherId signifient "unknown", vous pouvez les rendre NULL à la place. Sinon, vous devez entrer une entrée pour le chien 0, le parent inconnu, qui serait alors à la fois le père et la mère. –