SQL Constraints verstehen
Constraints sind unverzichtbare Werkzeuge, um Datenintegrität und Sicherheit in einer Datenbank zu gewährleisten. In unserem kurzen Überblick werden die fünf gängigen SQL-Constraints erläutert und ihre Bedeutung für die Gestaltung Ihrer Datenbanken verdeutlicht.
Warum sind Constraints wichtig?
Wenn Sie eine Datenbank entwerfen, möchten Sie oft bestimmte Einschränkungen für die Daten in bestimmten Spalten festlegen. Zum Beispiel, wenn Sie eine Tabelle für Wolkenkratzer erstellen, möchten Sie sicherstellen, dass die Spalte für die Höhe keine negativen Werte enthält.
Was sind Constraints?
In SQL ist ein Constraint eine Regel, die auf eine Spalte oder Tabelle angewendet wird und festlegt, welche Daten darin eingegeben werden können. Wenn Sie eine Operation durchführen, die die Daten in einer Tabelle ändert, wie z. B. ein INSERT, prüft das RDBMS, ob die Daten gegen vorhandene Constraints verstoßen, und gibt bei Verstoß einen Fehler zurück.
Constraints sind nützlich, um Geschäftsregeln durchzusetzen und die Datenintegrität sicherzustellen. Sie helfen auch bei der Aufrechterhaltung von Beziehungen zwischen Tabellen.
Die fünf gängigen SQL-Constraints
Der PRIMARY KEY-Constraint stellt sicher, dass Werte in einer Spalte eindeutig und nicht NULL sind, und ermöglicht es, Zeilen in einer Tabelle zu identifizieren. Ein SQL-Primärschlüssel kombiniert UNIQUE- und NOT NULL-Constraints und erzeugt automatisch einen Index für schnelle Datenabfragen. Ein Primärschlüssel besteht aus einem minimalen Satz von Attributen, um Zeilen eindeutig zu identifizieren. In einigen Fällen ist ein natürlicher Schlüssel aus beobachtbaren Daten geeignet, während in anderen ein Surrogat- oder synthetischer Schlüssel empfohlen wird, um Konsistenz zu gewährleisten.
Der FOREIGN KEY-Constraint erzwingt, dass Werte in einer Tabelle (Kindertabelle) bereits in einer anderen Tabelle (Elterntabelle) vorhanden sind. Dies bildet Beziehungen zwischen Tabellen. Ein Beispiel: Der Primärschlüssel der Tabelle EMPLOYEES wird durch den Fremdschlüssel der Tabelle SALES referenziert. Wenn ein Datensatz zur Kindertabelle hinzugefügt wird, muss der Wert im Fremdschlüssel in der Elterntabelle existieren, um die Integrität der Beziehung zu gewährleisten. Der Fremdschlüssel kann auf UNIQUE- oder PRIMARY KEY-Spalten in der Elterntabelle verweisen.
Das UNIQUE-Constraint verhindert Duplikate in einer Spalte und ermöglicht eindeutige Werte. Es ist nützlich, um Eins-zu-Eins-Beziehungen zwischen Tabellen durchzusetzen. UNIQUE-Constraints können auf Spalten- oder Tabellenebene definiert werden. Auf Tabellenebene können sie auf mehrere Spalten angewendet werden, wobei jede Zeile eine eindeutige Kombination von Werten in den eingeschränkten Spalten haben muss.
CHECK-Constraints sind Anforderungen für Spalten, die als Prädikate definiert werden. Diese Prädikate sind Ausdrücke, die entweder TRUE, FALSE oder UNKNOWN zurückgeben. Wenn ein Wert in eine solche Spalte eingefügt wird und das Prädikat zu TRUE oder UNKNOWN ausgewertet wird (einschließlich NULL-Werte), ist die Operation erfolgreich. Bei FALSE schlägt die Operation fehl. CHECK-Prädikate nutzen oft mathematische Vergleichsoperatoren (z.B., <, >, <=, >=) zur Beschränkung der Daten in der Spalte. Sie gewährleisten die Einhaltung bestimmter Regeln, wie die Sicherstellung, dass keine negativen Preise in einer Produkttabelle erscheinen. Die CREATE TABLE-Anweisung zeigt ein Beispiel, wie ein CHECK-Constraint für positive Preise erstellt wird. CHECK-Prädikate können verschiedene SQL-Operatoren verwenden, darunter LIKE, BETWEEN und IS NOT NULL. Einige Implementierungen erlauben sogar Unterabfragen, aber normalerweise keine Verweise auf andere Tabellen in diesen Prädikaten.
Das NOT NULL-Constraint verhindert NULL-Werte in einer Spalte. In SQL wird NULL verwendet, um unbekannte Werte darzustellen. Das Constraint erzwingt, dass für diese Spalte immer ein Wert angegeben werden muss, andernfalls scheitert die INSERT-Operation.
Schlussfolgerung
Constraints sind unverzichtbare Werkzeuge für jeden, der eine Datenbank mit einem hohen Maß an Datenintegrität und Sicherheit in Anwendungen entwerfen möchte. Durch die Begrenzung dessen, was in eine Spalte eingegeben werden kann, können Sie verstehen, dass Beziehungen zwischen Tabellen korrekt aufrechterhalten werden und die Datenbank die Geschäftsregeln einhält, die ihren Zweck definieren.