Files
piano_repertoire/repertoire.sql

68 lines
1.8 KiB
MySQL
Raw Normal View History

2023-10-11 06:40:09 +02:00
CREATE TABLE composer (
id INTEGER NOT NULL PRIMARY KEY,
2023-10-11 06:46:21 +02:00
first_name VARCHAR(255) NOT NULL,
2023-10-11 06:54:39 +02:00
name VARCHAR(255) NOT NULL,
2023-10-11 07:10:52 +02:00
date_of_birth DATE NOT NULL,
2023-10-11 07:13:38 +02:00
date_of_death DATE
);
2023-10-13 06:39:44 +02:00
CREATE TABLE work (
id INTEGER NOT NULL PRIMARY KEY,
2023-10-13 06:46:19 +02:00
comp_id INTEGER NOT NULL,
2023-10-13 06:49:19 +02:00
year INTEGER,
2023-10-13 06:50:56 +02:00
opus VARCHAR(15),
2023-10-13 06:53:02 +02:00
collection VARCHAR(127),
2023-10-13 06:55:52 +02:00
main_key VARCHAR(15),
2023-10-13 06:59:14 +02:00
title VARCHAR(127),
2023-10-13 07:01:51 +02:00
mov_title VARCHAR(127),
2023-10-18 06:38:04 +02:00
alias VARCHAR(127),
work_directory VARCHAR(31),
wd_number VARCHAR(15),
2023-10-13 06:46:19 +02:00
FOREIGN KEY(comp_id) REFERENCES composer(id)
);
2023-10-18 06:44:39 +02:00
CREATE TABLE movement (
2023-10-18 06:48:39 +02:00
work_id INTEGER NOT NULL,
2023-10-18 06:52:29 +02:00
mov_number INTEGER NOT NULL,
2023-10-18 07:04:30 +02:00
numb VARCHAR(15),
2023-10-18 07:06:47 +02:00
designation VARCHAR(63),
2023-10-18 07:09:23 +02:00
mus_key VARCHAR(15),
2023-10-18 06:52:29 +02:00
PRIMARY KEY(work_id, mov_number),
2023-10-18 06:48:39 +02:00
FOREIGN KEY(work_id) REFERENCES work(id)
);
2023-10-19 17:03:09 +02:00
CREATE TABLE pianist (
id INTEGER NOT NULL PRIMARY KEY,
2023-10-11 06:46:21 +02:00
first_name VARCHAR(255) NOT NULL,
2023-10-19 17:05:12 +02:00
sec_name VARCHAR(255) NOT NULL
);
2023-10-19 17:08:02 +02:00
CREATE TABLE concert (
id INTEGER NOT NULL PRIMARY KEY,
2023-10-19 17:08:02 +02:00
conc_date DATE,
conc_time VARCHAR(5),
conc_place VARCHAR(255)
);
CREATE TABLE is_able_to_play(
2023-10-18 06:48:39 +02:00
work_id INTEGER NOT NULL,
mov_id INTEGER NOT NULL,
pianist_id INTEGER NOT NULL,
days_to_practice INTEGER DEFAULT 7,
recording VARCHAR(255),
PRIMARY KEY(work_id, mov_id, pianist_id),
FOREIGN KEY(work_id, mov_id) REFERENCES movement(work_id, mov_number),
FOREIGN KEY(pianist_id) REFERENCES pianist(id)
);
CREATE TABLE plays_in(
concert_id INTEGER NOT NULL,
pianist_id INTEGER NOT NULL,
2023-10-18 06:48:39 +02:00
work_id INTEGER NOT NULL,
mov_id INTEGER NOT NULL,
PRIMARY KEY(concert_id, pianist_id, work_id, mov_id),
FOREIGN KEY(concert_id) REFERENCES concert(id),
FOREIGN KEY(work_id, mov_id) REFERENCES movement(work_id, mov_number),
FOREIGN KEY(pianist_id) REFERENCES pianist(id)
);