Ich habe 3 Tabellen (nennen wir sie Foo, Bar und Baz.
Tische:
Foo
- FooId
Bar
- BarId
- FooId
Baz
- BazId
- BarId
- Ein andererWert
Die Fremdschlüssel sorgen natürlich dafür, dass jede Baz mit einer Bar und damit mit einer Foo verbunden ist. Jetzt möchte ich sicherstellen, dass für jeden Satz von Baz mit demselben "AnotherValue" alle zugehörigen Foo's eindeutig sind
Zum Beispiel, wenn ich
Foos (1, 2, 3)
Bars ((10, 1), (11, 1), (12, 1), (13, 2))
Bazs ((100, 10, "a"), (101, 10, "b"), (102, 13, "a"), (104, 11, "b"))
Dies sollte blockiert werden, da Baz 104 und Baz 101 beide den AnotherValue "b" und Foo 1 haben.
Optionen, an die ich gedacht habe (in der Reihenfolge meiner derzeitigen Vorlieben)
Indizierte Ansicht
Ich könnte eine Ansicht über diese drei Tabellen erstellen und einen eindeutigen Index auf die beiden Spalten setzen
Berechnete Säule
FooId als berechnete Spalte zu Baz hinzufügen. Fügen Sie dann einen Index auf AnotherValue und FooId hinzu.
Beschränkungen prüfen
Ich bin mir ziemlich sicher, dass dies hinzugefügt werden kann und auch funktionieren wird. Ich habe nicht verwendet Check Einschränkungen viel, und ich bin nicht sicher, ob es der beste Weg, dies zu tun ist.
Auslöser
Ich finde das einfach hässlich.