68 lines
1.8 KiB
SQL
68 lines
1.8 KiB
SQL
CREATE TABLE composer (
|
|
id INTEGER NOT NULL PRIMARY KEY,
|
|
first_name VARCHAR(255) NOT NULL,
|
|
name VARCHAR(255) NOT NULL,
|
|
Geburtsdatum DATE NOT NULL,
|
|
Sterbedatum DATE
|
|
);
|
|
|
|
CREATE TABLE Werk (
|
|
id INTEGER NOT NULL PRIMARY KEY,
|
|
Komp_id INTEGER NOT NULL,
|
|
VOE_Jahr INTEGER,
|
|
Opus VARCHAR(15),
|
|
Sammlung VARCHAR(127),
|
|
Haupttonart VARCHAR(15),
|
|
Titel VARCHAR(127),
|
|
Satztitel VARCHAR(127),
|
|
Aliasname VARCHAR(127),
|
|
Werkverzeichnis VARCHAR(31),
|
|
Werkverzeichnisnummer VARCHAR(15),
|
|
FOREIGN KEY(Komp_id) REFERENCES composer(id)
|
|
);
|
|
|
|
CREATE TABLE Satz (
|
|
Werk_id INTEGER NOT NULL,
|
|
Lfd_Satznummer INTEGER NOT NULL,
|
|
Nummer VARCHAR(15),
|
|
Bezeichnung VARCHAR(63),
|
|
Tonart VARCHAR(15),
|
|
Aufnahme BLOB,
|
|
PRIMARY KEY(Werk_id, Lfd_Satznummer),
|
|
FOREIGN KEY(Werk_id) REFERENCES Werk(id)
|
|
);
|
|
|
|
CREATE TABLE Spieler_in (
|
|
id INTEGER NOT NULL PRIMARY KEY,
|
|
first_name VARCHAR(255) NOT NULL,
|
|
Nachname VARCHAR(255) NOT NULL
|
|
);
|
|
|
|
CREATE TABLE Konzert (
|
|
id INTEGER NOT NULL PRIMARY KEY,
|
|
Datum DATE,
|
|
Uhrzeit VARCHAR(5),
|
|
Saal VARCHAR(255)
|
|
);
|
|
|
|
CREATE TABLE beherrscht(
|
|
Werk_id INTEGER NOT NULL,
|
|
Satz_id INTEGER NOT NULL,
|
|
Spieler_in_id INTEGER NOT NULL,
|
|
Vorlauf INTEGER DEFAULT 7,
|
|
PRIMARY KEY(Werk_id, Satz_id, Spieler_in_id),
|
|
FOREIGN KEY(Werk_id, Satz_id) REFERENCES Satz(Werk_id, Lfd_Satznummer),
|
|
FOREIGN KEY(Spieler_in_id) REFERENCES Spieler_in(id)
|
|
);
|
|
|
|
CREATE TABLE spielt_in(
|
|
Konzert_id INTEGER NOT NULL,
|
|
Spieler_in_id INTEGER NOT NULL,
|
|
Werk_id INTEGER NOT NULL,
|
|
Satz_id INTEGER NOT NULL,
|
|
PRIMARY KEY(Konzert_id, Spieler_in_id, Werk_id, Satz_id),
|
|
FOREIGN KEY(Konzert_id) REFERENCES Konzert(id),
|
|
FOREIGN KEY(Werk_id, Satz_id) REFERENCES Satz(Werk_id, Lfd_Satznummer),
|
|
FOREIGN KEY(Spieler_in_id) REFERENCES Spieler_in(id)
|
|
);
|