CREATE DATABASE libreria;
USE libreria;
-- DROP DATABASE `libreria`;

CREATE TABLE Clientes (
	Id_Cliente INT AUTO_INCREMENT PRIMARY KEY,
    nombre VARCHAR(20) NOT NULL,
    apellido VARCHAR(20) NOT NULL,
    email VARCHAR(50),
    sexo CHAR(1) NOT NULL,
    direccion VARCHAR(50)
);

CREATE TABLE Autores (
    Id_Autor INT NOT NULL,
    nombre VARCHAR(20) NOT NULL,
    apellido VARCHAR(20) NOT NULL,
    PRIMARY KEY (nombre, apellido),
    INDEX idx_Id_Autor (Id_Autor)  -- Agregamos un índice a Id_Autor
);

CREATE TABLE Libros (
    Id_SKU_Libro VARCHAR(50) PRIMARY KEY,
    Fk_Autor INT,
    FOREIGN KEY (Fk_Autor) REFERENCES Autores(Id_Autor),
    titulo VARCHAR(50) NOT NULL,
    categoria VARCHAR(20) NOT NULL,
    formato VARCHAR(20)
);


CREATE TABLE Revistas (
	Id_SKU_Revista VARCHAR(50) PRIMARY KEY,
    Fk_Autor INT NOT NULL,
    FOREIGN KEY (Fk_Autor) REFERENCES Autores(Id_Autor),
    titulo VARCHAR(50) NOT NULL,
    genero VARCHAR(20) NOT NULL,
    volumen INT
);

CREATE TABLE Editoriales (
    Id_Editorial INT AUTO_INCREMENT PRIMARY KEY,
    Fk_SKU_Libro VARCHAR(50),
    FOREIGN KEY (Fk_SKU_Libro) REFERENCES Libros(Id_SKU_Libro),
    Fk_SKU_Revista VARCHAR(50),
    FOREIGN KEY (Fk_SKU_Revista) REFERENCES Revistas(Id_SKU_Revista),
    nombre VARCHAR(20) NOT NULL,
    vencimiento_contrato DATE NOT NULL
);

CREATE TABLE Vinilos (
	Id_SKU_Vinilo VARCHAR(50) PRIMARY KEY,
    Fk_Autor INT,
    FOREIGN KEY (Fk_Autor) REFERENCES Autores(Id_Autor),
    album VARCHAR(50) NOT NULL,
    genero VARCHAR(20) NOT NULL
);

CREATE TABLE Sello_Discografico (
    Id_SD INT AUTO_INCREMENT PRIMARY KEY,
    Fk_SKU_Vinilo VARCHAR(50),
    FOREIGN KEY (Fk_SKU_Vinilo) REFERENCES Vinilos (Id_SKU_Vinilo),
    nombre VARCHAR(20) NOT NULL,
    vencimiento_contrato DATE NOT NULL
);

CREATE TABLE Productos (
	Id_SKU VARCHAR(50) PRIMARY KEY, -- SKU es Stock-keeping unit y es lo que usan las empresas para identificar a los productos.auto_incrementar a los productos
    precio DOUBLE NOT NULL,
    fecha_lanzamiento DATE,
    stock INT NOT NULL
);

CREATE TABLE Ventas (
	Id_Venta INT AUTO_INCREMENT PRIMARY KEY,
    Fk_Cliente INT,
    FOREIGN KEY (Fk_Cliente) REFERENCES Clientes(Id_Cliente),
    Fk_SKU VARCHAR(50),
    FOREIGN KEY (Fk_SKU) REFERENCES Productos(Id_SKU),
    fecha_venta DATE NOT NULL
);

CREATE TABLE Facturas (
    Id_Factura INT AUTO_INCREMENT PRIMARY KEY,
    Fk_Cliente INT,
    FOREIGN KEY (Fk_Cliente) REFERENCES Clientes(Id_Cliente),
    numero INT NOT NULL
);



