Heim >Datenbank >MySQL-Tutorial >So stellen Sie Beziehungen zwischen Datenbanktabellen her
Datenbanktabellen sind über Primär- und Fremdschlüssel verbunden. Wenn für eine Tabelle eine Primärschlüsseleinschränkung angegeben ist, erzwingt das Datenbankmodul die Eindeutigkeit der Daten, indem es automatisch einen eindeutigen Index für die Primärschlüsselspalte erstellt. Ein Fremdschlüssel ist eine oder mehrere Spalten, die zum Herstellen und Stärken einer Verknüpfung zwischen Daten verwendet werden in zwei Tabellen Eine Kombination zur Steuerung der Daten, die in der Fremdschlüsseltabelle gespeichert werden können.
Die Betriebsumgebung dieses Tutorials: Windows 7-System, MySQL-Version 5.8, Dell G3-Computer.
Datenbanktabellen sind über Primär- und Fremdschlüssel verbunden.
(Empfohlenes Tutorial: MySQL-Video-Tutorial)
Primärschlüsseleinschränkungen
Tabellen haben normalerweise eine Spalte oder eine Reihe von Spalten, die einen Wert enthalten, der jede Zeile in der Tabelle eindeutig identifiziert. Eine solche Spalte oder Spalten werden als Primärschlüssel (PK) der Tabelle bezeichnet und zur Durchsetzung der Entitätsintegrität der Tabelle verwendet. Da Primärschlüsseleinschränkungen die Eindeutigkeit von Daten gewährleisten, werden sie häufig für Identitätsspalten definiert.
Wenn für eine Tabelle eine Primärschlüsseleinschränkung angegeben ist, erstellt die Datenbank-Engine automatisch einen eindeutigen Index für die Primärschlüsselspalte, um die Eindeutigkeit der Daten zu erzwingen. Dieser Index ermöglicht auch einen schnellen Zugriff auf Daten, wenn der Primärschlüssel in Abfragen verwendet wird. Wenn eine Primärschlüsseleinschränkung für mehrere Spalten definiert ist, können sich die Werte in einer Spalte wiederholen, aber jede Kombination von Werten aus allen Spalten in der Definition der Primärschlüsseleinschränkung muss eindeutig sein.
Wie in der folgenden Abbildung dargestellt, bilden die Spalten ProductID und VendorID in der Tabelle Purchasing.ProductVendor eine zusammengesetzte Primärschlüsseleinschränkung für diese Tabelle. Dadurch wird sichergestellt, dass jede Zeile in der ProductVendor-Tabelle eine eindeutige Kombination aus ProductID und VendorID aufweist. Dadurch wird verhindert, dass doppelte Zeilen eingefügt werden.
Eine Tabelle kann nur eine Primärschlüsseleinschränkung enthalten.
Der Primärschlüssel darf 16 Spalten nicht überschreiten und die Gesamtschlüssellänge darf 900 Byte nicht überschreiten.
Durch Primärschlüsseleinschränkungen generierte Indizes erhöhen die Anzahl der Indizes in der Tabelle nicht über 999 nicht gruppierte Indizes und 1 gruppierten Index hinaus.
Wenn für die Primärschlüsseleinschränkung kein Clustered- oder Nicht-Clustered-Index angegeben ist und in der Tabelle kein Clustered-Index vorhanden ist, wird ein Clustered-Index verwendet.
Alle in Primärschlüsseleinschränkungen definierten Spalten müssen so definiert sein, dass sie nicht Null sind. Wenn keine NULL-Zulässigkeit angegeben ist, wird die NULL-Zulässigkeit aller an der Primärschlüsseleinschränkung beteiligten Spalten auf nicht NULL gesetzt.
Wenn Sie einen Primärschlüssel in einer Spalte eines benutzerdefinierten CLR-Typs definieren, muss die Implementierung dieses Typs die binäre Sortierung unterstützen.
Fremdschlüsseleinschränkungen
Ein Fremdschlüssel (FK) ist eine Kombination aus einer oder mehreren Spalten, die zum Herstellen und Stärken einer Verknüpfung zwischen Daten in zwei Tabellen verwendet werden und die Daten steuern, die in der Fremdschlüsseltabelle gespeichert werden können . Bei einer Fremdschlüsselreferenz wird eine Verknüpfung zwischen zwei Tabellen erstellt, wenn eine oder mehrere Spalten, die Primärschlüsselwerte aus einer Tabelle enthalten, von einer oder mehreren Spalten in einer anderen Tabelle referenziert werden. Diese Spalte wird zum Fremdschlüssel der zweiten Tabelle.
Da beispielsweise eine logische Beziehung zwischen Kundenaufträgen und Verkäufern besteht, enthält die Tabelle „Sales.SalesOrderHeader“ einen Fremdschlüssellink zur Tabelle „Sales.SalesPerson“. Die SalesPersonID-Spalte in der SalesOrderHeader-Tabelle entspricht der Primärschlüsselspalte in der SalesPerson-Tabelle. Die SalesPersonID-Spalte in der SalesOrderHeader-Tabelle ist ein Fremdschlüssel für die SalesPerson-Tabelle. Durch das Erstellen einer Fremdschlüsselbeziehung kann der Wert für SalesPersonID nicht in die SalesOrderHeader-Tabelle eingefügt werden, wenn der Wert für SalesPersonID nicht im Primärschlüssel der SalesPerson-Tabelle vorhanden ist.
Eine Tabelle kann bis zu 253 andere Tabellen und Spalten als Fremdschlüssel (ausgehende Referenzen) referenzieren. SQL Server 2016 (13.x) erhöht den Grenzwert für die Anzahl anderer Tabellen und Spalten, auf die in einer separaten Tabelle verwiesen werden kann (eingehende Verweise), von 253 auf 10.000. (Der Kompatibilitätsgrad muss mindestens 130 betragen.) Durch die Erhöhung des Zahlenlimits ergeben sich folgende Einschränkungen:
Nur der DELETE-DML-Vorgang unterstützt mehr als 253 Fremdschlüsselverweise. UPDATE- und MERGE-Vorgänge werden nicht unterstützt.
Eine Tabelle, die Fremdschlüsselverweise auf sich selbst hat, kann immer noch nur 253 Fremdschlüsselverweise haben.
Spaltenspeicherindizes, speicheroptimierte Tabellen, Stretch Database oder partitionierte Fremdschlüsseltabellen unterstützen derzeit nicht mehr als 253 Fremdschlüsselverweise.
Index für Fremdschlüsseleinschränkungen
Im Gegensatz zu Primärschlüsseleinschränkungen wird beim Erstellen einer Fremdschlüsseleinschränkung nicht automatisch ein entsprechender Index erstellt. Aus folgenden Gründen ist es jedoch häufig sinnvoll, Indizes für Fremdschlüssel manuell zu erstellen:
Beim Kombinieren von Daten aus verwandten Tabellen in einer Abfrage werden Fremdschlüsselspalten häufig in Join-Bedingungen verwendet, indem die Fremdschlüssel einer Tabelle auf einen oder mehrere beschränkt werden Weitere Spalten in entsprechen einem Primärschlüssel oder einer eindeutigen Schlüsselspalte in einer anderen Tabelle. Indizes ermöglichen es der Datenbank-Engine, schnell zusammengehörige Daten in Fremdschlüsseltabellen zu finden. Die Erstellung dieses Index ist jedoch nicht erforderlich. Daten aus zwei verwandten Tabellen können auch dann kombiniert werden, wenn für die beiden Tabellen keine Primärschlüssel- oder Fremdschlüsseleinschränkungen definiert sind. Eine Fremdschlüsselbeziehung zwischen zwei Tabellen zeigt jedoch an, dass sie mithilfe ihrer Schlüssel als Bedingungen für die Kombination in Abfragen optimiert wurde.
Änderungen an Primärschlüsseleinschränkungen können durch Fremdschlüsseleinschränkungen in zugehörigen Tabellen überprüft werden.
Weitere Programmierkenntnisse finden Sie unter: Programmiervideo! !
Das obige ist der detaillierte Inhalt vonSo stellen Sie Beziehungen zwischen Datenbanktabellen her. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!