Anfängerhandbuch zum Schreiben von mySQL-Datenbankschemata
Bei der Entwicklung eines Softwareprojekts ist ein ordnungsgemäß strukturiertes Datenbankschema einer der wichtigsten, grundlegendsten und wichtigsten Aspekte. Dies entspricht dem Bau eines Hauses, um sicherzustellen, dass das Fundament ordnungsgemäß gelegt wird. Andernfalls werden die Chancen für den Bau eines Qualitätshauses drastisch verringert.
Überraschend einfacher als man denkt, lernen wir die verschiedenen Facetten, die zum Schreiben eines gut strukturierten Datenbankschemas verwendet werden.
CREATE TABLE Syntax
Öffnen Sie zunächst Ihren bevorzugten Texteditor . Das Erstellen eines Datenbankschemas erfordert lediglich eine Nur-Text-Datei. Eine Datenbank besteht aus mehreren Tabellen, die jeweils aus Spalten bestehen. Mit der Syntax CREATE TABLE wird eine einzelne Tabelle erstellt. Hier ist ein einfaches Beispiel:
CREATE TABLE users (
id INT NOT NULL,
is_active TINY INT NOT NULL,
full_name VAR CHAR(100) NOT NULL,
email VARCHAR(100) NOT NULL
);
Wie Sie sehen können, wird eine Datenbanktabelle mit dem Namen Benutzer erstellt, die aus vier Spalten besteht. Dies sollte eine ziemlich einfache SQL-Anweisung sein, die mit CREATE TABLE beginnt, gefolgt vom Namen der Datenbanktabellen und dann in Klammern die durch Komma getrennten Spalten der Tabelle.
Verwenden Sie die richtigen Spaltentypen
Wie oben gezeigt, werden die Spalten, aus denen die Tabelle besteht, durch Kommas getrennt. Jede Spaltendefinition besteht aus den drei gleichen Teilen:
COL_NAME TYPE [OPTIONS]
Der Name der Spalte, gefolgt vom Spaltentyp und allen optionalen Parametern. Wir werden später auf die optionalen Parameter eingehen, konzentrieren uns jedoch auf den Spaltentyp. Nachfolgend sind die am häufigsten verwendeten verfügbaren Spaltentypen aufgeführt:
Art | Beschreibung |
---|---|
INT | Ganzzahl, unterstützt Werte bis zu (+/-) 2,14 Milliarden. Die am häufigsten verwendeten Integer-Typen, aber die folgenden mit entsprechenden Bereichen sind ebenfalls verfügbar:
|
VARCHAR (xxx) | Zeichenfolge mit variabler Länge, die praktisch alle nicht-binären Daten unterstützt. Das xxx in Klammern ist die maximale Länge, die die Spalte enthalten kann. |
DEZIMAL (x, y) | Speichert Dezimal- / Gleitkommawerte, z. B. Preise oder numerische Werte, die keine ganzen Zahlen sind. Die Zahlen in Klammern von (x, y) definieren die maximale Länge der Spalte und die Anzahl der zu speichernden Dezimalstellen. Zum Beispiel würde DECIMAL (8,2) erlauben, dass Zahlen maximal sechs Stellen lang und mit zwei Dezimalstellen formatiert sind. |
DATETIME / TIMESTAMP | Beide enthalten Datum und Uhrzeit im Format JJJ-MM-TT HH: II: SS. Sie sollten TIMESTAMP für alle Zeilen-Metadaten (dh erstellt um, zuletzt aktualisiert usw.) und DATETIME für alle anderen Daten (z. B. Geburtsdatum usw.) verwenden. |
DATUM | Ähnlich wie DATETIME, außer dass nur das Datum im Format JJJ-MM-TT und nicht die Uhrzeit gespeichert wird. |
TEXT | Große Textblöcke können bis zu 65.000 Zeichen speichern. Folgendes ist auch mit ihren jeweiligen Bereichen verfügbar:
|
KLECKS | Wird zum Speichern von Binärdaten wie Bildern verwendet. Unterstützt eine maximale Größe von 64 KB, und Folgendes mit entsprechenden Größenbeschränkungen wird ebenfalls unterstützt:
|
ENUM (opt1, opt2, opt3 …) | Erlaubt nur, dass der Wert einer der vordefinierten Werte ist, die in Klammern angegeben sind. Gut für Dinge wie eine Statusspalte (z. B. aktiv, inaktiv, ausstehend). |
In jeder Hinsicht sind die oben genannten Spaltentypen alles, was Sie zum Schreiben gut konstruierter mySQL-Datenbankschemata benötigen.
Spaltenoptionen definieren
Beim Definieren von Spalten können Sie auch verschiedene Optionen angeben. Unten finden Sie ein weiteres Beispiel für die Anweisung CREATE TABLE :
CREATE TABLE users (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(100) NOT NULL UNIQUE,
status ENUM('active','inactive') NOT NULL DEFAULT 'active',
balance DECIMAL(8,2) NOT NULL DEFAULT 0,
date_of_birth DATETIME,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
Das Obige mag ein wenig entmutigend aussehen, aber ärgern Sie sich nicht, es ist ganz einfach. Aufgeschlüsselt, hier ist, was in der obigen Aussage passiert:
- Sie sollten immer NOT NULL für alle möglichen Spalten verwenden, um die Geschwindigkeit und Leistung der Tabelle zu verbessern. Dies gibt lediglich an, dass die Spalte beim Einfügen einer Zeile nicht leer / null gelassen werden darf.
- Versuchen Sie immer, die Spaltengröße so klein wie möglich zu halten, da dies zur Verbesserung von Geschwindigkeit und Leistung beiträgt.
- Die ID- Spalte ist eine Ganzzahl, ist auch der Primärschlüssel der Tabelle, was bedeutet, dass sie eindeutig ist, und wird bei jedem Einfügen eines Datensatzes um eins erhöht. Dies sollte im Allgemeinen für alle von Ihnen erstellten Tabellen verwendet werden, damit Sie problemlos auf eine einzelne Zeile in der Tabelle verweisen können.
- Die Statusspalte ist ein ENUM und muss entweder den Wert „aktiv“ oder „inaktiv“ hat. Wenn kein Wert angegeben wird, beginnt eine neue Zeile mit dem Status "aktiv".
- Die Saldospalte beginnt für jede neue Zeile bei 0 und ist ein Betrag, der mit zwei zwei Dezimalstellen formatiert ist.
- Die Spalte date_of_birth ist einfach ein DATE, lässt aber auch einen Nullwert zu, da das Geburtsdatum bei der Erstellung möglicherweise nicht bekannt ist.
- Zuletzt ist die Spalte created_at ein TIMESTAMP und verwendet standardmäßig die aktuelle Zeit, zu der die Zeile eingefügt wurde.
Das Obige ist ein Beispiel für eine gut strukturierte Datenbanktabelle und sollte in Zukunft als Beispiel verwendet werden.
Verknüpfen Sie Tabellen mit Fremdschlüsseleinschränkungen
Einer der größten Vorteile der Verwendung relationaler Datenbanken wie mySQL ist die hervorragende Unterstützung für Fremdschlüsseleinschränkungen und Kaskadierung. In diesem Fall verknüpfen Sie zwei Tabellen durch eine Spalte und bilden eine übergeordnete untergeordnete Beziehung. Wenn also die übergeordnete Zeile gelöscht wird, werden auch die erforderlichen untergeordneten Zeilen automatisch gelöscht.
Hier ist ein Beispiel:
CREATE TABLE users (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(100) NOT NULL UNIQUE,
full_name VARCHAR(100) NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
) engine=InnoDB;
CREATE TABLE orders (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
userid INT NOT NULL,
amount DECIMAL(8,2) NOT NULL,
product_name VARCHAR(200) NOT NULL,
FOREIGN KEY (userid) REFERENCES users (id) ON DELETE CASCADE
) engine=InnoDB;
Sie werden die FOREIGN KEY-Klausel als letzte Zeile bemerken. Diese Zeile gibt einfach an, dass diese Tabelle untergeordnete Zeilen enthält, die durch die Benutzer-ID- Spalte mit ihrer übergeordneten Zeile verknüpft sind. Dies ist die ID- Spalte der Benutzertabelle . Dies bedeutet, dass mySQL jedes Mal, wenn eine Zeile aus der Benutzertabelle gelöscht wird, automatisch alle entsprechenden Zeilen aus der Auftragstabelle löscht, um die strukturelle Integrität in Ihrer Datenbank sicherzustellen.
Beachten Sie auch die engine = InnoDB am Ende der obigen Anweisung. Obwohl InnoDB jetzt der Standardtyp für mySQL-Tabellen ist, war dies nicht immer der Fall. Daher sollte dies hinzugefügt werden, um auf der sicheren Seite zu bleiben, da die Kaskadierung nur mit InnoDB-Tabellen funktioniert.
Design mit Vertrauen
Sie sind jetzt auf dem besten Weg, solide, gut strukturierte mySQL-Datenbankschemata zu erstellen. Mit den oben genannten Kenntnissen können Sie jetzt gut organisierte Schemata schreiben, die sowohl Leistung als auch strukturelle Integrität bieten.
Stellen Sie bei vorhandenem Schema sicher, dass Sie wissen, wie Sie es mit diesen wichtigen SQL-Befehlen verwenden .