2009-05-18 14 views
1

Oracle - NULL in Fremdschlüssel?

"Erläutern Sie die Probleme, die auftreten, wenn NULL in Spalten vorhanden sind, die Fremdschlüssel bilden. Besprechen Sie, wie ANSI versucht hat, dieses Problem mit den drei Übereinstimmungen zu beheben Regeln, die übernommen werden können, wenn verkettete Fremdschlüssel verwendet werden. "

Kann mir jemand in die richtige Richtung zeigen, was diese "übereinstimmenden Regeln" sind? Ich dachte zuerst, sie würden sich auf OUTER JOINS beziehen, aber ich bin mir nicht mehr sicher.

Jeder Rat würde geschätzt werden. Danke.

Antwort

3

Wenn ich mich recht erinnere, sind diese Regeln über zusammengesetzte Fremdschlüssel. Betrachten wir zum Beispiel eine Adresstabelle wie definiert:

deliveryaddressid - order - orderline - street - ... 

Wo (Bestellung, Bestellposten) ist ein Fremdschlüssel für die Tabelle Bestellposten. Die übereinstimmenden Regeln bestimmen, wie sich Joins verhalten, wenn ein Teil des Fremdschlüssels NULL ist. Zum Beispiel kann eine Zeile wie:

32 - null - 1123 - 'Main Street 1' - ... 

Hier ist ein article about partial foreign keys (PDF-Download, 6 Seiten) Der relevante Teil scheint zu sein:

ANSI SQL 92 Genehmigungen und Datenbanken wie wie Oracle unterstützen alternative Anpassungs Regeln für Verbundfremdschlüssel, einschließlich:

Spiel Volle -teilweise null Fremd Schlüssel nicht zulässig. Entweder alle Komponenten des Fremdschlüssels muss null sein, oder die Kombination von Werten im Fremdschlüssel enthalten müssen erscheinen als der primären oder eindeutigen Schlüssel Wert einer einzelnen Zeile der referenzierten Tabelle. [Default]
Übereinstimmung teilweise - Teilweise Nullkomposit Fremdschlüssel sind erlaubt. Entweder alle Komponenten des Fremdschlüssels muss null sein, oder die Kombination von nicht-null Werten im Fremdschlüssel enthielt in dem entsprechenden Teil des primären oder eindeutigen Schlüssel Wertes einer einzelnen Zeile in den erscheinen referenzierte Tabelle.
Übereinstimmung Keine - Partiell null Composite-Fremdschlüssel sind zulässig. Wenn eine Spalte eines zusammengesetzten Fremdschlüssels null ist, müssen die Nicht-Null-Teile des Schlüssels nicht mit einem entsprechenden Teil eines Elternschlüssels übereinstimmen.

Verwandte Themen