SQL-Design wegen fehlender datenbankübergreifender Fremdschlüsselreferenzen

ir haben eine Lösung, die sich auf mehrere Datenbanken stützt, die alle auf eine gemeinsame Verwaltungsdatenbank verweisen. Datenbanken werden als Teil von Modulen geliefert, und nicht alle Module sind für eine Installation erforderlich (wahrscheinlich, warum wir überhaupt mehrere Datenbanken haben). Die Admin-Datenbank ist jedoch erforderlich, damit sie immer verfügbar ist.

Ich möchte dem Chaos eine gewisse referenzielle Integrität und Ordnung verleihen, werde aber durch die Unfähigkeit von SQL Server, datenbankübergreifende Fremdschlüssel zu erstellen, gebremst. Die Datenbank enthält NICHT viele Abwanderungen, aber Informationen werden von (ähm) nicht-technischen Benutzern eingefügt / aktualisiert.

Meine Auswahlmöglichkeiten, wie ich sie sehe, sind:

a) Pseudo-Fremdschlüssel mit Triggern auferlegen (ok, aber ein bisschen Arbeit)

b) Verwenden Sie Trigger, um vom Administrator in andere Datenbanken zu replizieren (ein klares Rezept für eine Katastrophe)

c) Pseudo-Fremdschlüssel in Code / DAL einprägen (spielt nicht gut mit ORM)

d) Machen Sie sich auf DB-Ebene keine Sorgen, verwenden Sie ein gutes UI-Design, um sicherzustellen, dass niemand etwas Dummes tut, und schränken Sie den Zugriff ein / halten Sie den Atem beim direkten SQL-Zugriff an.

Frankly, ich bin geneigt, mit "D" zu gehen, aber ich dachte mir, ich würde schlauer sein als ich ...

Antworten auf die Frage(9)

Ihre Antwort auf die Frage