Files
piano_repertoire/repertoire.sql
2023-10-13 06:50:56 +02:00

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,
date_of_birth DATE NOT NULL,
date_of_death DATE
);
CREATE TABLE work (
id INTEGER NOT NULL PRIMARY KEY,
comp_id INTEGER NOT NULL,
year 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(comp_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 work(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)
);