Schlüssel und Einschränkungen, die häufig in SQL verwendet werden

Was sind Schlüssel und Einschränkungen?

Eine Datenbank muss bestimmte Eigenschaften einhalten, um die Integrität und Qualität der gespeicherten Daten zu gewährleisten. Schlüssel und Einschränkungen sind Regeln, die definieren, welche Datenwerte in bestimmten Datenspalten zulässig sind. Sie sind ein wichtiges Datenbankkonzept und Teil der Schemadefinition einer Datenbank. Das Definieren von Schlüsseln und Einschränkungen ist Teil des Datenbankdesignprozesses und stellt sicher, dass die Daten in einer Datenbank zuverlässig sind und ihre Integrität beibehalten. Einschränkungen können für eine bestimmte Spalte, eine ganze Tabelle, mehrere Tabellen oder ein ganzes Schema gelten. Ein zuverlässiges Datenbanksystem stellt sicher, dass Einschränkungen jederzeit gelten. Schlüssel sind eine spezielle Art von Einschränkung, die verwendet wird, um Beziehungen und Eindeutigkeit herzustellen.

Primärschlüssel

Ein notwendiger Teil des Aufbaus von Beziehungen zwischen zwei Entitäten oder zwei Daten besteht darin, die Daten korrekt zu identifizieren. In SQL ist die eindeutige Identifizierung von Daten von entscheidender Bedeutung. Ein Primärschlüssel ist ein eindeutiger Bezeichner für eine Datenzeile. In der Tabellenkalkulationsanalogie, die wir bisher verwendet haben, gab es immer eine Spalte id. Während jede Spalte als Primärschlüssel dienen kann, ist die Verwendung einer Spalte mit dem Namen id aus mnemonischen Gründen einfach und eine beliebte Konvention. In einem RDBMS kann jede Tabelle nur einen Primärschlüssel haben.

Ein Primärschlüssel ist eine garantierte eindeutige Kennung für eine Zeile in einer Tabelle. Aus diesem Grund können wir den Primärschlüsselwert einer Zeile verwenden, um auf diese Zeile aus anderen Tabellen zu verweisen. Im vorherigen Kapitel haben wir basierend darauf Beziehungen zwischen mehreren Tabellen hergestellt, aber relationale Datenbanken benötigen eine Möglichkeit, sich aufeinander zu beziehen, und die Primärschlüsselspalte ist eine Möglichkeit, dies effizient zu tun. In PostgreSQL erhalten Primärschlüssel auch Leistungsvorteile, da sie bekanntermaßen häufig zum Nachschlagen von Daten verwendet werden, insbesondere bei der Suche nach mehreren Tabellen.

Beachten Sie, dass nicht alle Spalten mit dem Namen „id“ Primärschlüssel sind. Darüber hinaus können Primärschlüssel einen beliebigen Namen haben.

Die Syntax zum Festlegen einer Spalte als Primärschlüsselspalte haben wir bereits in früheren Kapiteln gesehen:

Werfen wir einen Blick auf den obigen Befehl, der eine Tabelle mit dem Namen users erstellt, um Primärschlüssel zu verstehen.

  1. id spalte ist der Primärschlüssel dieser Tabelle. Wir können auch sagen, dass die Primärschlüsseleinschränkung auf die Spalte id angewendet wurde.
  2. id kann nur numerische Werte enthalten (int).
  3. Für jede neue Zeile, die der Tabelle hinzugefügt wird, wird das Feld id automatisch um 1 erhöht. Bei vielen RDBMS wird das Schlüsselwort AUTO_INCREMENT verwendet. Mit PostgreSQL verwenden wir serial , um unsere IDs automatisch zu inkrementieren und ihren Typ als integer festzulegen. Es ist nicht erforderlich, den Primärschlüsselwert bei jedem Einfügen von Daten manuell anzugeben, PostgreSQL erledigt dies für Sie, wenn Sie serial als Typ für id angeben.

Fremdschlüssel

Fremdschlüsselspalten werden verwendet, um auf eine andere Datenzeile zu verweisen, möglicherweise in einer anderen Tabelle. Um auf eine andere Zeile zu verweisen, benötigt die Datenbank einen eindeutigen Bezeichner für diese Zeile. Daher enthalten Fremdschlüsselspalten den Wert des Primärschlüssels der referenzierten Zeile. Beispielsweise kann eine Tabelle eine Spalte mit dem Namen user_id als Fremdschlüsselspalte haben, die der Spalte id der Tabelle users entspricht. Mit Fremdschlüsseln richten RDBMS Beziehungen zwischen Datenzeilen ein, entweder in derselben Tabelle oder über Tabellen hinweg.

Sie können der obigen SQL-Anweisung entnehmen, dass die Zeile zum Herstellen dieser Beziehung lautet

FOREIGN KEY (book_id) REFERENCES books(id) ON DELETE CASCADE

Im obigen Beispiel ist id der Primärschlüssel der books -Tabelle, die zum Herstellen einer Beziehung mit der reviews-Tabelle verwendet wird. Die id-Daten werden in der Reviews-Tabelle im Feld book_id gespeichert, um die Bücher den Reviews zuzuordnen. Die ON DELETE CASCADE -Klausel gibt an, dass beim Löschen eines Buches auch alle mit diesem Buch verknüpften Rezensionen gelöscht werden.

Zusammengesetzter Schlüssel als Primärschlüssel

Im vorherigen Kapitel haben wir eine Viele-zu-Viele-Beziehung erstellt, in der unser Primärschlüssel aus zwei Spalten bestand. Die user_id und die book_id bildeten beide zusammen den Primärschlüssel für die Querverweistabelle, wie in dieser Zeile der SQL-Anweisung zu sehen ist.

PRIMARY KEY (user_id, book_id)

Wenn ein primary_key aus einem eindeutigen Paar PRIMARY KEY (user_id, book_id) besteht, wird er als zusammengesetzter Schlüssel bezeichnet. Es tritt normalerweise in vielen zu vielen Beziehungen auf, und wir müssen eine zusätzliche Tabelle hinzufügen, um diese Beziehungsdaten zu speichern. Der zusammengesetzte Schlüssel stellt sicher, dass die Daten in der Tabelle für die Beziehung zwischen Benutzer und Buch eindeutig sind. Beispiel:

|User_id | Book_id | | 1 | 1 | | 1 | 2 | | 2 | 1 | 

UNIQUE Constraints

Neben dem Primärschlüssel ermöglicht eine Datenbank auch das Anwenden einer eindeutigen Einschränkung auf jede Spalte in der Datenbank. In der Tabelle books können wir beispielsweise nicht nur book_id als eindeutigen Primärschlüssel verwenden, sondern auch die ISBN-Nummer des Buches speichern. Die ISBN, International Standard Book Number, ist eine 10-stellige eindeutige Nummer für ein Buch. Wir können unsere Datenbank so gestalten, dass diese Spalte einzigartig wird. Obwohl dies kein Primärschlüssel ist, sind doppelte ISBNs in der books-Tabelle nicht zulässig, und die Datenqualität bleibt erhalten.

Die Unique-Einschränkung verbietet den doppelten Eintrag in die books-Tabelle für den Spaltenwert von isbn.

NOT NULL Constraints

Wir haben in vielen unserer SQL-Anweisungen „NOT NULL“ gesehen. Die Einschränkung NOT NULL verhindert, dass eine Spalte einen Nullwert zulässt (dh diese Spalte muss Daten enthalten). Dies ist wichtig für Schlüsselfelder. Beispiel: Wenn Sie einen Benutzer zu einer Datenbank hinzufügen möchten, müssen Sie einen Benutzernamen angeben. Ohne diese Einschränkung würde die Datenbank mit Nullwerten gefüllt und weniger nützlich sein.

Wie geht SQL mit diesen Beziehungen um?

PostgreSQL ermöglicht Beziehungen zwischen dem Schema und den Daten verschiedener Tabellen durch die Verwendung von FREMDSCHLÜSSELN und einer Operation namens a JOIN . Wie der Name schon sagt, besteht der Zweck darin, Tabellen zu verbinden. Durch diesen Mechanismus können wir zum Beispiel die vollständigen Details des Autors der oben gezeigten Reviews-Tabelle erhalten, da sie ein Feld user_id hat, das sich auf die user -Tabelle bezieht. Hier ein kurzes Beispiel:

Nachdem wir nun verstanden haben, wie mehrere Tabellen erstellt werden und welche Rolle Schlüssel beim Aufbau von Beziehungen spielen, werden wir uns die verschiedenen Joins genauer ansehen und wie SQL-Abfragen mithilfe dieser Joins erstellt werden, um die erforderlichen Daten aus mehreren Tabellen abzurufen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.