CREATE DATABASE IF NOT EXISTS crm CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; USE crm; CREATE TABLE IF NOT EXISTS direcciones ( id BIGINT PRIMARY KEY AUTO_INCREMENT, calle VARCHAR(255), numero VARCHAR(50), piso VARCHAR(50), ciudad VARCHAR(100), provincia VARCHAR(100), codigo_postal VARCHAR(20) ); CREATE TABLE IF NOT EXISTS propietarios ( id BIGINT PRIMARY KEY AUTO_INCREMENT, nombre VARCHAR(255) NOT NULL, telefono VARCHAR(50), email VARCHAR(255), direccion_id BIGINT, FOREIGN KEY (direccion_id) REFERENCES direcciones(id) ); CREATE TABLE IF NOT EXISTS proveedores ( id BIGINT PRIMARY KEY AUTO_INCREMENT, nombre VARCHAR(255) NOT NULL, telefono VARCHAR(50), email VARCHAR(255), direccion_id BIGINT, FOREIGN KEY (direccion_id) REFERENCES direcciones(id) ); CREATE TABLE IF NOT EXISTS contacto_proveedor ( id BIGINT PRIMARY KEY AUTO_INCREMENT, proveedor_id BIGINT NOT NULL, nombre VARCHAR(255) NOT NULL, telefono VARCHAR(50), email VARCHAR(255), FOREIGN KEY (proveedor_id) REFERENCES proveedores(id) ); CREATE TABLE IF NOT EXISTS servicios ( id BIGINT PRIMARY KEY AUTO_INCREMENT, nombre VARCHAR(255) NOT NULL, descripcion TEXT, proveedor_id BIGINT, FOREIGN KEY (proveedor_id) REFERENCES proveedores(id) ); CREATE TABLE IF NOT EXISTS inmuebles ( id BIGINT PRIMARY KEY AUTO_INCREMENT, referencia_catastral VARCHAR(255) UNIQUE, descripcion TEXT, precio DECIMAL(15,2), estado VARCHAR(100), direccion_id BIGINT, propietario_id BIGINT, FOREIGN KEY (direccion_id) REFERENCES direcciones(id), FOREIGN KEY (propietario_id) REFERENCES propietarios(id) ); CREATE TABLE IF NOT EXISTS contratos ( id BIGINT PRIMARY KEY AUTO_INCREMENT, inmueble_id BIGINT NOT NULL, propietario_id BIGINT NOT NULL, tipo VARCHAR(50), fecha_inicio DATE, fecha_fin DATE, importe DECIMAL(15,2), estado VARCHAR(50), cliente_nombre VARCHAR(255), FOREIGN KEY (inmueble_id) REFERENCES inmuebles(id), FOREIGN KEY (propietario_id) REFERENCES propietarios(id) ); CREATE TABLE IF NOT EXISTS compran ( id BIGINT PRIMARY KEY AUTO_INCREMENT, inmueble_id BIGINT NOT NULL, comprador_nombre VARCHAR(255), fecha_compra DATE, precio_compra DECIMAL(15,2), FOREIGN KEY (inmueble_id) REFERENCES inmuebles(id) ); CREATE TABLE IF NOT EXISTS alquilados ( id BIGINT PRIMARY KEY AUTO_INCREMENT, inmueble_id BIGINT NOT NULL, inquilino_nombre VARCHAR(255), fecha_inicio DATE, fecha_fin DATE, renta_mensual DECIMAL(15,2), FOREIGN KEY (inmueble_id) REFERENCES inmuebles(id) ); CREATE TABLE IF NOT EXISTS users ( id BIGINT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(255) NOT NULL UNIQUE, password VARCHAR(255) NOT NULL, role VARCHAR(50) NOT NULL, enabled BOOLEAN NOT NULL DEFAULT TRUE );