-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsetup_database.sql
More file actions
146 lines (129 loc) · 5.2 KB
/
setup_database.sql
File metadata and controls
146 lines (129 loc) · 5.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
-- ===========================================
-- TAMARA Database Setup Script
-- ===========================================
-- Ejecutar como root en MariaDB:
-- mysql -u root -p < setup_database.sql
-- ===========================================
-- 1. Crear la base de datos
CREATE DATABASE IF NOT EXISTS tamara_db
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
-- 2. Crear usuario con password (CAMBIA 'tu_password_seguro')
CREATE USER IF NOT EXISTS 'tamara_user'@'localhost'
IDENTIFIED BY 'tu_password_seguro';
-- 3. Dar permisos de SOLO LECTURA
GRANT SELECT ON tamara_db.* TO 'tamara_user'@'localhost';
FLUSH PRIVILEGES;
-- 4. Usar la base de datos
USE tamara_db;
-- ===========================================
-- TABLAS DE EJEMPLO
-- ===========================================
-- Tabla: usuarios
CREATE TABLE IF NOT EXISTS usuarios (
id INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(100) NOT NULL,
email VARCHAR(150) UNIQUE NOT NULL,
rol ENUM('admin', 'usuario', 'invitado') DEFAULT 'usuario',
activo BOOLEAN DEFAULT TRUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Tabla: productos
CREATE TABLE IF NOT EXISTS productos (
id INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(200) NOT NULL,
descripcion TEXT,
precio DECIMAL(10, 2) NOT NULL,
stock INT DEFAULT 0,
categoria VARCHAR(50),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Tabla: pedidos
CREATE TABLE IF NOT EXISTS pedidos (
id INT AUTO_INCREMENT PRIMARY KEY,
usuario_id INT NOT NULL,
total DECIMAL(10, 2) NOT NULL,
estado ENUM('pendiente', 'procesando', 'enviado', 'entregado', 'cancelado') DEFAULT 'pendiente',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
);
-- Tabla: detalle_pedidos
CREATE TABLE IF NOT EXISTS detalle_pedidos (
id INT AUTO_INCREMENT PRIMARY KEY,
pedido_id INT NOT NULL,
producto_id INT NOT NULL,
cantidad INT NOT NULL,
precio_unitario DECIMAL(10, 2) NOT NULL,
FOREIGN KEY (pedido_id) REFERENCES pedidos(id),
FOREIGN KEY (producto_id) REFERENCES productos(id)
);
-- ===========================================
-- DATOS DE EJEMPLO
-- ===========================================
-- Usuarios de ejemplo
INSERT INTO usuarios (nombre, email, rol, activo) VALUES
('Ana García', 'ana@ejemplo.com', 'admin', TRUE),
('Carlos López', 'carlos@ejemplo.com', 'usuario', TRUE),
('María Rodríguez', 'maria@ejemplo.com', 'usuario', TRUE),
('Pedro Martínez', 'pedro@ejemplo.com', 'usuario', FALSE),
('Laura Fernández', 'laura@ejemplo.com', 'invitado', TRUE),
('Diego Sánchez', 'diego@ejemplo.com', 'usuario', TRUE),
('Sofía Torres', 'sofia@ejemplo.com', 'usuario', TRUE),
('Miguel Ruiz', 'miguel@ejemplo.com', 'admin', TRUE),
('Lucía Morales', 'lucia@ejemplo.com', 'usuario', TRUE),
('Andrés Díaz', 'andres@ejemplo.com', 'invitado', TRUE);
-- Productos de ejemplo
INSERT INTO productos (nombre, descripcion, precio, stock, categoria) VALUES
('Laptop HP Pavilion', 'Laptop 15.6" Intel Core i5, 8GB RAM', 899.99, 15, 'Electrónica'),
('Mouse Logitech MX', 'Mouse inalámbrico ergonómico', 79.99, 50, 'Accesorios'),
('Teclado Mecánico RGB', 'Teclado gaming con switches Cherry MX', 129.99, 30, 'Accesorios'),
('Monitor Samsung 27"', 'Monitor 4K UHD con HDR', 449.99, 20, 'Electrónica'),
('Webcam HD 1080p', 'Cámara web con micrófono integrado', 59.99, 45, 'Accesorios'),
('Auriculares Sony WH', 'Auriculares Bluetooth con ANC', 299.99, 25, 'Audio'),
('Parlante JBL Flip', 'Parlante Bluetooth portátil', 99.99, 40, 'Audio'),
('Cable USB-C 2m', 'Cable de carga rápida', 14.99, 100, 'Cables'),
('Hub USB 7 puertos', 'Hub USB 3.0 con alimentación', 34.99, 35, 'Accesorios'),
('Mousepad XL Gaming', 'Mousepad extendido 90x40cm', 24.99, 60, 'Accesorios');
-- Pedidos de ejemplo
INSERT INTO pedidos (usuario_id, total, estado) VALUES
(1, 979.98, 'entregado'),
(2, 129.99, 'enviado'),
(3, 549.98, 'procesando'),
(4, 79.99, 'cancelado'),
(5, 399.98, 'pendiente'),
(6, 1349.97, 'entregado'),
(7, 59.99, 'enviado'),
(2, 164.98, 'pendiente');
-- Detalle de pedidos
INSERT INTO detalle_pedidos (pedido_id, producto_id, cantidad, precio_unitario) VALUES
(1, 1, 1, 899.99),
(1, 2, 1, 79.99),
(2, 3, 1, 129.99),
(3, 4, 1, 449.99),
(3, 5, 1, 59.99),
(3, 8, 2, 14.99),
(4, 2, 1, 79.99),
(5, 6, 1, 299.99),
(5, 7, 1, 99.99),
(6, 1, 1, 899.99),
(6, 4, 1, 449.99),
(7, 5, 1, 59.99),
(8, 3, 1, 129.99),
(8, 9, 1, 34.99);
-- ===========================================
-- VERIFICACIÓN
-- ===========================================
SELECT 'Tablas creadas:' AS mensaje;
SHOW TABLES;
SELECT 'Conteo de registros:' AS mensaje;
SELECT
(SELECT COUNT(*) FROM usuarios) AS usuarios,
(SELECT COUNT(*) FROM productos) AS productos,
(SELECT COUNT(*) FROM pedidos) AS pedidos,
(SELECT COUNT(*) FROM detalle_pedidos) AS detalles;
-- ===========================================
-- ¡LISTO! Ahora puedes probar con TAMARA:
-- "¿Cuántos usuarios hay?"
-- "¿Qué productos tienen stock mayor a 30?"
-- "¿Cuáles son los pedidos pendientes?"
-- ===========================================