Repository navigation
Expand file tree
/
Copy pathProject Delivery.sql
More file actions
167 lines (136 loc) · 3.79 KB
/
Copy pathProject Delivery.sql
File metadata and controls
167 lines (136 loc) · 3.79 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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
CREATE DATABASE delivery_system;
USE delivery_system;
CREATE TABLE state (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
abbreviation CHAR(2) NOT NULL,
population INT
);
CREATE TABLE city (
id INT AUTO_INCREMENT PRIMARY KEY,
state_id INT NOT NULL,
name VARCHAR(100) NOT NULL,
population INT,
CONSTRAINT fk_city_state
FOREIGN KEY (state_id)
REFERENCES state(id)
ON DELETE RESTRICT
ON UPDATE CASCADE
);
CREATE TABLE restaurant (
id INT AUTO_INCREMENT PRIMARY KEY,
city_id INT NOT NULL,
corporate_reason VARCHAR(150) NOT NULL,
fantasy_name VARCHAR(150),
address VARCHAR(200),
telephone VARCHAR(20),
CONSTRAINT fk_restaurant_city
FOREIGN KEY (city_id)
REFERENCES city(id)
ON DELETE RESTRICT
ON UPDATE CASCADE
);
CREATE TABLE customer (
id INT AUTO_INCREMENT PRIMARY KEY,
city_id INT NOT NULL,
name VARCHAR(150) NOT NULL,
email VARCHAR(150) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
date_birth DATE,
gender VARCHAR(20),
telephone VARCHAR(20),
road VARCHAR(150),
zip_code VARCHAR(15),
neighborhood VARCHAR(100),
complement VARCHAR(100),
property_number VARCHAR(20),
reference_point VARCHAR(150),
CONSTRAINT fk_customer_city
FOREIGN KEY (city_id)
REFERENCES city(id)
ON DELETE RESTRICT
ON UPDATE CASCADE
);
CREATE TABLE deliveryman (
id INT AUTO_INCREMENT PRIMARY KEY,
city_id INT NOT NULL,
cnh VARCHAR(20) NOT NULL UNIQUE,
name VARCHAR(150) NOT NULL,
address VARCHAR(200),
telephone VARCHAR(20),
CONSTRAINT fk_deliveryman_city
FOREIGN KEY (city_id)
REFERENCES city(id)
ON DELETE RESTRICT
ON UPDATE CASCADE
);
CREATE TABLE employee (
id INT AUTO_INCREMENT PRIMARY KEY,
restaurant_id INT NOT NULL,
city_id INT NOT NULL,
name VARCHAR(150) NOT NULL,
email VARCHAR(150),
password VARCHAR(255),
address VARCHAR(200),
telephone VARCHAR(20),
admission_date DATE,
date_birth DATE,
CONSTRAINT fk_employee_restaurant
FOREIGN KEY (restaurant_id)
REFERENCES restaurant(id)
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT fk_employee_city
FOREIGN KEY (city_id)
REFERENCES city(id)
ON DELETE RESTRICT
ON UPDATE CASCADE
);
CREATE TABLE product (
id INT AUTO_INCREMENT PRIMARY KEY,
description VARCHAR(200) NOT NULL,
unit_value DECIMAL(10,2) NOT NULL,
stock INT DEFAULT 0,
type VARCHAR(50)
);
CREATE TABLE `order` (
id INT AUTO_INCREMENT PRIMARY KEY,
customer_id INT NOT NULL,
restaurant_id INT NOT NULL,
deliveryman_id INT NULL,
order_date DATETIME DEFAULT CURRENT_TIMESTAMP,
total_order DECIMAL(10,2),
CONSTRAINT fk_order_customer
FOREIGN KEY (customer_id)
REFERENCES customer(id)
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT fk_order_restaurant
FOREIGN KEY (restaurant_id)
REFERENCES restaurant(id)
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT fk_order_deliveryman
FOREIGN KEY (deliveryman_id)
REFERENCES deliveryman(id)
ON DELETE SET NULL
ON UPDATE CASCADE
);
CREATE TABLE order_product (
order_id INT NOT NULL,
product_id INT NOT NULL,
product_quantity INT NOT NULL,
discount DECIMAL(10,2) DEFAULT 0,
unit_value DECIMAL(10,2) NOT NULL,
PRIMARY KEY (order_id, product_id),
CONSTRAINT fk_op_order
FOREIGN KEY (order_id)
REFERENCES `order`(id)
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT fk_op_product
FOREIGN KEY (product_id)
REFERENCES product(id)
ON DELETE CASCADE
ON UPDATE CASCADE
);