2010-02-09 4 views
0

Quelques détails sur le scénario: 1. Nous avons une base de données MS SQL Server 2008 qui stocke les enregistrements 'Resource' dans une table. 2. Les ressources peuvent avoir plusieurs ressources enfants. 3. Une ressource enfant peut appartenir à plusieurs ressources parent. 4. Les ressources sont liées les unes aux autres via une table intermédiaire, c'est-à-dire Resource -> Link -> Resource. 5. Il peut y avoir «n» niveaux de relations parent-enfant, mais de manière réaliste, il est probable qu'il ne soit que de 3 ou 4 au maximum. 6. Les applications doivent présenter une vue des données qui montrent l'arbre entier pour un parent donné et tous ses enfants où les enfants peuvent être plus le 1 descendant du parent, à savoir Ressource (Parent) -> Lien -> Ressource -> Lien -> Ressource (enfant) 7. Les utilisateurs finaux doivent idéalement voir un changement en temps réel dans l'arbre en fonction des actions qu'ils effectuent sur les relations de ressources. Par temps réel, je veux dire dans l'ordre de quelques secondes que le changement doit refléter dans l'interface utilisateur. J'ai effectué quelques travaux d'exploration en utilisant une série de vues, mais l'utilisation de jointures externes signifie que les vues ne peuvent pas être indexées et ne peuvent donc pas bien évoluer.RDMBS: Approche pour accéder efficacement aux données de structure arborescente contenues dans une base de données

La solution suivante que je regarde est de créer une ou plusieurs tables spéciales qui contiennent une vue aplatie des arbres de ressources. Cependant, il est peu probable que cela prenne en charge le type de mises à jour en temps réel dont nous avons besoin.

Est-ce que quelqu'un a traité un scénario similaire?

Répondre

1

Cela dépend de la façon dont vous devez accéder à vos arbres. Si vous avez besoin, par exemple, de transmettre un ID et d'obtenir cette ressource et tous ses enfants imbriqués, vous pouvez envisager d'utiliser des fonctions de table, en utilisant des expressions de table communes récursives.

Recusive CTE example

Questions connexes