Je tiens à souligner que (fonctionnellement) il y a une GRANDE différence entre les cycles et/ou les chemins multiples dans le SCHEMA et les DONNÉES. Alors que les cycles et peut-être les chemins multiples dans les DONNÉES pourraient certainement compliquer le traitement et causer des problèmes de performance (coût du traitement "correct"), le coût de ces caractéristiques dans le schéma devrait être proche de zéro.
Étant donné que la plupart des cycles apparents dans les BDR se produisent dans les structures hiérarchiques (organigramme, partie, sous-partie, etc.), il est regrettable que SQL Server suppose le pire, c'est-à-dire que le cycle du schéma = = cycle des données. En fait, si vous utilisez des contraintes RI, vous ne pouvez pas réellement construire un cycle dans les données !
Je soupçonne que le problème des chemins multiples est similaire, c'est-à-dire que des chemins multiples dans le schéma n'impliquent pas nécessairement des chemins multiples dans les données, mais j'ai moins d'expérience avec le problème des chemins multiples.
Bien sûr, si le serveur SQL a fait permettre des cycles, il serait toujours soumis à une profondeur de 32, mais c'est probablement suffisant pour la plupart des cas. (Dommage que ce ne soit pas un paramètre de base de données cependant !)
Les déclencheurs "Instead of Delete" ne fonctionnent pas non plus. La deuxième fois qu'une table est visitée, le déclencheur est ignoré. Donc, si vous voulez vraiment simuler une cascade, vous devez utiliser des procédures stockées en présence de cycles. Le déclencheur "Instead-of-Delete" fonctionnerait cependant pour les cas de trajets multiples.
Celko propose une "meilleure" façon de représenter les hiérarchies qui n'introduit pas de cycles, mais il y a des compromis à faire.
0 votes
Une des solutions est aquí