Modèle d'un Zéro ou Un à Plusieurs " de la Relation
Comment modéliser un zéro ou un, à un de nombreuses relations dans la base de données? Par exemple, un enregistrement d'utilisateur peut ou ne peut pas demander à un parent. Donc, ma table utilisateur ont un t_user.parent_id ou devrais-je faire un tableau associatif appelé t_user_hierarchy avec les colonnes t_user_hierarchy.parent_id et t_user_hierarchy.user_id?
OriginalL'auteur John | 2010-03-27
Vous devez vous connecter pour publier un commentaire.
Regardez ce fil. Problème similaire : Un exemple d'un nécessaire à nullable clé étrangère?
Si une autre table d'association ou nullable clé étrangère dépend de votre cas d'utilisation. Ses subjective et dépend de votre conception.
OriginalL'auteur Venki
1FN prévoit pas de nullable colonnes. Donc à mettre en œuvre un zéro à une relation, à la place d'une clé étrangère de l'enfant (en supposant que c'est la table qui peut ou peut ne pas avoir une entrée liée à la société mère) qui pointe vers le parent. Ensuite, utilisez une jointure externe de la requête de la mère à l'enfant à récupérer des instances où il y a des parents avec et sans enfants.
Exemple:
Ce sera le retour de TOUS les enregistrements de Client et de les associer à une Ordonnance prise. Il serait également le retour des Clients qui n'avaient PAS de commandes.
OriginalL'auteur RDeckard
Juste faire de la Clé étrangère dans la table enfant (table utilisateur?) nullable
OriginalL'auteur Charles Bretana
Je voudrais aller avec un nullable id parent. Ensuite, vous pouvez simplement utiliser des jointures automatiques pour obtenir les parents ou les enfants de tout enregistrement particulier.
OriginalL'auteur tvanfosson
Un zéro ou un-à-plusieurs relations dans une base de données est généralement représenté en déclarant le terrain, dans votre exemple, le Parent_ID, puis en réservant une valeur pour la désigna points à rien.
Depuis les bases de données relationnelles (SGBDR) vous permet d'avoir des valeurs NULL, vous pouvez utiliser la valeur NULL pour marquer un dossier ayant aucun parent.
L'exemple ci-dessus est pour l'Oracle RDBMS, mais l'idée est similaire dans d'autres bases de données. Sinon, vous pouvez marquer spécifiquement la base de données avec un champ disant cela, mais généralement, c'est une surcharge, parce que la plupart des systèmes de base de données peut gérer le cas particulier de NULLE sans l'ajout d'un champ supplémentaire.
OriginalL'auteur Etamar Laron