nombre VARCHAR(255) NOT NULL, categoria VARCHAR(255) NOT NULL, produccion_media DOUBLE PRECISION NOT NULL, produccion_maxima DOUBLE PRECISION NOT NULL, fecha_entrada_funcionamiento DATE NOT NULL );
CREATE TABLE central_hidroelectrica (
id_productor INTEGER REFERENCES productor (id_productor) NOT NULL, ocupacion VARCHAR(255) NOT NULL, capacidad_maxima DOUBLE PRECISION NOT NULL, numero_turbinas INTEGER NOT NULL );
CREATE TABLE central_solar (
id_productor INTEGER REFERENCES productor (id_productor) NOT NULL, superficie_total_paneles_solares DOUBLE PRECISION NOT NULL, horas_sol_anual DOUBLE PRECISION NOT NULL, tipo VARCHAR(255) NOT NULL );
CREATE TABLE central_nuclear (
id_productor INTEGER REFERENCES productor (id_productor) NOT NULL, numero_reactores INTEGER NOT NULL, volumen_plutonio_consumido DOUBLE PRECISION NOT NULL, volumen_residuos_nucleares_producidos DOUBLE PRECISION NOT NULL );
CREATE TABLE central_termica (
id_productor INTEGER REFERENCES productor (id_productor) NOT NULL, numero_hornos INTEGER NOT NULL, volumen_carbon_consumido DOUBLE PRECISION NOT NULL, volumen_emision_gases DOUBLE PRECISION NOT NULL );
CREATE TABLE suministrador (
id_suministrador SERIAL PRIMARY KEY, id_central_nuclear INTEGER REFERENCES central_nuclear (id_productor) NOT NULL, nombre_suministrador VARCHAR(255) NOT NULL, pais_suministrador VARCHAR(255) NOT NULL, nombre_transportista VARCHAR(255) NOT NULL, matricula_transportista VARCHAR(255) NOT NULL, cantidad DOUBLE PRECISION NOT NULL );
CREATE TABLE estacion_primaria (
id_estacion_primaria SERIAL PRIMARY KEY, nombre VARCHAR(255) NOT NULL, numero_transformadores_baja_alta_tension INTEGER NOT NULL );
CREATE TABLE red_distribucion (
id_red_distribucion SERIAL PRIMARY KEY, id_estacion_primaria INTEGER REFERENCES estacion_primaria (id_estacion_primaria) NOT NULL, numero_red INTEGER NOT NULL, nombre_compania_electrica VARCHAR(255) NOT NULL );
CREATE TABLE intercambio_energia (
id_intercambio_energia SERIAL PRIMARY KEY, id_red_origen INTEGER REFERENCES red_distribucion (id_red_distribucion) NOT NULL, id_red_destino INTEGER REFERENCES red_distribucion (id_red_distribucion) NOT NULL, volumen_energia DOUBLE PRECISION NOT NULL );
CREATE TABLE linea (
id_linea SERIAL PRIMARY KEY, id_red INTEGER REFERENCES red_distribucion (id_red) NOT NULL, numero_linea INTEGER NOT NULL, longitud DOUBLE PRECISION NOT NULL );
CREATE TABLE subestacion (
id_subestacion SERIAL PRIMARY KEY, id_linea INTEGER REFERENCES linea (id_linea) NOT NULL, provincia VARCHAR(255) NOT NULL, nombre VARCHAR(255) NOT NULL );
CREATE TABLE zona_servicio (
id_zona_servicio SERIAL PRIMARY KEY, id_subestacion INTEGER REFERENCES subestacion (id_subestacion) NOT NULL, consumo_medio DOUBLE PRECISION NOT NULL, particulares INTEGER NOT NULL, empresas INTEGER NOT NULL, instituciones INTEGER NOT NULL );
CREATE TABLE provincia (
id_provincia SERIAL PRIMARY KEY, codigo VARCHAR(255) NOT NULL, nombre VARCHAR(255) NOT NULL );
CREATE TABLE consumidor_final (
id_consumidor_final SERIAL PRIMARY KEY, id_zona_servicio INTEGER REFERENCES zona_servicio (id_zona_servicio) NOT NULL, categoria VARCHAR(255) NOT NULL, consumo_anual DOUBLE PRECISION NOT NULL );
CREATE TABLE transportista (
id_transportista SERIAL PRIMARY KEY, nombre VARCHAR(255) NOT NULL, matricula VARCHAR(255) NOT NULL );