Auslandsschlüssel

Im Zusammenhang von Verwandtschaftsdatenbanken ist ein Auslandsschlüssel eine Verweisungseinschränkung zwischen zwei Tischen.

Ein Auslandsschlüssel ist ein Feld in einem Verwandtschaftstisch, der einen Kandidat-Schlüssel eines anderen Tisches vergleicht. Der Auslandsschlüssel kann an Querverweis-Tische gewöhnt sein.

Sagen Sie zum Beispiel, dass wir zwei Tische, einen KUNDEN-Tisch haben, der alle Kundendaten und einen ORDNUNGS-Tisch einschließt, der alle Kundenordnungen einschließt. Die Absicht hier besteht darin, dass alle Ordnungen mit einem Kunden vereinigt werden müssen, der bereits im KUNDEN-Tisch ist. Um das zu tun, werden wir einen Auslandsschlüssel in den ORDNUNGS-Tisch legen und ihn haben beziehen sich auf den primären Schlüssel des KUNDEN-Tisches.

Der Auslandsschlüssel identifiziert eine Säule oder Satz von Säulen in einem (Verweise anbringendem) Tisch, der sich auf eine Säule oder Satz von Säulen in einem anderen (Verweise angebrachten) Tisch bezieht.

Die Säulen im Verweise anbringenden Tisch müssen in den Säulen des primären Schlüssels oder anderen Superschlüssels im Verweise angebrachten Tisch Verweise anbringen.

Die Werte in einer Reihe der Verweise anbringenden Säulen müssen in einer einzelnen Reihe im Verweise angebrachten Tisch vorkommen.

So kann eine Reihe im Verweise anbringenden Tisch nicht Werte enthalten, die im Verweise angebrachten Tisch (außer dem POTENZIELL UNGÜLTIGEN) nicht bestehen.

Auf diese Weise können Verweisungen gemacht werden, Information zusammen zu verbinden, und es ist ein wesentlicher Teil der Datenbanknormalisierung.

Vielfache Reihen im Verweise anbringenden Tisch können sich auf dieselbe Reihe im Verweise angebrachten Tisch beziehen.

Den größten Teil der Zeit widerspiegelt es den einen (Elternteiltisch oder Verweise angebrachter Tisch) zu vielen (Kindertisch oder Verweise anbringender Tisch) Beziehung.

Verweise anzubringen, und Verweise angebrachter Tisch können derselbe Tisch sein, d. h. der Auslandsschlüssel bezieht sich zurück auf denselben Tisch. Solch ein Auslandsschlüssel ist bekannt in als, Verweise selbstanzubringen, oder rekursiver Auslandsschlüssel.

Ein Tisch kann vielfache Auslandsschlüssel haben, und jeder Auslandsschlüssel kann einen verschiedenen Verweise angebrachten Tisch haben. Jeder Auslandsschlüssel wird unabhängig durch das Datenbanksystem beachtet. Deshalb können fallende Beziehungen zwischen Tischen mit Auslandsschlüsseln hergestellt werden.

Unpassender Auslandsschlüssel / primäre Schlüsselbeziehungen oder jene Beziehungen nicht geltend machend, sind häufig die Quelle von vielen Datenbank und Daten, Probleme modellierend.

Das Definieren von Auslandsschlüsseln

Auslandsschlüssel werden im ANSI SQL Standard durch eine AUSLANDSSCHLÜSSEL-Einschränkung definiert. Die Syntax, um solch eine Einschränkung zu einem vorhandenen Tisch hinzuzufügen, wird in, wie gezeigt, unten definiert. Das Auslassen der Säulenliste in der BEZUGS-Klausel deutet an, dass der Auslandsschlüssel im primären Schlüssel des Verweise angebrachten Tisches Verweise anbringen soll.

VERÄNDERN SIE TISCH

FÜGEN SIE [EINSCHRÄNKUNG HINZU

AUSLANDSSCHLÜSSEL (

VERWEISUNGEN

[AUF DER AKTUALISIERUNG).

Beispiel-Tische: Kunde (customer_id, cname, caddress) und Ordnung (customer_id, Produkte, Zahlung)

Kunde ist der Master-Tisch, und Ordnung ist die Kindertabelle, wo 'customer_id' der Auslandsschlüssel in der Ordnung ist und den Kunden vertritt, der den Auftrag erteilt hat. Wenn eine Reihe des Kunden gelöscht wird, wird jede Ordnungsreihe, die den customer_id des gelöschten Kunden vergleicht, auch gelöscht.

ZEICHEN: In Microsoft SQL löscht eine Kaskadierung zu einem Verweise selbstanbringenden Tisch wird nicht erlaubt. Sie müssen entweder einen Abzug verwenden, ein versorgtes Verfahren schaffen oder behandeln die Kaskadierung löschen von der Benennen-Anwendung. Ein Beispiel davon ist, wo ein einzelner Tisch einen Personalausweis als Identität und ParentID mit einer Beziehung zum Personalausweis in demselben Tisch hat.

EINSCHRÄNKEN

Ein Wert kann nicht aktualisiert oder gelöscht werden, wenn eine Reihe in einem Auslandsschlüsseltisch besteht, der im Wert im Verweise angebrachten Tisch Verweise anbringt.

Ähnlich kann eine Reihe nicht gelöscht werden, so lange es eine Verweisung darauf von einem Auslandsschlüsseltisch gibt.

KEINE HANDLUNG

KEINE HANDLUNG und schränkt EIN sind sehr viel ähnlich. Der Hauptunterschied zwischen KEINER HANDLUNG und schränkt EIN ist, dass ohne HANDLUNG die Verweisungsintegritätskontrolle nach dem Versuchen getan wird, den Tisch zu verändern. Schränken Sie EIN tut die Kontrolle vor dem Versuchen, die AKTUALISIERUNG durchzuführen oder Behauptung ZU LÖSCHEN. Beide Verweisungshandlungen handeln dasselbe, wenn die Verweisungsintegritätskontrolle scheitert: Die AKTUALISIERUNG oder LÖSCHT Behauptung wird auf einen Fehler hinauslaufen.

Mit anderen Worten, wenn eine AKTUALISIERUNG oder Behauptung LÖSCHT, wird auf dem Verweise angebrachten Tisch mit der Verweisungshandlung KEINE HANDLUNG durchgeführt, der DBMS prüft am Ende der Behauptungsausführung nach, dass keine der Verweisungsbeziehungen verletzt wird. Das ist davon verschieden schränken EIN, der am Anfang annimmt, dass die Operation die Einschränkung verletzen wird. KEINE HANDLUNG verwendend, können die Abzüge oder die Semantik der Behauptung selbst einen Endstaat nachgeben, in dem keine Auslandsschlüsselbeziehungen verletzt werden, als die Einschränkung schließlich überprüft wird, so der Behauptung erlaubend, erfolgreich zu vollenden.

UNGÜLTIGER SATZ

Die Auslandsschlüsselwerte in der Verweise anbringenden Reihe werden auf den UNGÜLTIGEN gesetzt, wenn die Verweise angebrachte Reihe aktualisiert oder gelöscht wird. Das ist nur möglich, wenn die jeweiligen Säulen im Verweise anbringenden Tisch nullable sind. Wegen der Semantik von UNGÜLTIGEN verlangt eine Verweise anbringende Reihe mit der NULL in den Auslandsschlüsselsäulen keine Verweise angebrachte Reihe.

SATZ-VERZUG

Ähnlich dem UNGÜLTIGEN SATZ werden die Auslandsschlüsselwerte in der Verweise anbringenden Reihe auf den Säulenverzug gesetzt, wenn die Verweise angebrachte Reihe aktualisiert oder gelöscht wird.

Abzüge

Verweisungsmaßnahmen werden allgemein als einbezogene Abzüge getroffen (d. h. Abzüge mit systemerzeugten Namen, häufig verborgen.) Als solcher sind sie denselben Beschränkungen wie benutzerbestimmte Abzüge unterworfen, und ihre Ordnung der Ausführung hinsichtlich anderer Abzüge muss eventuell betrachtet werden; in einigen Fällen kann es notwendig werden, die Verweisungshandlung durch seinen gleichwertigen benutzerbestimmten Abzug zu ersetzen, um richtige Ausführungsordnung zu sichern, oder um Beschränkungen des verändernden-Tisches zu arbeiten.

Eine andere wichtige Beschränkung erscheint mit der Transaktionsisolierung: Ihre Änderungen zu einer Reihe können nicht im Stande sein völlig wellig zu fallen, weil in der Reihe durch Daten Verweise angebracht wird, die Ihre Transaktion nicht "sehen" kann, und deshalb darauf nicht wellig fallen kann. Ein Beispiel: Während Ihre Transaktion versucht, eine Kundenrechnung umzunummerieren, versucht eine gleichzeitige Transaktion, eine neue Rechnung für diesen denselben Kunden zu schaffen; während eine KASKADE-Regel alle Rechnungsreihen befestigen kann, kann Ihre Transaktion sehen, um sie im Einklang stehend mit der umnummerierten Kundenreihe zu halten, es wird in eine andere Transaktion nicht reichen, um die Daten dort zu befestigen; weil die Datenbank konsequente Daten nicht versichern kann, wenn die zwei Transaktionen begehen, wird einer von ihnen gezwungen zu wiederholen (häufig auf einem ersten gekommen zuerst gediente Basis.)

Beispiel

Als ein erstes Beispiel, um Auslandsschlüssel zu illustrieren, nehmen Sie an, dass eine Kontodatenbank einen Tisch mit Rechnungen hat und jede Rechnung mit einem besonderen Lieferanten vereinigt wird. Lieferant-Details (wie Adresse oder Telefonnummer) werden in einem getrennten Tisch behalten; jedem Lieferanten wird eine 'Lieferant-Zahl' gegeben, um es zu identifizieren. Jede Rechnungsaufzeichnung hat ein Attribut, das die Lieferant-Zahl für diese Rechnung enthält. Dann ist die 'Lieferant-Zahl' der primäre Schlüssel im Lieferant-Tisch. Der Auslandsschlüssel im Rechnungstisch weist zu diesem primären Schlüssel hin. Das Verwandtschaftsdiagramm ist das folgende. Primäre Schlüssel werden in kühnen und ausländischen Schlüsseln gekennzeichnet werden in der Kursive gekennzeichnet.

Lieferant (SupplierNumber, Name, Adresse, Typ)

Rechnungen (InvoiceNumber, SupplierNumber, Text)

Die entsprechende Datendefinitionssprachbehauptung ist wie folgt.

SCHAFFEN SIE TABELLEN-Lieferanten (

GANZE ZAHL von SupplierNumber NICHT UNGÜLTIG,

Nennen Sie VARCHAR (20) NICHT UNGÜLTIG,

Richten Sie VARCHAR (50) NICHT UNGÜLTIG,

Typ VARCHAR (10),

EINSCHRÄNKUNG supplier_pk PRIMÄRER SCHLÜSSEL (SupplierNumber),

EINSCHRÄNKUNG number_value KONTROLLE (SupplierNumber> 0))

SCHAFFEN SIE TABELLEN-Rechnungen (

GANZE ZAHL von InvoiceNumber NICHT UNGÜLTIG,

GANZE ZAHL von SupplierNumber NICHT UNGÜLTIG,

Text VARCHAR (4096),

EINSCHRÄNKUNG invoice_pk PRIMÄRER SCHLÜSSEL (InvoiceNumber),

EINSCHRÄNKUNG inumber_value KONTROLLE (InvoiceNumber> 0),

EINSCHRÄNKUNG supplier_fk AUSLANDSSCHLÜSSEL (SupplierNumber)

BEZUGS-Lieferant (SupplierNumber)

AUF DER AKTUALISIERUNGSKASKADE DARAUF LÖSCHEN SCHRÄNKEN EIN)

</Quelle>

Siehe auch

  • Kandidat-Schlüssel
  • Zusammengesetzter Schlüssel
  • Superschlüssel
  • Verbindungspunkt-Tisch

Außenverbindungen


Jia Qinglin / Zeng Qinghong
Impressum & Datenschutz