-- Таблица жанров
CREATE TABLE жанры (
id SERIAL PRIMARY KEY,
name VARCHAR(255) NOT NULL
);
-- Таблица артистов
CREATE TABLE Artists (
имя VARCHAR(255) PRIMARY KEY,
);
-- Таблица связи артистов и жанров (многие-ко-многим)
CREATE TABLE Artist_genre (
Artist_id VARCHAR(255),
genris_id INT,
FOREIGN KEY (Artist_id) REFERENCES Artists(имя) ON DELETE CASCADE,
FOREIGN KEY (genris_id) REFERENCES жанры(id) ON DELETE CASCADE,
PRIMARY KEY (Artist_id, genris_id)
);
-- Таблица альбомов
CREATE TABLE albums (
id SERIAL PRIMARY KEY,
название VARCHAR(255) NOT NULL,
год INT NOT NULL CHECK (год > 1900)
);
-- Таблица связи альбомов и артистов (многие-ко-многим)
CREATE TABLE album_artist (
album_id INT,
atist_id VARCHAR(255), -- опечатка, но оставляем как есть
FOREIGN KEY (album_id) REFERENCES albums(id) ON DELETE CASCADE,
FOREIGN KEY (atist_id) REFERENCES Artists(имя) ON DELETE CASCADE,
PRIMARY KEY (album_id, atist_id)
);
-- Таблица треков
CREATE TABLE треков (
id SERIAL PRIMARY KEY,
название VARCHAR(255) NOT NULL,
длительность INT NOT NULL, -- меняем VARCHAR на INT (в секундах)
альбом INT NOT NULL,
FOREIGN KEY (альбом) REFERENCES albums(id) ON DELETE CASCADE
);
-- Таблица сборников
CREATE TABLE компиляция (
id SERIAL PRIMARY KEY,
title VARCHAR(255) NOT NULL,
год INT NOT NULL CHECK (год > 1900)
);
-- Таблица связи треков и сборников (многие-ко-многим)
CREATE TABLE track_compilation (
track_id INT,
компиляция INT,
FOREIGN KEY (track_id) REFERENCES треков(id) ON DELETE CASCADE,
FOREIGN KEY (компиляция) REFERENCES компиляция(id) ON DELETE CASCADE,
PRIMARY KEY (track_id, компиляция)
);