Bestimmung der Integritätsbeschränkungen. Externe Schlüssel Fremdschlüssel Erstellen eines Primärschlüssels in MySQL

) Wir haben denontiert, wie die relationale (tabellarische) Datenbank arrangiert ist, und stellt fest, dass die Hauptelemente der relationalen Datenbank: Tabellen, Säulen und Saiten und in mathematischen Konzepten sind: Beziehungen, Attribute und Bänder. Häufig werden die Zeilen auch als Aufzeichnungen bezeichnet, die Spalten werden als Lautsprecher bezeichnet, und die Kreuzung des Datensatzes und der Spalten werden als Zelle bezeichnet.

Es ist wichtig, sich daran zu erinnern, dass der Inhalt der Zeichenfolge und der Namen der Spalten innerhalb einer Datenbank eindeutig sein müssen.

Datentypen in Bashes

Es ist wichtig zu verstehen, dass Sie Datenbanken für alle Datentypen erstellen können: Texte, Termine, Zeit, Ereignisse, Zahlen. Abhängig von der Art der Informationen werden relationale Datenbanken in Typen unterteilt. Jede Art von Daten (Attribut) hat eine eigene Bezeichnung:

  • Ganzzahlige Daten von Ganzzahlen;
  • Float - Daten aus fraktionalen Zahlen, sogenannten Fließkomma-Daten;
  • Char, varchar - Text Datentypen (symbolisch);
  • Logischer - logischer Datentyp (Ja / Nein);
  • Datum / Uhrzeit - temporäre Daten.

Dies sind die Haupttypen von Daten, die tatsächlich viel mehr sind. Darüber hinaus verfügt jede Programmiersprache über einen eigenen Satz von Systemattributen (Datentypen).

Was ist der Primärschlüssel und der externe Schlüssel der relationalen Datenbanktabellen

Primärschlüssel

Oben erinnern wir uns an: Jede Zeile (Aufnahme) der Datenbank sollte eindeutig sein. Es ist der primäre Taste in Form von Sätzen bestimmter Werte, wobei das Maximum jeden Datensatz identifiziert. Sie können anders ermitteln. Primärschlüssel: Eine Reihe von spezifischen Funktionen, die für jeden Datensatz eindeutig sind. Der Primärschlüssel wird als Primärschlüssel bezeichnet.

Primärschlüssel (PK) Sehr wichtig für jeden Tisch. Ich werde erklären, warum.

  • Der Primärschlüssel ermöglicht es Ihnen nicht, identische Datensätze (Zeilen) in der Tabelle erstellen.
  • Pk liefert eine logische Verbindung zwischen den Tabellen einer Datenbank (für relationale Datenbank).

Auf der logischen Verbindung zwischen den Tabellen ist es mehr detaillierter einzuhalten.

Schlüssel external.

Fremdschlüssel, kurz fk. Bietet eine eindeutige logische Verbindung zwischen den Tabellen einer Datenbank.

Beispielsweise gibt es zwei Tabellen A und V. In Tabelle A (Schuhe) gibt es einen Primärschlüssel: Größe, Größe in der Tabelle in (Farbe) muss eine Spalte mit der Namensgröße sein. Diese Tabelle "Größe" ist der externe Schlüssel für die logische Verbindung von Tabellen in und A.

Ein komplexeres Beispiel.

Zwei Datentabellen: Personen und Telefonnummern.

Tabelle: Menschen

Tabelle: Telefonnummern

Die Tabellenwahlnummern PK ist einzigartig. FK Diese Tabelle ist PK-Tischleute. Die Beziehung zwischen Telefonnummern und Personen bietet FK-Telefontabellen. Also:

  • Hytsev hat zwei Telefone;
  • Volkova hat zwei Telefone;
  • Belkin hat ein Telefon.
Primärschlüssel und externe Schlüssel

Am Ende werde ich das hinzufügen das Datenbankmanagement verfügt über die technischen Funktionen, um einen Primärschlüssel zu erstellen.

So unmerklich näherten wir uns einem sehr wichtigen Thema - primäre und externe Schlüssel. Wenn der erste fast alles verwendet wird, wird der zweite aus irgendeinem Grund ignoriert. Und vergeblich. Externe Schlüssel sind kein Problem, es ist echte Hilfe bei der Datenintegrität.

1.2.5. Primärschlüssel

Wir haben bereits viel über wichtige Felder gesprochen, aber nie benutzt. Das interessanteste, was alles funktionierte. Dies ist ein Vorteil und vielleicht das Fehlen einer Microsoft SQL Server- und MS-Zugriffsdatenbank. In Paradox-Tabellen wird dieser Trick nicht passieren, und ohne das Anwesenheit eines Schlüsselfelds wird der Tisch nur gelesen.

Bis zu einem gewissen Grad sind die Tasten Einschränkungen, und sie könnten mit dem Prüfbediener angesehen werden, da die Ankündigung in ähnlicher Weise auftritt, und verwendet sogar die Anweisung CONSTRAINT. Schauen wir uns diesen Prozess am Beispiel an. Erstellen Sie dazu eine Tabelle mit zwei "GUID" und "VCNAME". In diesem Fall wird das Feld "GUID" als Primärschlüssel installiert:

TABELLING GLOBALY_UNIQUE_DATA (GUID-SIDEYDIDIERIERER Standard NEWEID (), VCNAME VARCHAR (50), CONSTRAINT PK_GUID Primärschlüssel (GUID))

Das leckerste hier ist eine Einschränkungszeichenfolge. Wie wir wissen, ist, nachdem dieses Schlüsselwort der Name der Einschränkung ist, und die Schlüsselanzeigen sind keine Ausnahme. Für die Benennung des Primärschlüssels empfiehlt ich die Verwendung des Typs von PK_IN-Namen, in dem der Name der Name des Felds ist, das der Hauptschlüssel sein sollte. Reduktion PK stammt vom Primärschlüssel (Primärschlüssel).

Anstelle des Keyword-Checks, den wir in den Einschränkungen verwendet haben, ist es die primäre Schlüsselanweisung wert, dies zeigt an, dass wir nicht überprüfen müssen, sondern der primäre Schlüssel. In Klammern zeigen eine oder mehrere Felder an, die der Schlüssel sein werden.

Denken Sie daran, dass in dem Schlüsselfeld in zwei Zeilen kein gleichwertiger Wert sein kann, in dieser Begrenzung des Primärschlüssels die Einzigartigkeit identisch einschränken. Das bedeutet, dass, wenn Sie ein Feld zum Speichern des Namens im Primärschlüssel erstellen, in einer solchen Tabelle nicht zwei Ivanov mit unterschiedlichen Namen geschrieben. Dies unterbricht die Grenze des Primärschlüssels. Deshalb sind die Tasten Einschränkungen und werden als auch der Beschränkung des Schecks deklariert. Dies gilt jedoch nicht für Primärschlüssel und sekundär mit Einzigartigkeit.

In diesem Beispiel erscheint das Feld "DirigiallIdentifier (GUID) als Primärschlüssel. Der Standardwert dieses Feldes ist das Ergebnis des neuiden Serververfahrens.

Beachtung

Für einen Tisch kann nur ein Primärschlüssel erstellt werden.

Zur Vereinfachung der Beispiele ist es wünschenswert, einen numerischen Typ als Schlüssel zu verwenden, und wenn die Datenbank erlaubt, ist es besser, wenn es ein Typ "Autoincrement" ist (automatisch steigern / abnehmende Zahl). In MS SQL Server ist dieses Feld Identität, und in MS-Zugriff ist dies ein Feld des Typs "Counter".

Das folgende Beispiel zeigt, wie Sie eine Produkttabelle erstellen, in der ein ganzzahliges Feld mit automatischem Zoom als primärer Schlüssel erscheint:

Erstellen von Tabellenerzeugnissen (ID Int Int Intentity (1, 1), Produkt Varchar (50), Preisgeld, Numerische Nummer (10, 2), Einschränkung PK_ID Primärschlüssel (ID))

Es ist eine solche Art von Schlüssel, die wir am häufigsten verwenden werden, da das Schlüsselfeld für die Wahrnehmung der Anzahl und leichter gespeichert wird und mit ihnen zusammenarbeiten wird.

Der Primärschlüssel kann aus mehr als einer Spalte bestehen. Das folgende Beispiel erstellt eine Tabelle, in der Felder "ID" und "Waren" den Primärschlüssel bilden, dh der Einzigartigkeitsindex wird auf beiden Feldern erstellt:

Erstellen von Tabellenprodukten1 (ID Int Int Intentity (1, 1), Produkt Varchar (50), Preisgeld, Numerische Nummer (10, 2), Einschränkung PK_ID-Primärschlüssel (ID, [Produktname]))

Sehr oft erstellen die Programmierer eine Datenbank mit einem Schlüsselfeld in Form einer Ganzzahl, es ist jedoch klar, dass bestimmte Felder eindeutig sein sollten. Erstellen Sie nicht einen primären Schlüssel aus den Feldern, die eindeutig sein sollten, und müssen keine separaten Lösungen für dieses Problem erstellen.

Das einzige Fehlen eines Primärschlüssels mehrerer Spalten ist die Probleme der Erstellung von Verbindungen. Hier müssen Sie verschiedene Methoden verlassen, aber das Problem ist immer noch gelöst. Geben Sie einfach das Feld einig einigdentifier ein und kommunizieren Sie darüber. Ja, in diesem Fall haben wir einen einzigartigen Primärschlüssel und ein Feld des Typ-Einzigungsmittel, aber diese Redundanz ist jedoch nicht mehr als derselbe Tisch, in dem der primäre Key-Einzigartige und auf den Feldern, die die einzigartige Einschränkung einzigartig sein muss. Was auszusuchen? Es hängt von der spezifischen Aufgabe ab und von dem, was es bequemer ist, mit der Arbeit mehr zu arbeiten.

1.2.6. Externe Key

Der externe Schlüssel ist auch eine Einschränkung einschränkend und zeigt die Verbindung zwischen den beiden Tischen an. Angenommen, Sie haben zwei Tische:

  • Namen - Enthält Leutenamen und besteht aus Kennungfeldern (Schlüsselfeld), Name.
  • Telefone - Telefontisch, das aus einem Identifizierer (Schlüsselfeld), einem externen Schlüssel besteht, um mit der Namenstabelle und einem String-Feld zum Speichern der Telefonnummer zu kommunizieren.

Eine Person kann mehrere Telefone haben, sodass wir den Datenspeicher in verschiedene Tabellen unterteilt haben. Abbildung 1.4 zeigt visuell die Verbindung zwischen den beiden Tischen an. Wenn Sie bereits mit verbundenen Tischen gearbeitet haben, reicht dies aus. Wenn Sie zum ersten Mal von Verbindungen erfahren, schauen wir uns das Problem näher an.

Nehmen Sie zum Beispiel einen drei TABELLE. Tabelle 1.3 zeigt den Inhalt der Tabelle "Namen". Hier sind nur drei Zeilen und jeder verfügt über einen eigenen einzigartigen Hauptschlüssel. Für die Einzigartigkeit, wenn wir eine Tabelle erstellen, machen Sie den Schlüssel automatisch durch Feld inkrementiert.

Tabelle 1.3 Inhaltsnamen Tabelle

Tabelle 1.4. Der Inhalt der Telefone Tabelle

Tabelle 1.4 enthält fünf Telefonnummern. Im Master-Schlüsselfeld ist auch ein einzigartiger Hauptschlüssel, der auch automatisch erhöht werden kann. Der sekundäre Taste ist eine Verbindung mit der Haupttaste der Namenstabelle. Wie funktioniert diese Verbindung? Petrova in der Namenstabelle, da der Hauptschlüssel eine Zahl wert ist. In der Tabelle der Telefone im sekundären Schlüssel suchen wir nach einer Nummer 1 und erhalten die Anzahl der Petrov-Telefonnummern. Das gleiche mit den restlichen Datensätzen. Die visuell kommunikation ist in Abbildung 1.5 zu sehen.

Eine solche Datenspeicherung ist sehr praktisch. Wenn es keine Möglichkeit gab, verwandte Tabellen zu erstellen, müsste die Namenstabelle alle Telefonnummern in einem Feld erzielen. Es ist aus der Sicht der Verwendung, Unterstützung und Suche nach Daten unpraktisch.

Sie können mehrere Namenfelder in der Tabelle erstellen, aber die Frage stellt sich - wie viel. Eine Person kann nur 1 Telefon haben, und ich zählte zum Beispiel 3, zählt nicht die Arbeiter. Eine große Anzahl von Feldern führt zu Datenredundanz.

Es ist möglich, dass jedes Telefon in der Namenstabelle eine separate Zeile mit dem Nachnamen starten kann, es ist jedoch nur für ein solches einfaches Beispiel einfach, wenn Sie nur den Namen eingeben müssen und einfach mehrere Datensätze für PetroV mit mehreren Telefonen erstellen können Zahlen. Und wenn die Felder 10 oder 20 sind? Die Erstellung von zwei durch den externen Schlüssel verbundenen Tabellen ist also in der Auflistung 1.6 zu sehen.

Listing 1.6. Erstellen von Tabellen mit dem externen Schlüssel

Tabellennamen erstellen (IDName Int Identity (1,1), VCNAME VARCHAR (50), CONSTRAINT PK_GUID Primärschlüssel (IDNAME),) Erstellen Sie Tabellenelefone (IDPhone Int Identity (1,1), IDNAME INT, VCPhone VARCHAR (10), CONSTRAINT PK_IDPLONE Primärschlüssel (IDPhone), CONSTRAINT FK_IDNAME Fremdschlüssel (IDName) Referenzen Namen (IDName))

Prüfen Sie sorgfältig den Inhalt der Auflistung. Es ist interessant genug, da es einige Bediener verwendet, die wir bereits in Betracht gezogen haben, und ein zusätzliches Beispiel nicht verhindert. Für beide Tabellen wird ein Schlüsselfeld erstellt, das zuerst den Typ int hat und automatisch zunimmt, beginnend mit 1 mit Inkrement zu einem. Das Schlüsselfeld erfolgt mit der Hauptschlüssel mit der Begrenzungsgrenze.

In der Beschreibung der Telefone Tabelle enthält die letzte Zeile eine neue Ankündigung für uns, nämlich eine externe Schlüsselerklärung mit dem Fremdschlüsselbetreiber. Wie Sie sehen, ist dies auch eine Begrenzung und ein wenig später werden Sie sehen, warum. In Klammern ist das Tabellenfeld angegeben, das mit einer anderen Tabelle zugeordnet sein muss. Danach gibt es ein Keyword-Referenzen (Link), den Namen der Tabelle, mit der der Name (Namen) und in Klammern des Namensfelds ("IDName") sein muss. Somit haben wir eine Bindung, die in Abbildung 1.4 angezeigt wird.

Beachtung!

Der externe Schlüssel kann sich nur auf den Primärschlüssel einer anderen Tabelle beziehen oder die Einzigartigkeit einschränken. Dies bedeutet, dass nach den Keyword-Referenzen der Name der Tabelle und in Klammern sein sollte, können Sie nur den Primärschlüssel oder ein Feld mit eindeutiger Grenze angeben. Andere Felder können nicht angegeben werden.

Wenn Sie nun die Datentabellen ausfüllen können. Die folgenden drei Befehle fügen drei Nachnamen hinzu, die wir in Tabelle 1.3 gesehen haben:

Geben Sie in Namens-Werte ("Petrov") in den Namen ("Petrov") in die Namens-Werte ("Ivanov") ein ("Ivanov") in den Namen (VCNAME) -Werte ("Sidorov") ein ("Sidorov").

Wenn Sie bereits mit SQL zusammengearbeitet haben, können Sie Datensätze und telefonisch hinzufügen. Ich werde diese Befehle abgeben, und Sie können sie in der Datei ausländisch_keys.sql des chapter1-Verzeichnisses auf einer Compact-Disc sehen.

Unsere Aufgabe ist nun zu sehen, was die restriktiven Handlungen des Fremdschlüssels sind, lass es uns herausfinden. Wir haben eine explizite Verbindung zwischen zwei Feldern in verschiedenen Tabellen angegeben. Wenn Sie versuchen, einen Eintrag mit einem Kennung an das Telefon an die Telephonentabelle hinzuzufügen, die nicht im Feld desselben Namen (der Name nicht vorhanden ist (der Name könnte an eine andere vorhanden) Tabelle mit dem Nachnamen, dann erfolgt ein Fehler. Dies verstößt gegen die Verbindung zwischen den beiden Tabellen, und die Einschränkung des externen Schlüssels erlaubt es nicht, mit den Datensätzen ohne Kommunikation zu bestehen.

Die Einschränkung ist gültig und beim Ändern oder Löschen von Datensätzen. Wenn Sie beispielsweise versuchen, die Zeichenfolge mit dem Nachnamen von Petrov zu entfernen, gibt es einen Fehler des externen Schlüssels. Sie können keine Datensätze löschen, für die extern verwandte Linien sind. Um damit zu beginnen, müssen Sie alle Telefone für diesen Eintrag löschen, und nur danach können Sie die Zeichenfolge selbst mit dem Namen Petrov entfernt werden.

Beim Erstellen eines externen Schlüssels können Sie auf dem Löschen von Kaskaden oder auf der Update-Kaskade angeben. Wenn Sie in diesem Fall den Petrisik-Datensatz von der Namenstabelle löschen oder den Kennung ändern, werden alle Einträge in der mit der PetroV-Zeichenfolge verbundenen Telefone automatisch aktualisiert. Noch nie. Nein, Sie müssen in großen Buchstaben schreiben: Machen Sie es nie. Alles sollte manuell gelöscht oder ändert. Wenn der Benutzer den Eintrag versehentlich von der Namenstabelle löscht, werden die entsprechenden Telefone gelöscht. Der Punkt, um einen externen Schlüssel zu erstellen, wenn die Hälfte seiner restriktiven Funktionen verschwindet! Alles muss nur manuell erfolgen, und Identifizierer können überhaupt nicht geändert werden.

Das Löschen der Tabellen selbst sollte auch mit einem untergeordneten Tisch beginnen, dh mit Telefonen, und nur dann können Sie die Hauptnamen-Tabelle löschen.

Schließlich werde ich zeigen, wie schön die Korrespondenz von Namen und Telefonen von zwei Tischen erhält:

Wählen Sie VCNAME, VCPhone aus Namen, Telefone, an denen Namen.idname \u003d phones.idname ist

Wir werden in Kapitel 2 ausführlicher sprechen. Jetzt habe ich nur ein Beispiel gegeben, um die Leistung der zugehörigen Tabellen zu sehen.

Die Tabelle kann bis zu 253 externe Schlüssel enthalten, was durchaus ausreicht, um auch die komplexesten Datenbanken aufzubauen. Ich persönlich musste mit Datenbanken arbeiten, wo die Anzahl der externen Tasten 7 auf einem Tisch nicht überschritten hat. Wenn mehr, dann ist die wahrscheinlichste, dass die Datenbank falsch ausgelegt ist, obwohl es Ausnahmen gibt.

Die Tabelle selbst kann auch maximal 253 externe Schlüssel haben. Externe Schlüssel in der Tabelle sind weniger häufig, meistens nicht mehr als 3. Am häufigsten in der Tabelle können in der Tabelle viele Verweise auf andere Tabellen geben.

Der externe Schlüssel kann sich auf dieselbe Tabelle beziehen, in der er erstellt wird. Beispielsweise haben Sie eine Tabelle von Beiträgen in der Organisation, wie in Tabelle 1.5 gezeigt. Die Tabelle besteht aus drei Feldern: den Primärschlüssel, den externen Schlüssel und den Namen des Beitrags. In jeder Organisation kann es viele Beiträge geben, aber in einem Tisch ist es ziemlich logisch, um ihre Namen und die Struktur der Einreichung anzuzeigen. Dazu muss der externe Taste dem Primärschlüssel der Positionstabelle zugeordnet sein.

Tabelle 1.5. Tabelle mit interner Verbindung

Infolgedessen erhalten wir, dass der Generaldirektor eine externe Key Null hat, d. H. Dieser Beitrag ist an der Spitze aller anderen. Der kommerzielle Direktor und Direktor von allgemeinen Problemen, der externe Schlüssel zeigt die Linie des Generaldirektors an. Dies bedeutet, dass diese beiden Beiträge dem Generaldirektor direkt untergeordnet sind. Usw.

Mal sehen, wie Sie all dies in Form von SQL-Abfrage erstellen können:

Erstellen von Tabellenpositionen (IDPosition Int Identity (1,1), IDParentPosition Int, VCNAME VARCHAR (30), CONSTRAINT PK_IDPOSITION PRIMARY KEY (IDPosition), CONSTRAINT FK_IDPARENTPOSITION Fremdschlüssel (IDARENPOSINITION) Referenzen Positionen

Wie Sie sehen, bezieht sich der externe Schlüssel einfach auf dieselbe Tabelle, die wir erstellen. Auf der CD, im Verzeichnis chapter1, sehen Sie in der Datei ausländisch_keys_to_self.sql, ein Beispiel zum Erstellen dieser Tabelle, und füllt es mit Daten- und Anzeigepfosten, unter Berücksichtigung ihrer Einreichung. Im nächsten Kapitel werden wir in Betracht ziehen, mit solchen Tischen detaillierter zu arbeiten.

Beziehung zu einem

Bisher haben wir uns eine klassische Verbindung angesehen, wenn eine Zeile der Hauptdatentabelle einer Zeile von der zugehörigen Tabelle entspricht. Diese Verbindung wird ein bis zu vieler genannt. Es gibt jedoch andere Verbindungen, und jetzt werden wir uns eins anschauen - eins zu eins, wenn ein Entry-Haupttisch mit einem Eintrag eines anderen verbunden ist. Um es zu implementieren, reicht es aus, die Primärschlüssel der beiden Tabellen anzuschließen. Da die Haupttasten nicht wiederholt werden können, kann nur eine Zeile in beiden Tabellen angeschlossen werden.

Das folgende Beispiel erstellt zwei Tabellen, die einen Link zwischen Primärschlüsseln aufweisen:

Erstellen von Tabellennamen (IDName-Einzigungsmittel Standard NEUEID (), VCNAME VARCHAR (50), CONSTRAINT PK_GUID Primärschlüssel (IDNAME)) Tabellentelefone erstellen (IDPhone-Einzigungsmittel Standard NEUEID (), VCPhone VARCHAR (10), CONSTRAINT PK_IDPHONE PRIMARY KEY (IDPhone), CONSTRAINT FK_IDPHONE Fremdschlüssel (IDPhone) Referenzen Namen (IDName))

Der externe Schlüssel wird nur an einem der Tabellen benötigt. Da die Verbindung eins zu eins geht, spielt es keine Rolle, welche Tabelle es erstellen kann.

Viel zu viel

Die schwierigste Verbindung ist viele für viele, wenn viele Datensätze von einer Tabelle vielen Einträgen von einer anderen Tabelle entsprechen. Um dies zu implementieren, sind zwei Tabellen klein, drei Tabellen sind erforderlich.

Zuerst müssen Sie verstehen, wann eine Verbindung zu vielen verwendet werden kann? Angenommen, Sie haben zwei Tische: Die Liste der Einwohner des Hauses und der Liste der Telefonnummern. In einer Wohnung kann es mehr als eine Zahl geben, was bedeutet, dass ein Name zwei Telefone gehören kann. Es erscheint eine Verbindung zu vieler. Auf der anderen Seite können in derselben Wohnung zwei Familien (Gemeinschaftswohnung oder nur eine Wohnung, die das Telefon des Eigentümers verwendet) geben. Dies bedeutet, dass die Verbindung zwischen dem Telefon und dem Bewohner auch eins für viele ist. Und die schwierigste Option ist zwei Telefone in der Gemeinschaftswohnung. In diesem Fall haben beide Räume mehrere Einwohner der Wohnung. Es stellt sich also heraus, dass "viele" Familien die "vielen" Telefone verwenden können (die Verbindung ist viele für viele).

Wie realisieren Sie die Verbindung zu vielen an viele? Auf den ersten Blick ist es im relationalen Modell unmöglich. Vor 10 Jahren suchte ich lange Zeit nach verschiedenen Optionen, und als Ergebnis erstellte ich einfach einen Tisch, der mit Datenredundanz überflutet wurde. Aber einmal bekam ich eine Aufgabe, dank der, an den eine hervorragende Lösung aus dem Zustand der Oberfläche kam - Sie müssen zwei Anwohner von Wohnungen und Telefonen erstellen und nur den Primärschlüssel implementieren. In dieser Tabelle werden keine externen Tasten benötigt. Die Verbindung zwischen den Tischen sollte jedoch durch die dritte, Bindungstabelle sein. Auf den ersten Blick ist es schwierig und nicht klar, aber Sobald mit dieser Methode ernüchtern ist, sehen Sie die gesamte Leistung dieser Lösung.

Tabellen 1.6 und 1.7 Zeigt Beispiele für die Tische von Nachnamen und Telefonen an. Und Tabelle 1.8 zeigt eine Bindemitteltabelle.

Tabelle 1.6. Tabellennamen

Tabelle 1.7. Tischteys.

Tabelle 1.8. Tischteys.

Lassen Sie uns jetzt sehen, was die Datensuche-Logik mit vielen bis zu vielen sein wird. Angenommen, wir müssen alle Telefone finden, die Ivanov gehören. Ivanovs Primärschlüssel ist 1. Finden Sie alle Datensätze in der Verbindungstabelle, die das Feld "Kommunikation mit dem Namen" gleich 1 ist. Diese werden Datensätze 1 und 2. Diese Datensätze in der "Kommunikation mit Telefon" in der "Kommunikation mit Telefon", Identifizierer 1 und 2 sind gefunden, und so gehört Ivanov zu den Räumen aus der Telefontabelle, die sich in den Linien 1 und 2 befinden.

Jetzt entscheiden Sie das Feedback - wir definieren, wer Zugriff auf die Telefonnummer 567575677 hat. Diese Nummer in der Telefontabelle hat Taste 3. Wir suchen alle Einträge in der Bindemittel-Tabelle, wo sich auf dem Feld "Kommunikation mit dem Telefon" 3 darstellt. Dies sind Aufzeichnungen mit den Zahlen 4 und 5, die in der "Kommunikation mit dem Namen" -Feld die Werte 2 bzw. 3 enthalten. Wenn Sie jetzt auf die Tabelle der Nachnamen ansehen, sehen Sie an den Zahlen 2 und 3 Petrov und Sidorov. Es sind also diese beiden Einwohner, die die Telefonnummer 567575677 verwenden.

Sehen Sie sich alle drei Tische an und stellen Sie sicher, dass Sie verstehen, welche Telefonnummern zu den Einwohnern und im Gegenteil gehören. Wenn Sie diese Verbindung sehen, werden Sie verstehen, dass es einfach ist, wie drei Kopecks und können sie schnell in Ihren Projekten umsetzen können.

Erstellen von Tabellennamen (IDName-Einzigungsmittel Default NEUEID (), VCName VARCHAR (50), CONSTRAINT PK_GUID-Primärschlüssel (IDNAME)) Tabellenhandbuch erstellen (IDPhone-Einzigungsmittel Standard NEUEID (), VCPhone VARCHAR (10), CONSTRAINT PK_IDPHONE PRIMARY KEY (IDPhone)) Erstellen Sie Tabelle LinkTable (IDLinkTable Einzigungsmittel Default NEUEID (), IDName-Einrichtung, IDPhone-Einrichtung, Einschränkungen PK_IDLinkTable Primärschlüssel (IDLinkTable), CONSTRAINT FK_IDPHONE Fremdschlüssel (IDPhone) Referenzen Telefone (IDPhone), CONSTRAINT FK_IDNAME Fremdschlüssel (IDName) Referenzen Namen (IDName) )

Die Bindemitteltabelle verfügt über zwei externe Schlüssel, die an Namen und Telefontabellen und einen Primärschlüssel binden, was die Einzigartigkeit der Datensätze gewährleistet.

Als primärer Schlüssel wählte ich ein GUID-Feld, da es für die Lösung dieser Aufgabe bequemer ist. Tatsache ist, dass wir Datensätze in zwei Tabellen einfügen müssen, und in beiden Fällen müssen Sie denselben Schlüssel angeben. Der GUID-Wert kann generiert werden, und dann können Sie beim Einfügen von Daten in beide Tabellen verwenden.

Sie können als Schlüssel- und automatisch inkrementiertes Feld verwenden, in diesem Fall ist das Problem jedoch etwas schwieriger zu lösen, genauer gesagt, es ist unbequem, das Problem zu lösen. Wenn Sie beispielsweise eine Telefonnummer hinzufügen, müssen Sie zum Beispiel die entsprechende Zeichenfolge in die Tabelle einfügen, um ihn zu finden, um den Schlüssel zu ermitteln, der eine Zeile zugewiesen wurde, und dann gibt es bereits eine Verbindung.

Zu diesem Zeitpunkt sind wir auf die Erstellung von Tabellen beschränkt, und in Abschnitt 2.8 kehren wir zu diesem Thema zurück und lernen und lernen, wie Sie mit verwandten Tischen zusammenarbeiten können. Arbeiten mit einer Verbindung zu eins und einem zu vielen ist nicht viel anders, da nur zwei Tische an diesem System teilnehmen. Kommunikation Viele, die aufgrund der Bindungstabelle komplizierter sind, sodass wir sie in Abschnitt 2.27 separat betrachten.

PRIMÄRSCHLÜSSEL. - Primärschlüssel, Restriktion, mit der Sie jeden Eintrag in der Tabelle eindeutig identifizieren können SQL..

Primärschlüssel Oracle.
Primärschlüssel ( PRIMÄRSCHLÜSSEL.) kann die Tabellen oder ihre Spalten einschränken. Diese Restriktion funktioniert sowie einzigartige Einschränkung. Es sollte jedoch den Unterschied zwischen den Primärschlüsseln und der Einzigartigkeit der Säulen in der Methode ihrer Verwendung mit externen Tasten berücksichtigen. Primärtasten können keine Nullwerte zulassen. Dies bedeutet, dass wie Felder beim Einschränken einzigartiger, in der Einschränkung verwendete Feld PRIMÄRSCHLÜSSEL.muss bereits nicht null angewendet werden.

Primärschlüssel Oracle.. Beispiel Nummer 1.
Ein Beispiel zum Erstellen einer Tabelle SQL. Mit Einschränkung. PRIMÄRSCHLÜSSEL.:

Schüler.
(Kod_stud ganzte nicht null PRIMÄRSCHLÜSSEL.,
Fam char (30) nicht null einzigartig
Adres char (50),
Ball Dezimalzahl);

Beste Platzbeschränkung PRIMÄRSCHLÜSSEL. Auf dem Feld (oder im Feld), das eine eindeutige Zeilenkennung bildet und eindeutiges Limit für Felder speichert, die eindeutig logisch sein müssen (z. B. Telefonnummern oder das Sname-Feld), und nicht, um Zeilen zu identifizieren. Einschränkung PRIMÄRSCHLÜSSEL. Es kann auch auf zahlreiche Felder angewendet werden, die eine einzigartige Kombination von Werten bilden:

Primärschlüssel Oracle.. Beispiel Nummer 2.

Tabelle erstellen Schüler.
(Fam char (30) nicht ,
Im char (30) nicht null
Adres char (50),
PRIMÄRSCHLÜSSEL. (FAM, IM));

Primärschlüssel MySQL.

Primärschlüssel SQL. / Mysql.. Beispiel Nummer 3.

Tabelle erstellen Personen (
P_id int nicht ,
LastName varchar (255) nicht ,
Vorname varchar (255),
Adresse varchar (255),
Stadt Varchar (255),
PRIMÄRSCHLÜSSEL. (P_id));

Primärschlüssel SQL / MYSQL. Beispiel Nummer 4.

Tabelle erstellen `ad_packages` (
`Id` int (111) nicht null auto_increment,
`Titel 'varchar (132) nicht null default",
`Preis` Float nicht Null Standard '0',
`Type` varchar (22) nicht null default",
`C_type` Enum ('Cash', 'Points', 'Rur') nicht Null Default 'Cash',
PRIMÄRSCHLÜSSEL. (`ID`)
);

Primärschlüssel SQL / MYSQL. Beispiel Nummer 5.

Erstellen Sie Tabelle `Gamestat`
`Id` int (11) nicht null auto_increment,
`Game` varchar (10) nicht null Standard 'TUZ',
`Stavok` int (11) nicht null default '0',
`Usd` float nicht null default '0',
`Rur` float nicht null default '0',
`Punkt` float nicht null standards '0',
`bank_usd` dezimal (12,2) nicht null Standard '0.00',
`Bank_rur` dezimal (12,2) nicht null default '0.00',
`bank_point` dezimal (12,2) nicht null Standard '0.00',
Primärschlüssel (`ID`)
);

In diesem Artikel werden wir versuchen, alles zu berücksichtigen, was die Schlüssel betrifft SQL: Was nötig ist, erstellen, Kassetteneinschränkungen. Im Allgemeinen: Es wird langweilig 😉

Plan für heute ist:

In der Theorie der relationalen Datenbanken - schlüssel Dies sind einige Entitäten, die erstellt wurden, um bestimmte Einschränkungen festzulegen, die die Integrität und Verfügbarkeit von Daten in Datenbanktabellen unterstützen.

Wenn wir einfache Wörter reden, die Schlüssel in sQL. Erstellt, um die zusätzliche Spaltenfunktionalität anzugeben. Ob es sich um die Einzigartigkeit handelt oder dass sich die Spalte auf eine andere Tabelle (externer Schlüssel) bezieht.

Primärschlüssel

Eine Spalte, die in der Datenbank mit dem Primärschlüssel eindeutig markiert sein sollte. Der primäre Schlüssel oder der Primärschlüssel bedeutet, dass der Tabellenwert des primären Schlüssellautsprechers nicht wiederholt werden kann. Daher können Sie diesen Schlüssel den Eintrag in der Tabelle ohne Angst eindeutig identifizieren, dass der Wert der Spalte wiederholt wird. Sofort ein Beispiel: Nehmen wir an, Sie haben eine Benutzertabelle. Diese Tabelle hat Felder: vollständiger Name, Geburtsjahr, Telefon. Wie kann man den Benutzer identifizieren? Solche Parameter wie der Name und das Telefon können nicht vertrauenswürdig sein. Immerhin können wir mehrere Benutzer nicht nur mit demselben Nachnamen, sondern auch benannt haben. Das Telefon kann mit der Zeit variieren und der Benutzer mit der Telefonnummer ist möglicherweise nicht für diejenigen, die sich in der Datenbank befinden.

Hier dafür und kam mit dem primären Schlüssel. Einmal eine eindeutige Kennung angemessen und das ist es. IM mysql. Im Beispiel führen wir alle Beispiele aus dem Feld aus Auto_increment. Sie können nicht angeben, ob Sie nicht angeben, dass dies der Primärschlüssel ist.

Ich denke, dass es nicht erwähnenswert ist, dass das als Primärschlüssel markierte Feld beim Erstellen eines Datensatzes nicht leer sein kann.

Externe Schlüssel ( unbekannter Schlüssel.)

Gibt es noch etwas mehr? externe Key (unbekannter Schlüssel.). Es wird auch als Referenz genannt. Es ist notwendig, sich an Tische untereinander zu binden.

Wenn Sie das Bild oben ansehen, ist der externe Taste der Feldanbieter in der Schachteltabelle. Wenn Sie eine Tabelle erstellen, legen Sie in der Regel eine Spalte einzigartiger ganzzahliger Werte ein. Wie wir es getan haben, als wir einen Tisch erstellt haben lieferant.

Säule lieferanten ID Es ist für jeden Datensatz einzigartig. Sein Wert und wird auf Rachespalte ausführen anbieter Tabelle schuhwerk.Ich empfehle sofort und betrachten Sie das Beispiel, wie der externe Schlüssel erstellt wird.

Erstellen eines externen Schlüssels

Erstellen von Tabellenschuhen (Schuhe_ID Int Auto_increment Primärschlüssel, Titeltext, Größe int, Preisfloat, Graf Int, Typ VARCHAR (30), Lieferant int, Fremdschlüssel (Lieferant) Referenzen Lieferant (Supplier_ID));

Wie in dem obigen Beispiel zu sehen ist, ist die Syntax zum Erstellen eines externen Schlüssels ziemlich einfach. Sie müssen ein Feld in der Tabelle hinzufügen, und nachdem Sie dieses Feld als externe Taste deklarieren und angeben, wohin er sich bezieht. In diesem Fall das Feld lieferant bezieht sich auf das Feld lieferanten ID Tabelle lieferant.

Verbundschlüssel (Composite-Taste)

Bei der Composite-Taste sind dies mehrere Primärtasten in der Tabelle. So erstellen verbundschlüssel.Die Einzigartigkeit der Aufzeichnung wird durch die in diesen Schlüssel kombinierten Felder überprüft.

Es gibt Situationen, in denen Sie in der Tabelle in die Tabelle eingefügt werden müssen, um den Datensatz auf einmal in mehreren Bereichen auf einmal zu überprüfen. Das ist das, was der Verbundschlüssel erfunden wird. Zum Beispiel erstellen Sie einen einfachen Tisch mit verbundschlüssel. So zeigen Sie Syntax an:

Tabellentest erstellen (feld_1 int, field_2 text, field_3 bigint, primärschlüssel (feld_1, field_3));

Im obigen Beispiel werden zwei Felder in eine Verbindungstaste zusammengefasst, und in der Tabelle werden in der Tabelle nicht mit diesen identischen Feldern aufgezeichnet.

Dies ist alles Anliegen der Schlüssel SQL. Dies ist ein kleines Handbuch - Vorbereitung für den Artikel, in dem wir im Detail berücksichtigen, wie Sie Tabellen kombinieren, um eine einzelne Datenbank darzustellen.

Es gilt für: SQL Server (ab 2016) SQL Azure Pack SQL AzurEpareler Data Warehouse-Datenbank

Sie können den Primärschlüssel in SQL Server 2016 mit dem SQL Server Management Studio oder der Transact-SQL-Umgebung ermitteln. Das Erstellen eines Primärschlüssels führt automatisch zur Erstellung eines angemessenen einzigartigen Cluster- oder Nicht-Locking-Index.

In diesem Abschnitt

    Bevor Sie mit der Arbeit beginnen, führen Sie diese Schritte aus.

    Beschränkungen

    Sicherheit

    Erstellen eines Primärschlüssels mit:

    Mittwoch SQL Server Management Studio

Beschränkungen

    Die Tabelle kann nur eine primäre Schlüsseleinschränkung aufweisen.

    Alle primären Key-Limit-Spalten müssen über kein Nullzeichen verfügen. Wenn die Zulässigkeit des NULL-Werts nicht angegeben ist, ist die nicht null-Funktion für alle Spalten mit dem Limit des Primärschlüssels installiert.

Sicherheit

Berechtigungen

Erstellen einer neuen Tabelle mit dem Primärschlüssel erfordert die Erstellen der Tabellenberechtigung in der Datenbank und die Änderungsberechtigungen auf der Schaltung, in der die Tabelle erstellt wird.

Erstellen eines Primärschlüssels in einer vorhandenen Tabelle erfordert die Änderungserlaubnis an einen Tisch.

Erstellen eines Primärschlüssels

    Klicken Sie im Objektbrowser mit der rechten Maustaste auf die Tabelle, in der Sie ein Einzigartigkeitsgrenze hinzufügen müssen, und wählen Sie aus Konstrukteur.

    IM Designer-Tischeklicken Sie auf den Zeilenwahlschalter für die Datenbankspalte, um als Primärschlüssel zu bestimmen. Um mehrere Spalten auszuwählen, halten Sie die Strg-Taste gedrückt und klicken Sie auf Zeile Selektoren für die verbleibenden Spalten.

    Klicken Sie mit der rechten Maustaste auf das Spaltenzeilen-Auswahlwerkzeug und wählen Sie den Befehl aus. Primärschlüssel einstellen.

Die Spalte der Schlüsselquellen wird durch das primäre Schlüsselsymbol in der entsprechenden Zeilenwähler identifiziert.

Wenn der Primärschlüssel aus mehr als einer Spalte besteht, können in einer Spalte doppelte Werte sein, aber alle Kombinationen von Werten aller Spalten des Primärschlüssels müssen eindeutig sein.

Bei der Bestimmung der Composite-Taste fällt die Reihenfolge der Spalten in der Primärschlüssel mit der Reihenfolge der in der Tabelle dargestellten Spalten zusammen. Nach dem Erstellen des Primärschlüssels kann jedoch die Reihenfolge der Spalten geändert werden. Weitere Informationen finden Sie in Abschnitt.

Erstellen eines Primärschlüssels in einer vorhandenen Tabelle

    IM objektbrowser

    Eine Abfrage erstellen.

    Ausführen. Dieses Beispiel erstellt den Primärschlüssel in der Transaktionsspalte.

    Verwenden Sie AdventureWorks2012; Gehen. Ändern Sie Tabelle Produktion.TransactionHistoryArchive Hinzufügen von CONSTRAINT PK_TRANSACTIONHISTORYArchive_TransactIDID Primärschlüssel (TransActionID); Gehen.

Erstellen eines Primärschlüssels in einer neuen Tabelle

    IM objektbrowserverbinden Sie sich mit der Komponentinstanz der Datenbankmotorkomponente.

    Wählen Sie auf dem Standardfenster Element aus Eine Abfrage erstellen.

    Kopieren Sie das folgende Beispiel in das Abfragefenster und klicken Sie auf Ausführen. In diesem Beispiel wird eine Tabelle erstellt und der Primärschlüssel für die Transaktionsspalte ermittelt.

    Verwenden Sie AdventureWorks2012; Gehen. Erstellen von Tabellenproduktion.transactionHistoryArchive1 (TransactionId Int nicht NULL, CONSTRAINT PK_TRANSACTIONHISTORYArchive_TransactionId Primärschlüssel gruppiert (TransactionID)); Gehen.

    Weitere Informationen finden Sie unter Abschnitte und.

Fortsetzung des Themas:
Netzwerk

Nach dem ersten Erscheinungsbild des Tablets auf dem Computer-Gerätemarkt gab es kein Jahr, da ein Tablet-PC zu einer unabhängigen Einheit wurde. Weltmarken wie Samsung und Apple ...