/* Diagrama Lógico de Músicas: */

CREATE TABLE musica (
    id INTEGER auto_increment PRIMARY KEY,
    nome_da_musica VARCHAR(80) not null,
    letra TEXT,
    duracao TIME,
    ano_de_gravacao year,
    traducao text,
    fk_idioma_id INTEGER,
    fk_artista_id INTEGER,
    fk_compositor_id INTEGER,
    fk_gravadora_id INTEGER,
    fk_album_id INTEGER,
    fk_genero_codigo INTEGER
);

CREATE TABLE idioma (
    id INTEGER auto_increment PRIMARY KEY,
    lingua VARCHAR(30) not null
);

CREATE TABLE genero (
    codigo INTEGER auto_increment PRIMARY KEY,
    estilo VARCHAR(80),
    popularidade varchar(40)
);

CREATE TABLE album (
    id INTEGER auto_increment PRIMARY KEY,
    nome_do_album VARCHAR(80) not null,
    duracao TIME,
    quantidade_musicas INTEGER,
    data_lancamento DATE
);

CREATE TABLE artista (
    id INTEGER auto_increment PRIMARY KEY,
    nome_do_artista VARCHAR(80) not null,
    data_nascimento DATE,
    sexo char(01),
    fama varchar(50),
    fk_pais_id integer
);

CREATE TABLE gravadora (
    id INTEGER auto_increment PRIMARY KEY,
    nomeGravadora VARCHAR(60) not null,
    e_mail VARCHAR(30),
    telefone VARCHAR(14),
    contato VARCHAR(80),
    empresario VARCHAR(80),
    endereco VARCHAR(255),
    fk_pais_id integer
);

CREATE TABLE compositor (
    id INTEGER auto_increment PRIMARY KEY,
    nome_compositor VARCHAR(80) not null,
    data_nascimento DATE,
    genero char(01)
);

CREATE TABLE pais (
    id integer auto_increment PRIMARY KEY,
    nome_pais VARCHAR(80) not null,
    continente VARCHAR(20)
);
 
ALTER TABLE musica ADD CONSTRAINT FK_musica_2
    FOREIGN KEY (fk_idioma_id)
    REFERENCES idioma (id)
    ON DELETE CASCADE;
 
ALTER TABLE musica ADD CONSTRAINT FK_musica_3
    FOREIGN KEY (fk_artista_id)
    REFERENCES artista (id)
    ON DELETE CASCADE;
 
ALTER TABLE musica ADD CONSTRAINT FK_musica_4
    FOREIGN KEY (fk_compositor_id)
    REFERENCES compositor (id)
    ON DELETE RESTRICT;
 
ALTER TABLE musica ADD CONSTRAINT FK_musica_5
    FOREIGN KEY (fk_gravadora_id)
    REFERENCES gravadora (id)
    ON DELETE RESTRICT;
 
ALTER TABLE musica ADD CONSTRAINT FK_musica_6
    FOREIGN KEY (fk_album_id)
    REFERENCES album (id)
    ON DELETE RESTRICT;
 
ALTER TABLE musica ADD CONSTRAINT FK_musica_7
    FOREIGN KEY (fk_genero_codigo)
    REFERENCES genero (codigo)
    ON DELETE RESTRICT;
 
ALTER TABLE artista ADD CONSTRAINT FK_artista_2
    FOREIGN KEY (fk_pais_id)
    references pais (id);
    
