Relationen und geographische Informationen

separation line
Go to previous page zurück Go to next page vor

5.1.2 Vertiefung: SQL als Sprache zur Datendefinition (DDL)

Das Erstellen von Relationen

In SQL werden die Begriffe TABLE, ROW und COLUMN synonym für Relation, Tupel und Attribut gebraucht. Mit Hilfe des CREATE TABLE-Befehls wird ein neues Relationenschema in der Datenbank definiert. Das Relationenschema muss genau spezifiziert werden, oder in anderen Worten, die zur Relation gehörenden Attribute sowie deren Domänen müssen angegeben werden.

Mit CREATE TABLE wird in einer Datenbank eine neue Relation (Tabelle) angelegt. Der Befehl hat folgende Grundstruktur:

CREATE TABLE <Tabellenname> (<Attributdefinitionen und Beschränkungen>);

Code-Beispiel: CREATE TABLE als ein Beispiel, wie eine Datenbanktabelle mit Hilfe von SQL                     definiert werden kann.Code-Beispiel: CREATE TABLE als ein Beispiel, wie eine Datenbanktabelle mit Hilfe von SQL definiert werden kann.

Attributdefinition: Attribute werden mit einem Namen und einem Datentyp definiert, wobei der Namen innerhalb der Tabelle eindeutig sein muss. Diese Angaben sind für alle Attribute zwingend notwendig.
Die Reihenfolge der Attribute bei der Definition entspricht der Reihenfolge der Spalten in der erstellten Tabelle. Wird eine bestimmte Ordnung angestrebt ist diese bereits bei der Erstellung der Tabelle zu definieren. Danach bleibt sie, sofern keine Änderungen an der Struktur der Tabelle vorgenommen werden bestehen.

Beschränkungen: Es gibt zwei Arten von Beschränkungen: Tabellenbeschränkungen und Attributbeschränkungen. Der Unterschied liegt darin, dass Attributbeschränkungen sich auf nur ein Attribut beziehen und Tabellenbeschränkungen sich auf mehrere Attribute beziehen können, dies aber nicht müssen. Mit diesen Beschränkungen kann der Wertebereich der Attribute eingeschränkt werden oder es wird verhindert, dass Werte eingegeben werden, die nicht erlaubt sind. Ein Datensatz kann nicht erfasst werden, wenn er eine Beschränkung verletzt.
Es gibt vier Arten von Beschränkungen:

  • UNIQUE - das Attribut oder die Attributkombination muss innerhalb der Tabelle eindeutig sein
  • PRIMARY KEY - das Attribut oder die Attributkombination ist Primärschlüssel der Tabelle
  • FOREIGN KEY - das Attribut ist ein Fremdschlüssel
  • CHECK - Bedingung die für ein Attribut oder eine Attributkombination erfüllt sein muss

Zusätzlich sind noch eine Reihe weiterer Deklarationen möglich wie z. B. die Domänendeklaration die in SQL die Datentypen CHAR, NUMBER, LONG und DATE kennt. Durch die Deklaration NOT NULL wird festgelegt, dass für das jeweilige Attribut keine NULL-Werte zulässig sind. Folglich muss beim Einfügen eines Tupels grundsätzlich ein Wert für dieses Attribut angegeben werden.

Manipulation von Relationsstrukturen

Mit ALTER TABLE kann die Struktur einer Relation geändert werden. Es können die mit CREATE TABLE erzeugten Attribute und Beschränkungen geändert, neue hinzugefügt oder vorhandene gelöscht werden. Der Befehl hat folgende Syntax:

ALTER TABLE <Tabellenname> <Änderung>;

wobei <Änderung> verschieden Befehle beinhalten kann:

  • ADD [COLUMN] <Attributdefintion>
    Attribut hinzufügen (Attributdefiniton wie bei CREATE)
  • ALTER [COLUMN] <Attributname> SET DEFAULT <Standardwert>
    neuer Standardwert festlegen
  • ALTER [COLUMN] <Attributname> DROP DEFAULT
    aktuellen Standardwert löschen
  • DROP [COLUMN] <Attributname> {RESTRICT | CASCADE}
    löschen eines Attributes
  • ADD <Tabellenbeschränkung>
    neue Tabellenbeschränkung hinzufügen (Tabellenbeschränkung wie bei CREATE)
  • DROP CONSTRAINT <Tabellenbeschränkung>
    löschen einer Tabellenbeschränkung

Mit den oben genannten Befehlen können Attribute und Beschränkungen hinzugefügt bzw. gelöscht werden. Zudem können die Standardwerte für die Attribute gesetzt oder gelöscht werden.
SQL beinhaltet im Standard keine Befehle um Attribute zu ändern oder umzubenennen. Dies würde auch zu Problemen führen, wenn bereits Daten vorhanden sind. Dennoch sind diese Befehle in einigen Datenbanken vorhanden (z.B. MODIFY oder RENAME). Die Syntax unterscheidet sich jedoch von System zu System. Wenn keine Daten vorhanden sind, kann das Attribut, das geändert werden soll, gelöscht und neu hinzugefügt werden.

Löschen von Relationen

Mit DROP TABLE kann eine bestehende Tabelle gelöscht werden. Dabei werden die Daten und die Struktur der Tabelle gelöscht.
Der Befehl hat folgende Syntax

important

Mit DROP TABLE <Tabellenname>; wird die Tabellenstruktur samt den Daten gelöscht. Dies kann in den meisten Fällen nicht mehr rückgängig gemacht werden.



Wirkungsweise von CREATE und ALTER

NAchvollziehen Sie anhand der nachfolgenden Beipiele die Wirkungsweise von SQL auf Relationen

Im animierten Beispiel wird einer Datenbank eine Tabelle hinzugefügt, die mit einer bereits bestehenden Tabelle verknüpft ist. Im SQL Befehl kommt der Unterschied zwischen Attribut- und Tabellenbeschränkung zum Ausdruck. projekt_ID und leiter_ID haben eine Attributbeschränkung (Beschränkung wird direkt hinter die Attributdefiniton geschrieben). projekt_ID hat die Beschränkung PRIMARY KEY, ist also Primärschlüssel dieser Tabelle, d.h. das Attribut muss eindeutig und nicht NULL sein. leiter_ID hat die Beschränkung NOT NULL (Spezialfall einer CHECK Beschränkung), muss also immer einen Wert enthalten.
Der Verknüpfung mit der bestehenden Tabelle ist als Tabellenbeschränkung definiert (FOREIGN KEY) und hat einen Namen (projektleiter). Diese Beschränkung könnte jedoch auch als Attributbeschränkung definiert werden, da sie nur ein Attribut beinhaltet.
Das Beispiel zeigt, dass grundsätzlich kein Unterschied zwischen Attribut- und Tabellenbeschränkungen besteht, sofern nur ein Attribut betroffen ist.

Die Wirkungsweise des CREATE TABLE Befehls

Im animierten Beispiel wird einer Tabelle ein neues Attribut hinzugefügt. Der angezeigte Datensatz enthält danach NULL für dieses Attribut, weil noch kein Wert zugewiesen wurde. Anschliessend wird dieses Attribut wieder aus der Tabelle gelöscht. Das Schlüsselwort RESTRICT bewirkt, dass nur Attribute gelöscht werden können, die nicht mit anderen Tabellen verbunden sind (Fremdschüssel). Alternativ kann das Schlüsselwort CASCADE verwendet werden. Dabei wird nicht nur die gewünschte Spalte, sondern auch die verbundene Spalte in der anderen Tabelle gelöscht.

Die Wirkungsweise des ALTER TABLE Befehls

Denken Sie nach...

  • Was ist der Unterschied zwischen DROP Table und ADD [COLUMN]?
separation line