2010-07-07 23 views
0

Je développe un modèle d'objet hiérarchique auto-référencé en tant que relation 0/1 -> *. Un objet sans parentID est un élément racine. Le parentID est également la clé étrangère de la jointure automatique. D'après ce que je comprends, l'utilisation du parentID comme une clé étrangère pointera uniquement vers une colonne où les éléments enfants peuvent être trouvés -> cela force-t-il une itération à travers l'ensemble des données pour cette colonne? Est-ce un scénario où un index cluster devrait être formé? .... Serait-il approprié d'utiliser le type de données XML pour stocker tous les childIDs dans un seul champ puis charger et référencer ce document pour chaque objet? Il semble que cela permettrait au moins de simplifier la couche de persistance de mon objet et de me donner plus de contrôle sur les transactions d'enregistrement.Conseil sur l'utilisation (ou non) de XML dans un modèle d'objet hiérarchique

Un conseil?

Répondre

1

Je vous déconseille vivement d'utiliser XML pour stocker les ID enfants. Cela causera d'innombrables maux de tête en essayant de le maintenir sur la route, sans parler de tenter de l'utiliser en dehors de votre application (par exemple, à partir d'une solution de reporting ou pour ETL).

Avez-vous examiné le type de données HIERARCHYID? C'est en SQL 2008 et peut être utile pour vous ici. Je ne sais pas quel type de support les différents langages de programmation/ODBC/OLE DB ont pour cela, mais vous pouvez le convertir en une chaîne avec .ToString() et qui peut être manipulé assez facilement. Il vous permet également d'utiliser les autres méthodes de HIERARCHYID dans T-SQL, comme .GetAncestor(), etc.