Database Reference
In-Depth Information
Über CRUD
CRUD ist eine nützliche Merkhilfe für die elementaren Operationen des Datenma-
nagements:
Create
,
Read
,
Update
und
Delete
. Auf deutsch also Erzeugen, Lesen,
Aktualisieren und Löschen. Das entspricht grundsätzlich dem Einfügen neuer Da-
tensätze (
Create
), der Modifikation bestehender Datensätze (
Update
) und dem Ent-
fernen nicht mehr benötigter Datensätze (
Delete
). Alle anderen Operationen, für die
Sie eine Datenbank nutzen (also jede noch so verrückte Query, die Sie sich vorstellen
können), sind
Leseoperationen
. Wenn Sie CRUD können, können Sie alles.
CREATE TABLE
cities (
name
text NOT
NULL,
postal
_
code
varchar
(9) CHECK (postal
_
code <>
''
),
country
_
code
char
(2) REFERENCES countries,
PRIMARY KEY
(country
_
code, postal
_
code)
);
Diesmal haben wir den Städtenamen so eingeschränkt, dass er keine
NULL
-
Werte enthalten darf. Wir prüfen auch die Postleitzahl (
postal
_
code
)dahin-
gehend, dass sie keinen Leerstring enthält (
<>
bedeutet
nicht gleich
). Und weil
der
PRIMARY KEY
eine Zeile eindeutig identifiziert, haben wir einen zusammen-
gesetzten Schlüssel (compound key) angelegt:
country
_
code
+
postal
_
code
.
Diese beiden zusammen identifizieren eine Zeile eindeutig.
Postgres kennt darüber hinaus eine Vielzahl von Datentypen. Sie haben be-
reits drei verschiedene Arten von Strings kennengelernt:
text
(ein String be-
liebiger Länge),
varchar(9)
(ein String variabler Länge mit bis zu neun Zei-
chen) und
char(2)
(ein String mit genau zwei Zeichen). In dieses Schema
wollen wir nun
Toronto, CA
einfügen.
INSERT INTO
cities
VALUES
(
'Toronto'
,
'M4C1B5'
,
'ca'
);
ERROR: insert or update on table "cities" violates foreign key constraint
"cities
_
country
_
code
_
fkey"
DETAIL: Key (country
_
code)=(ca) is not present in table "countries".
Dieser Fehler ist gut! Da
country
_
code countries
referenziert, muss der
coun-
try
_
code
in der
countries
-Tabelle vorhanden sein. Man nennt das
Pflege der
referenziellen Integrität
. Sie stellt sicher, dass unsere Daten immer korrekt
sind (siehe Abbildung 1,
Das Schlüsselwort
REFERENCES
beschränkt Felder auf
den Primärschlüssel einer anderen Tabelle.
, auf Seite 16). Beachten Sie, dass
NULL
ein gültiger Wert für
cities
.
country
_
code
ist, da die
NULL
das Fehlen ei-
nes Wertes repräsentiert. Wenn Sie die Spalte in der
cities
-Tabelle wie folgt
definieren:
country
_
code char(2) REFERENCES countries NOT NULL
.