Archiv verlassen und diese Seite im Standarddesign anzeigen : wie geht das?
meskalin
07.04.2004, 18:58
ich hab ein problem mit der aufgabenstellung:
Erstellen Sie für folgende Relationen die vollständigen SQL-DDL-Statements:
Buch: {[Buchnr : integer, Titel : string, ISBN : string, Autornr : integer]}
Autor: {[Autornr : integer, Name : string]}
Exemplar: {[Buchnr : integer, Exempnr : integer, Anschaffungsdatum : date}]
Stellen Sie dabei mit den referentiellen Integritätsregeln folgenden Sachverhalt sicher:
- Ein Buch muß immer einen gültigen Autor haben
- Ein Exemplar kann ohne das ”Buch” nicht existieren
- Sollte das Buch gelöscht werden, so müssen auch alle Exemplare entfernt werden
das erste dürfte kein problem sein aber wie lassen sich die anderen beiden bedingunen erfullen?
hmmm ... auf welchem DB-System wird gearbeitet?
Fuer die 2te aufgabenstellung reicht es, eine N:1 beziehung zu erstellen und zwar mit muss-bedingung, d.h. es muss ein oder mehrere buecher geben.
3: In Oracle gibt es eine moeglichkeit, referentiell zu loeschen, d.h. wenn ein Buch geloescht wird, werden alle Exemplare auch geloescht. Den genauen namen der funktion kenn ich allerdings nicht mehr ... :(
windmaster
14.04.2004, 09:53
Ich glaube das geht in dem man CASCADE oder so ähnlich der Tabelle mit gibt.
meskalin
14.04.2004, 13:10
es wird mit db2 programmiert (ansi sql-92), wie kann ich den CASCADE befehl einsetzen, brauch mehr infos dazu?
Was ich bisher gemacht habe schaut so aus:
CREATE TABLE Buch (
Buchnr integer NOT NULL,
Titel varchar(60),
ISBN varchar(60),
Autornr integer REFERENCES (Autor)
PRIMARY KEY(Buchnr)
)
CREATE TABLE Autor (
Autornr integer NOT NULL,
Name varchar(60),
PRIMARY KEY(autornr)
)
CREATE TABLE Exemplar (
Exempnr integer
Buchnr integer References (Buch)
datum varchar(10),
PRIMARY KEY(Exempnr)
)
windmaster
14.04.2004, 15:27
Ich habe meine Unterlagen leider nicht hier auf der Arbeit aber soweit ich weiss wird das am Ende der Tabellendeklaration eingefügt.
meskalin
21.04.2004, 12:54
ah soweit ich weiss musses jetzt so gehen
Buchnr integer References (Buch) ON DELETE CASCADE
meskalin
05.05.2004, 19:32
leider kommt am db2sever irgendeine komische fehlermeldung nach references ich komm aber nicht darauf was falsch sein soll :mauer:
CREATE TABLE Buch (
Buchnr integer NOT NULL,
Titel varchar(60),
ISBN varchar(60),
Autornr integer REFERENCES (Autor)
PRIMARY KEY(Buchnr)
)
CREATE TABLE Autor (
Autornr integer NOT NULL,
Name varchar(60),
PRIMARY KEY(autornr)
)
CREATE TABLE Exemplar (
Exempnr integer
Buchnr integer References (Buch) on delete cascade
Anschaffungsdatum date,
PRIMARY KEY(Exempnr)
)
windmaster
06.05.2004, 08:38
Wenn du mal die Fehlermeldung posten könntest könnte ich dir vielleicht sagen was an dem Code falsch ist!!!!
beistrich
nach dem cascade hast du in dem code den beistrich vergessn und auch nach der definition der exemplar id fehlt der beistrich (keine ahnung ob das der orginal code von dir is ;) )
zudem mußt du eigentlich die autor tabelle vor der des buches erstellen da ja die buch auf die autor referenziert (zumindest wenn du's ganz sauber machn willst, glaub manche db frisst das auch so)
vBulletin® v3.8.6, Copyright ©2000-2012, Jelsoft Enterprises Ltd.