CREATE TABLE productos ( id INT AUTO_INCREMENT PRIMARY KEY, nombre VARCHAR(255) NOT NULL, marca_id INT FOREIGN KEY REFERENCES marcas(id), codigo_barras VARCHAR(13) NOT NULL UNIQUE ); CREATE TABLE marcas ( id INT AUTO_INCREMENT PRIMARY KEY, nombre VARCHAR(255) NOT NULL ); CREATE TABLE tickets ( id INT AUTO_INCREMENT PRIMARY KEY, tienda_id INT, fecha DATE NOT NULL, total DECIMAL(10, 2), metodo_pago VARCHAR(50) ); CREATE TABLE supermercados ( -- Solo la cadena de supermercados, no la tienda id INT AUTO_INCREMENT PRIMARY KEY, nombre VARCHAR (50) NOT NULL ); CREATE TABLE tiendas ( -- La tienda concreta, con su dirección id INT AUTO_INCREMENT PRIMARY KEY, nombre VARCHAR(255) NOT NULL, supermercado_id INT, direccion_id INT, -- Relaciona con la tabla direcciones FOREIGN KEY (supermercado_id) REFERENCES supermercados(id) ON DELETE CASCADE, FOREIGN KEY (direccion_id) REFERENCES direcciones(id) ON DELETE CASCADE ); CREATE TABLE direcciones ( id INT AUTO_INCREMENT PRIMARY KEY, direccion VARCHAR(255) NOT NULL, codigo_postal VARCHAR(5) ); CREATE TABLE poblaciones ( id INT AUTO_INCREMENT PRIMARY KEY, -- Codigo postal de la poblacion nombre VARCHAR(255) NOT NULL ); CREATE TABLE provincias ( id INT AUTO_INCREMENT PRIMARY KEY, -- Los dos primeros digitos del codigo postal de la provincia nombre VARCHAR(255) NOT NULL ); INSERT INTO provincias (id, nombre) VALUES (1, 'Álava'), (2, 'Albacete'), (3, 'Alicante'), (4, 'Almería'), (5, 'Ávila'), (6, 'Badajoz'), (7, 'Islas Baleares'), (8, 'Barcelona'), (9, 'Burgos'), (10, 'Cáceres'), (11, 'Cádiz'), (12, 'Castellón'), (13, 'Ciudad Real'), (14, 'Córdoba'), (15, 'La Coruña'), (16, 'Cuenca'), (17, 'Gerona'), (18, 'Granada'), (19, 'Guadalajara'), (20, 'Guipúzcoa'), (21, 'Huelva'), (22, 'Huesca'), (23, 'Jaén'), (24, 'León'), (25, 'Lérida'), (26, 'La Rioja'), (27, 'Lugo'), (28, 'Madrid'), (29, 'Málaga'), (30, 'Murcia'), (31, 'Navarra'), (32, 'Ourense'), (33, 'Asturias'), (34, 'Palencia'), (35, 'Las Palmas'), (36, 'Pontevedra'), (37, 'Salamanca'), (38, 'Santa Cruz de Tenerife'), (39, 'Cantabria'), (40, 'Segovia'), (41, 'Sevilla'), (42, 'Soria'), (43, 'Tarragona'), (44, 'Teruel'), (45, 'Toledo'), (46, 'Valencia'), (47, 'Valladolid'), (48, 'Vizcaya'), (49, 'Zamora'), (50, 'Zaragoza'), (51, 'Ceuta'), (52, 'Melilla'); CREATE TABLE lineas_ticket ( id INT AUTO_INCREMENT PRIMARY KEY, ticket_id INT, producto_id INT, cantidad INT, precio_unitario DECIMAL(10, 2), FOREIGN KEY (ticket_id) REFERENCES tickets(id) ON DELETE CASCADE, FOREIGN KEY (producto_id) REFERENCES productos(id) ON DELETE CASCADE ); -- OPCIONAL: Si en el futuro quiero tener varios perfiles o compartir la app CREATE TABLE usuarios ( id INT AUTO_INCREMENT PRIMARY KEY, nombre VARCHAR(100), email VARCHAR(100), password_hash VARCHAR(255) );