Je n'ai pas ressenti cette règle auparavant, mais il semble qu'un arbre binaire ou un arbre (chaque noeud peut avoir beaucoup d'enfants mais les enfants ne peuvent pointer vers aucun parent), alors cette structure de données peut être représentée comme 1 table dans un base de données, avec chaque ligne ayant un ID pour lui-même et un parentID
qui pointe vers le nœud parent. C'est en fait le schéma classique Employee - Manager: un boss peut avoir beaucoup de gens sous lui ... et chaque personne peut avoir n
personnes sous lui, etc. Ceci est une structure arborescente et est représentée dans les livres de base de données comme un exemple commun sous la forme d'une seule table Employee
.Un arbre ou un arbre binaire peut-il toujours être représenté dans une base de données en tant que table et auto-référencé?
Répondre
La réponse à votre question est « oui ».
L'avertissement de Simon concernant la transformation de vos arbres en un graphique cyclique est également correct. Tout ce qui a été dit à propos de "Vous devez vous assurer que cela ne se produira pas, c'est-à-dire que le SGBD ne le fera pas automatiquement pour vous, car vous ne violerez aucune règle d'intégrité ou de référence." , est faux.
Cette remarque et les commentaires correspondants sont vrais, tant que vous ne tenez compte que des systèmes SQL.
Il existe des systèmes qui CAN faire pour vous dans une façon purement déclarative, qui est sans avoir à écrire * tout code * que ce soit. Ce système est SIRA_PRISE (http://shark.armchair.mb.ca/~erwin).
Oui, vous pouvez représenter des structures hiérarchiques en autoréférenciant la table. Juste être conscient de ces situations:
Employee Supervisor
1 2
2 1
Oui, c'est correct. Here's a good reference
Sachez simplement que vous avez besoin généralement une boucle pour dérouler l'arbre (par exemple trouver des relations transitif)
Quelle est votre question? – Artelius
Vous pouvez avoir une table Employee-to-Employee au lieu de la colonne parentID. Je ne sais pas lequel est le meilleur. – eugeneK