Guten Tag liebes Forum
Ich bin neu hier und habe direkt eine Frage die mich brennend interessiert
Ich möchte über JAVA ein Script zur Erstellung der Datenbank einlesen . Das ganze funktioniert auch soweit ganz gut bis ich zur ersten Tabelle komme in der Sich mein Primary Key aus einem Attribut der selbigen Tabelle und einem Fremdschlüssel einer anderen Tabelle zusammensetzt.Die Aufgabenstellung meines Ausbilders lautet das wir alle Tabellen beim ersten Verbinden mit der Datenbank über das Skript anlegen sollen. Mein Problem ist das aber in der Tabelle aus der Ich den Fremdschlüssel ziehe am Anfang leer ist.
Mein Ansatz würde so aussehen das ich die abhängige Tabelle erst erstelle wenn in der übergeordneten Tabelle ein Datensatz vorhanden ist
Mein Derzeitiges Skript sieht folgender Maßen aus:
Das Problem tritt bei der Relation t_hälfte auf.Wenn ein Eintrag in t_spiel vorhanden ist gibt es keine Probleme
CREATE TABLE t_Spieler(
Kennung VARCHAR(30),
Passwort VARCHAR (15)NOT NULL ,
IP VARCHAR(15) ,
Profilbild BYTEA,
Aktiv BOOLEAN,
Abbrüche INT,
Strafpunkte INT,
Startwurf INT,
Statistik BYTEA,
CONSTRAINT PK_t_spieler PRIMARY KEY (Kennung)
);
CREATE TABLE t_Spielleiter(
fk_t_Spieler_Kennung VARCHAR(30),
Geleitete_Spiele INT DEFAULT 1,
CONSTRAINT PK_t_Spielerleiter_Kennung Primary KEY(fk_t_Spieler_Kennung),
CONSTRAINT FK_t_Spielerleiter_Kennung FOREIGN KEY (fk_t_Spieler_Kennung) REFERENCES t_Spieler(Kennung)ON UPDATE CASCADE ON DELETE CASCADE
);
CREATE TABLE t_ist_client(
fk_t_Spieler_Kennung VARCHAR(30),
fk_t_Spiel_Spiel_ID INT,
CONSTRAINT PK_t_ist_client PRIMARY KEY (fk_t_Spiel_Spiel_ID,fk_t_Spieler_Kennung),
CONSTRAINT FK_t_ist_client FOREIGN KEY (fk_t_Spieler_Kennung) REFERENCES t_Spieler(Kennung) ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT FK_t_ist_client FOREIGN KEY (fk_t_Spiel_Spiel_ID) REFERENCES t_Spiel(Spiel_ID) ON UPDATE CASCADE ON DELETE CASCADE
);
CREATE TABLE t_Spiel(
Spiel_ID SERIAL,
fk_t_Spielleiter_Kennung VARCHAR(30),
Status INT NOT NULL DEFAULT 1,
Zeit TIMESTAMP NOT NULL DEFAULT current_timestamp,
CONSTRAINT PK_t_Spiel PRIMARY KEY (Spiel_ID),
CONSTRAINT FK_t_Spiel FOREIGN KEY (fk_t_Spielleiter_Kennung) REFERENCES t_Spielleiter(fk_t_Spieler_Kennung)
);
CREATE TABLE t_Hälfte(
Art INT,
fk_t_Spiel_Spiel_ID INT,
Verlierer VARCHAR(30),
Stock INT DEFAULT 13,
CONSTRAINT PK_t_Hälfte PRIMARY KEY(Art,fk_t_Spiel_Spiel_ID) ,
CONSTRAINT FK_t_Spiel_Spiel_ID FOREIGN KEY (fk_t_Spiel_Spiel_ID)REFERENCES t_Spiel(Spiel_ID) ON UPDATE CASCADE ON DELETE CASCADE
);
CREATE TABLE t_Runde(
RundenNr Int ,
fk_t_Spiel_Spiel_ID INT,
fk_t_Hälfte_Art INT,
Beginner VARCHAR(30),
Verlierer VARCHAR(30),
Gewinner VARCHAR(30),
CONSTRAINT PK_t_Runde PRIMARY KEY (RundenNr),
CONSTRAINT FK_t_Spiel_Spiel_ID FOREIGN KEY (fk_t_Spiel_Spiel_ID)REFERENCES t_Spiel(Spiel_ID) ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT FK_t_Hälfte_Art FOREIGN KEY (fk_t_Hälfte_Art)REFERENCES t_Hälfte(Art) ON UPDATE CASCADE ON DELETE CASCADE
);
CREATE TABLE t_Durchgang(
fk_t_Spieler_Kennung VARCHAR(30),
fk_t_Spiel_Spiel_ID INT,
fk_t_Hälfte_Art INT,
fk_t_Runde_RundenNr INT,
Würfel_1 INT,
Würfel_2 INT,
Würfel_3 INT,
Zähler INT,
CONSTRAINT PK_t_Durchgang PRIMARY KEY (fk_t_Spieler_Kennung,fk_t_Spiel_Spiel_ID,fk_t_Hälfte_Art,fk_t_Runde_RundenNr)
) ;
Danke für helfende Kommentare