SQL - Übungsblatt 7

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

SQL - Übungsblatt 7
Hallo zusammen,

Ich bin mir bei SQL noch etwas unsicher. Zum Blatt 7 hätte ich 2 Fragen.

Wenn ich die Tabelle “Flugzeug” anlege, warum muss ich dort das Contraint verwenden?

Flugzeug (RegNr:integer, ModellNr[FlugzeugTyp]:integer, (HangarLaengengrad:float, HangarBreitengrad:float)[Hangar])
ModellNr NOT NULL

CREATE TABLE Flugzeug (

RegNr INT PRIMARY KEY,
ModellNr INT NOT NULL REFERENCES FlugzeugTyp(ModellNr),
HangarLaengengrad FLOAT, HangarBreitengrad FLOAT,
CONSTRAINT hangar_fk – beispielhafter expliziter Name

FOREIGN KEY (HangarLaengengrad, HangarBreitengrad)
REFERENCES Hangar(Laengengrad, Breitengrad)
);

Bei der Aufgabe 2c: Ist die Reihenfolge wichtig?
Zuerst würde ich die VIEWS und dann die TABLES löschen. Muss ich innerhalb der Tabellen auch etwas beachten?

Danke!


[quote=educs]
Hallo zusammen,

Ich bin mir bei SQL noch etwas unsicher. Zum Blatt 7 hätte ich 2 Fragen.

Wenn ich die Tabelle “Flugzeug” anlege, warum muss ich dort das Contraint verwenden?

Flugzeug (RegNr:integer, ModellNr[FlugzeugTyp]:integer, (HangarLaengengrad:float, HangarBreitengrad:float)[Hangar])
ModellNr NOT NULL

CREATE TABLE Flugzeug (

RegNr INT PRIMARY KEY,
ModellNr INT NOT NULL REFERENCES FlugzeugTyp(ModellNr),
HangarLaengengrad FLOAT, HangarBreitengrad FLOAT,
CONSTRAINT hangar_fk – beispielhafter expliziter Name

FOREIGN KEY (HangarLaengengrad, HangarBreitengrad)
REFERENCES Hangar(Laengengrad, Breitengrad)
);

Bei der Aufgabe 2c: Ist die Reihenfolge wichtig?
Zuerst würde ich die VIEWS und dann die TABLES löschen. Muss ich innerhalb der Tabellen auch etwas beachten?

Danke!
[/quote]Das Constraint brauchst du, weil du einen zusammengesetzten Fremdschluessel hast, bei einfachen Fremdschluesseln gehts kuerzer.
Zu deiner zweiten Frage: ich habe die Aufgabe nicht vor mir, aber du musst Tabellen und Views in der umgekehrten Erstellungsreihenfolge wieder loeschen, weil dir sonst Fremdschluessel etc. kaputtgehen koennten. Also in etwa so:
create table A
create view B
drop view B
drop table A


Du brauchst dieses CONSTRAINT um (HangarLaengengrad, HangarBreitengrad) als foreign key zu deklarieren.
Du kannst in dem Fall FOREIGN KEY nicht einfach hinter ein Attribut schreiben weil der fkey ja aus 2 attributen besteht.
Bei dem CREATE TABLE Query von Hangar wirst du z.b. auch den primary key als constraint definieren müssen, weil du ja einen zusammengesetzten pkey hast.

zu 2c):
Ich würde tippen du musst auf die reihenfolge achten und müsstest hier z.b. Flugzeug vor Hangar löschen weil Flugzeug ja auf Hangar verweist und dieser Verweis ja sonst ins leere geht. Beim Anlegen ist die Reihenfolge ja auch wichtig. Beim Löschen müsste diese dann genau rückwärts sein.

Edit: Mist da war ich wohl ein bisschen zu langsam :wink: