-
Notifications
You must be signed in to change notification settings - Fork 0
/
create database.sql
105 lines (91 loc) · 3.15 KB
/
create database.sql
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
CREATE DATABASE IF NOT EXISTS mediterrum;
USE mediterrum;
CREATE TABLE usuarios (
id INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(60) NOT NULL,
email VARCHAR(50) NOT NULL,
telefono VARCHAR(15) NOT NULL,
locacion VARCHAR(50),
rol ENUM('promotor', 'vendedor', 'distribuidor', 'administrador') NOT NULL,
puntos_total INT,
nivel ENUM('N1 Plata', 'N2 Oro', 'N3 Platino', 'N4 Zafiro', 'N5 Esmeralda', 'N6 Diamante'),
distribuidor INT,
vendedor INT,
contrasena VARCHAR(20),
CONSTRAINT u_unique_email UNIQUE (email),
CONSTRAINT u_unique_telefono UNIQUE (telefono)
);
ALTER TABLE usuarios
ADD CONSTRAINT fk_vendedor_de_usuario FOREIGN KEY (vendedor) REFERENCES usuarios(id),
ADD CONSTRAINT fk_distribuidor_de_usuario FOREIGN KEY (distribuidor) REFERENCES usuarios(id);
CREATE TABLE carrito (
id INT PRIMARY KEY AUTO_INCREMENT,
usuario INT,
CONSTRAINT fk_carrito_usuario FOREIGN KEY (usuario) REFERENCES usuarios(id)
);
CREATE TABLE historial (
id INT AUTO_INCREMENT PRIMARY KEY,
usuario INT NOT NULL,
fecha DATE NOT NULL,
descripcion VARCHAR(100),
CONSTRAINT fk_usuario_historial FOREIGN KEY (usuario) REFERENCES usuarios(id)
);
CREATE TABLE productos (
sku VARCHAR(20) PRIMARY KEY,
nombre_producto VARCHAR(30) NOT NULL,
costo_total INT NOT NULL,
costo_no_iva INT NOT NULL,
img VARCHAR(100),
descripcion VARCHAR(150),
descuento INT,
puntos_producto INT,
cantidad_inventario INT NOT NULL
);
CREATE TABLE carrito_producto (
carrito INT,
producto VARCHAR(20),
cantidad INT NOT NULL,
PRIMARY KEY (carrito, producto),
CONSTRAINT fk_carprod_carrito FOREIGN KEY (carrito) REFERENCES carrito(id),
CONSTRAINT fk_carprod_producto FOREIGN KEY (producto) REFERENCES productos(sku)
);
CREATE TABLE ventas (
id INT AUTO_INCREMENT PRIMARY KEY,
usuario INT NOT NULL,
carrito JSON,
costo_total FLOAT,
fecha_venta DATE NOT NULL,
fecha_entrega DATE NOT NULL,
lugar_entrega VARCHAR(100) NOT NULL,
puntos_venta INT NOT NULL,
CONSTRAINT fk_usuario_ventas FOREIGN KEY (usuario) REFERENCES usuarios(id)
);
CREATE TABLE clientes (
id INT AUTO_INCREMENT PRIMARY KEY,
usuario INT,
nombre VARCHAR(60) NOT NULL,
email VARCHAR(30) NOT NULL,
telefono VARCHAR(15),
locacion VARCHAR(50),
intereses VARCHAR(50),
CONSTRAINT c_unique_email UNIQUE (email),
CONSTRAINT c_unique_telefono UNIQUE (telefono),
CONSTRAINT fk_usuario_clientes FOREIGN KEY (usuario) REFERENCES usuarios(id)
);
CREATE TABLE comisiones (
rol ENUM('vendedor', 'promotor', 'base', 'eventos', 'premios', 'distribuidor N1', 'distribuidor N2', 'distribuidor N3', 'distribuidor N4', 'distribuidor N5', 'distribuidor DD') NOT NULL,
porcentaje DECIMAL(4,1) NOT NULL
);
INSERT INTO comisiones (rol, porcentaje) VALUES
('base', 50.0),
('eventos', 5.0),
('premios', 5.0),
('promotor', 5.0),
('vendedor', 15.0),
('distribuidor N1', 4.0),
('distribuidor N2', 3.0),
('distribuidor N3', 3.0),
('distribuidor N4', 3.0),
('distribuidor N5', 3.0),
('distribuidor DD', 4.0);
-- comision 'bolsa' se calcula (20 - porcentaje de distribuidor)