123 lines
2.9 KiB
SQL
123 lines
2.9 KiB
SQL
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)
|
|
);
|