2009-11-09 2 views
1

J'ai une table TreeStructures qui contient des structures d'arbres. Cette table a les colonnes 'id, name, left, right et une clé étrangère TreeId' à une table Arbres avec une colonne 'id' et quelques informations supplémentaires sur l'arbre.Rangées de groupes dans une table - conception

Maintenant, si « id » était la seule colonne dans les arbres de table, serait-il bon de retirer la table des arbres et de laisser la clé étrangère ArbreID être juste une colonne?

Faire un nouvel arbre signifierait que je devrais vérifier la valeur la plus élevée de ArbreID puis incrément par un pour obtenir une nouvelle valeur. Il y a un danger d'ici ... concurrency

Quoi qu'il en soit, ce qui est des meilleures pratiques dans cette situation?

Répondre

1

la table d'arbres est une entité distincte, et mérite sa propre table, même si la table est « tout clé". Si vous omettez cette table, votre base de données est dénormalisée, ce qui constitue toujours un danger potentiel pour l'intégrité des données.

Notez que le problème de simultanéité qui vous préoccupe est une évidence sur les plus modernes. bases de données (utiliser un type d'identité auto-incrémentée de la colonne ID), et serait en fait pire sans la table d'arbres, parce que vous auriez à faire un MAX (ID) scan sur l'ensemble feuille Table

1

Je pense que pour une utilisation future - quitter la table de l'arbre.

peut-être que vous aurez besoin dans le futur d'un nom d'arbre?

il peut fonctionner comme vous avez dit, mais il est pas recommandé.

aussi - si la table va être très très grand ... il sera très inefficace.

+0

Idd, nous avons même maintenant plus de colonnes dans le tableau de l'arbre, mais elles ne sont pas nécessaires. –

0

Difficile à dire sans exemple solide, mais il semble raisonnable. Je ne suis pas sûr de ce que le name dans le schéma actuel se réfère, et pourquoi il se rapporte à l'TreeStructure plutôt qu'à l'arbre.

(Personnellement, je suis très heureux en général mélanger des informations structurelles ensemble imbriqué dans une table de données de toute façon.)

Questions connexes