CREATE DATABASE IF NOT EXISTS fauna;
USE fauna;

CREATE TABLE clases (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nombre VARCHAR(50) NOT NULL
);

CREATE TABLE familias (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nombre VARCHAR(50) NOT NULL,
    clase_id INT,
    FOREIGN KEY (clase_id) REFERENCES clases(id)
);

CREATE TABLE habitats (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nombre VARCHAR(50) NOT NULL,
    clima VARCHAR(50)
);

CREATE TABLE especies (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nombre_comun VARCHAR(100) NOT NULL,
    nombre_cientifico VARCHAR(100),
    familia_id INT,
    estado_conservacion VARCHAR(20),
    poblacion_estimada INT,
    FOREIGN KEY (familia_id) REFERENCES familias(id)
);

CREATE TABLE especie_habitat (
    especie_id INT,
    habitat_id INT,
    PRIMARY KEY (especie_id, habitat_id),
    FOREIGN KEY (especie_id) REFERENCES especies(id) ON DELETE CASCADE,
    FOREIGN KEY (habitat_id) REFERENCES habitats(id) ON DELETE CASCADE
);

INSERT INTO clases (nombre) VALUES ('Mammalia'), ('Aves'), ('Reptilia');
INSERT INTO familias (nombre, clase_id) VALUES ('Felidae', 1), ('Elephantidae', 1), ('Psittacidae', 2), ('Crocodylidae', 3);
INSERT INTO habitats (nombre, clima) VALUES ('Selva', 'Húmedo'), ('Sabana', 'Cálido'), ('Océano', 'Templado');
INSERT INTO especies (nombre_comun, nombre_cientifico, familia_id, estado_conservacion, poblacion_estimada) 
VALUES ('Tigre', 'Panthera tigris', 1, 'En peligro', 3800), ('León', 'Panthera leo', 1, 'Vulnerable', 20000);
INSERT INTO especie_habitat VALUES (1,1), (2,2);
