memberflow-docker/Documentación/DB_Design/db_creation/db_creation_script.csv

10 KiB

1-- MySQL Workbench Forward Engineering
2SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
3SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
4SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
5-- -----------------------------------------------------
6-- Schema mf_db
7-- -----------------------------------------------------
8-- -----------------------------------------------------
9-- Schema mf_db
10-- -----------------------------------------------------
11CREATE SCHEMA IF NOT EXISTS mf_db DEFAULT CHARACTER SET utf8 ;
12USE mf_db ;
13-- -----------------------------------------------------
14-- Table mf_db.USERS
15-- -----------------------------------------------------
16CREATE TABLE IF NOT EXISTS mf_db.USERS (
17 id INT NOT NULL AUTO_INCREMENT,
18 name VARCHAR(50) NOT NULL,
19 surname VARCHAR(50) NOT NULL,
20 email VARCHAR(100) NOT NULL,
21 password VARCHAR(255) NOT NULL,
22 role VARCHAR(45) NULL,
23 register_date DATETIME NULL,
24 status VARCHAR(20) NOT NULL,
25 PRIMARY KEY (id),
26 UNIQUE INDEX email_UNIQUE (email ASC) )
27ENGINE = InnoDB;
28-- -----------------------------------------------------
29-- Table mf_db.STUDENTS
30-- -----------------------------------------------------
31CREATE TABLE IF NOT EXISTS mf_db.STUDENTS (
32 id INT NOT NULL AUTO_INCREMENT,
33 fk_user INT NOT NULL,
34 dni VARCHAR(10) NOT NULL,
35 birthdate DATE NOT NULL,
36 belt VARCHAR(20) NULL,
37 progress TEXT NULL,
38 status VARCHAR(20) NOT NULL,
39 PRIMARY KEY (id),
40 INDEX fk_STUDENTS_USERS1_idx (fk_user ASC) ,
41 UNIQUE INDEX dni_UNIQUE (dni ASC) ,
42 CONSTRAINT fk_STUDENTS_USERS1
43 FOREIGN KEY (fk_user)
44 REFERENCES mf_db.USERS (id)
45 ON DELETE NO ACTION
46 ON UPDATE NO ACTION)
47ENGINE = InnoDB;
48-- -----------------------------------------------------
49-- Table mf_db.TEACHERS
50-- -----------------------------------------------------
51CREATE TABLE IF NOT EXISTS mf_db.TEACHERS (
52 id INT NOT NULL AUTO_INCREMENT,
53 fk_user INT NOT NULL,
54 discipline VARCHAR(50) NULL,
55 status VARCHAR(20) NOT NULL,
56 PRIMARY KEY (id),
57 INDEX fk_TEACHERS_USERS1_idx (fk_user ASC) ,
58 CONSTRAINT fk_TEACHERS_USERS1
59 FOREIGN KEY (fk_user)
60 REFERENCES mf_db.USERS (id)
61 ON DELETE NO ACTION
62 ON UPDATE NO ACTION)
63ENGINE = InnoDB;
64-- -----------------------------------------------------
65-- Table mf_db.GROUPS
66-- -----------------------------------------------------
67CREATE TABLE IF NOT EXISTS mf_db.GROUPS (
68 id INT NOT NULL AUTO_INCREMENT,
69 fk_teacher INT NOT NULL,
70 name VARCHAR(45) NOT NULL,
71 level VARCHAR(45) NULL,
72 schedule DATETIME NULL,
73 status VARCHAR(20) NOT NULL,
74 PRIMARY KEY (id),
75 INDEX fk_GROUPS_TEACHERS1_idx (fk_teacher ASC) ,
76 CONSTRAINT fk_GROUPS_TEACHERS1
77 FOREIGN KEY (fk_teacher)
78 REFERENCES mf_db.TEACHERS (id)
79 ON DELETE NO ACTION
80 ON UPDATE NO ACTION)
81ENGINE = InnoDB;
82-- -----------------------------------------------------
83-- Table mf_db.TRAINING_SESSIONS
84-- -----------------------------------------------------
85CREATE TABLE IF NOT EXISTS mf_db.TRAINING_SESSIONS (
86 id INT NOT NULL AUTO_INCREMENT,
87 fk_grupo INT NOT NULL,
88 date_time DATETIME NULL,
89 status VARCHAR(50) NULL,
90 PRIMARY KEY (id),
91 INDEX fk_CLASSES_GROUPS1_idx (fk_grupo ASC) ,
92 CONSTRAINT fk_CLASSES_GROUPS1
93 FOREIGN KEY (fk_grupo)
94 REFERENCES mf_db.GROUPS (id)
95 ON DELETE NO ACTION
96 ON UPDATE NO ACTION)
97ENGINE = InnoDB;
98-- -----------------------------------------------------
99-- Table mf_db.INVOICES
100-- -----------------------------------------------------
101CREATE TABLE IF NOT EXISTS mf_db.INVOICES (
102 id INT NOT NULL AUTO_INCREMENT,
103 fk_student INT NOT NULL,
104 date DATETIME NOT NULL,
105 total DECIMAL(10,2) NOT NULL,
106 status VARCHAR(20) NOT NULL,
107 PRIMARY KEY (id),
108 INDEX fk_INVOICES_STUDENTS1_idx (fk_student ASC) ,
109 CONSTRAINT fk_INVOICES_STUDENTS1
110 FOREIGN KEY (fk_student)
111 REFERENCES mf_db.STUDENTS (id)
112 ON DELETE NO ACTION
113 ON UPDATE NO ACTION)
114ENGINE = InnoDB;
115-- -----------------------------------------------------
116-- Table mf_db.IVA_TYPE
117-- -----------------------------------------------------
118CREATE TABLE IF NOT EXISTS mf_db.IVA_TYPE (
119 id INT NOT NULL AUTO_INCREMENT,
120 percentage DECIMAL(10,2) NOT NULL,
121 description VARCHAR(50) NULL,
122 PRIMARY KEY (id))
123ENGINE = InnoDB;
124-- -----------------------------------------------------
125-- Table mf_db.PRODUCTS_SERVICES
126-- -----------------------------------------------------
127CREATE TABLE IF NOT EXISTS mf_db.PRODUCTS_SERVICES (
128 id INT NOT NULL AUTO_INCREMENT,
129 fk_iva_type INT NOT NULL,
130 name VARCHAR(100) NOT NULL,
131 description VARCHAR(250) NULL,
132 price DECIMAL(10,2) NOT NULL,
133 type VARCHAR(45) NOT NULL,
134 status VARCHAR(20) NULL,
135 PRIMARY KEY (id),
136 INDEX fk_PRODUCTS_SERVICES_IVA_TYPE1_idx (fk_iva_type ASC) ,
137 CONSTRAINT fk_PRODUCTS_SERVICES_IVA_TYPE1
138 FOREIGN KEY (fk_iva_type)
139 REFERENCES mf_db.IVA_TYPE (id)
140 ON DELETE NO ACTION
141 ON UPDATE NO ACTION)
142ENGINE = InnoDB;
143-- -----------------------------------------------------
144-- Table mf_db.INVOICE_LINES
145-- -----------------------------------------------------
146CREATE TABLE IF NOT EXISTS mf_db.INVOICE_LINES (
147 id INT NOT NULL AUTO_INCREMENT,
148 fk_invoice INT NOT NULL,
149 fk_product_service INT NOT NULL,
150 description TEXT NULL,
151 quantity DECIMAL(10,2) NOT NULL,
152 unit_price DECIMAL(10,2) NOT NULL,
153 subtotal DECIMAL(10,2) NOT NULL,
154 PRIMARY KEY (id),
155 INDEX fk_INVOICE_LINES_INVOICES_idx (fk_invoice ASC) ,
156 INDEX fk_INVOICE_LINES_PRODUCTS_SERVICES1_idx (fk_product_service ASC) ,
157 CONSTRAINT fk_INVOICE_LINES_INVOICES
158 FOREIGN KEY (fk_invoice)
159 REFERENCES mf_db.INVOICES (id)
160 ON DELETE NO ACTION
161 ON UPDATE NO ACTION,
162 CONSTRAINT fk_INVOICE_LINES_PRODUCTS_SERVICES1
163 FOREIGN KEY (fk_product_service)
164 REFERENCES mf_db.PRODUCTS_SERVICES (id)
165 ON DELETE NO ACTION
166 ON UPDATE NO ACTION)
167ENGINE = InnoDB;
168-- -----------------------------------------------------
169-- Table mf_db.NOTIFICATIONS
170-- -----------------------------------------------------
171CREATE TABLE IF NOT EXISTS mf_db.NOTIFICATIONS (
172 id INT NOT NULL AUTO_INCREMENT,
173 fk_user INT NOT NULL,
174 title VARCHAR(200) NULL,
175 message TEXT NULL,
176 shipping_date DATETIME NULL,
177 type VARCHAR(100) NULL,
178 status VARCHAR(50) NULL,
179 PRIMARY KEY (id),
180 INDEX fk_NOTIFICATIONS_USERS1_idx (fk_user ASC) ,
181 CONSTRAINT fk_NOTIFICATIONS_USERS1
182 FOREIGN KEY (fk_user)
183 REFERENCES mf_db.USERS (id)
184 ON DELETE NO ACTION
185 ON UPDATE NO ACTION)
186ENGINE = InnoDB;
187-- -----------------------------------------------------
188-- Table mf_db.STUDENT_HISTORY
189-- -----------------------------------------------------
190CREATE TABLE IF NOT EXISTS mf_db.STUDENT_HISTORY (
191 id INT NOT NULL AUTO_INCREMENT,
192 fk_student INT NOT NULL,
193 event_date DATE NULL,
194 event_type VARCHAR(200) NULL,
195 description TEXT NULL,
196 PRIMARY KEY (id),
197 INDEX fk_STUDENT_HISTORY_STUDENTS1_idx (fk_student ASC) ,
198 CONSTRAINT fk_STUDENT_HISTORY_STUDENTS1
199 FOREIGN KEY (fk_student)
200 REFERENCES mf_db.STUDENTS (id)
201 ON DELETE NO ACTION
202 ON UPDATE NO ACTION)
203ENGINE = InnoDB;
204-- -----------------------------------------------------
205-- Table mf_db.STUDENTS_GROUPS
206-- -----------------------------------------------------
207CREATE TABLE IF NOT EXISTS mf_db.STUDENTS_GROUPS (
208 fk_student INT NOT NULL,
209 fk_group INT NOT NULL,
210 inscription_date DATE NOT NULL,
211 PRIMARY KEY (fk_student, fk_group),
212 INDEX fk_STUDENTS_has_GROUPS_GROUPS1_idx (fk_group ASC) ,
213 INDEX fk_STUDENTS_has_GROUPS_STUDENTS1_idx (fk_student ASC) ,
214 CONSTRAINT fk_STUDENTS_has_GROUPS_STUDENTS1
215 FOREIGN KEY (fk_student)
216 REFERENCES mf_db.STUDENTS (id)
217 ON DELETE NO ACTION
218 ON UPDATE NO ACTION,
219 CONSTRAINT fk_STUDENTS_has_GROUPS_GROUPS1
220 FOREIGN KEY (fk_group)
221 REFERENCES mf_db.GROUPS (id)
222 ON DELETE NO ACTION
223 ON UPDATE NO ACTION)
224ENGINE = InnoDB;
225-- -----------------------------------------------------
226-- Table mf_db.ASSISTENCE
227-- -----------------------------------------------------
228CREATE TABLE IF NOT EXISTS mf_db.ASSISTENCE (
229 id INT NOT NULL AUTO_INCREMENT,
230 fk_training_session INT NOT NULL,
231 fk_student INT NOT NULL,
232 status VARCHAR(50) NULL,
233 PRIMARY KEY (id),
234 INDEX fk_ASISTENCIAS_CLASSES1_idx (fk_training_session ASC) ,
235 INDEX fk_ASISTENCIAS_STUDENTS1_idx (fk_student ASC) ,
236 CONSTRAINT fk_ASISTENCIAS_CLASSES1
237 FOREIGN KEY (fk_training_session)
238 REFERENCES mf_db.TRAINING_SESSIONS (id)
239 ON DELETE NO ACTION
240 ON UPDATE NO ACTION,
241 CONSTRAINT fk_ASISTENCIAS_STUDENTS1
242 FOREIGN KEY (fk_student)
243 REFERENCES mf_db.STUDENTS (id)
244 ON DELETE NO ACTION
245 ON UPDATE NO ACTION)
246ENGINE = InnoDB;
247-- -----------------------------------------------------
248-- Table mf_db.MEMBERSHIPS
249-- -----------------------------------------------------
250CREATE TABLE IF NOT EXISTS mf_db.MEMBERSHIPS (
251 id INT NOT NULL AUTO_INCREMENT,
252 fk_student INT NOT NULL,
253 type VARCHAR(50) NOT NULL,
254 start_date DATE NOT NULL,
255 end_date DATE NOT NULL,
256 status VARCHAR(20) NOT NULL,
257 PRIMARY KEY (id),
258 INDEX fk_MEMBERSHIP_STUDENTS1_idx (fk_student ASC) ,
259 CONSTRAINT fk_MEMBERSHIP_STUDENTS1
260 FOREIGN KEY (fk_student)
261 REFERENCES mf_db.STUDENTS (id)
262 ON DELETE NO ACTION
263 ON UPDATE NO ACTION)
264ENGINE = InnoDB;
265-- -----------------------------------------------------
266-- Table mf_db.PAYMENTS
267-- -----------------------------------------------------
268CREATE TABLE IF NOT EXISTS mf_db.PAYMENTS (
269 id INT NOT NULL AUTO_INCREMENT,
270 fk_student INT NOT NULL,
271 fk_invoice INT NOT NULL,
272 payment_date DATETIME NOT NULL,
273 amount DECIMAL(10,2) NOT NULL,
274 payment_method VARCHAR(50) NOT NULL,
275 status VARCHAR(20) NOT NULL,
276 PRIMARY KEY (id),
277 INDEX fk_PAYMENTS_STUDENTS1_idx (fk_student ASC) ,
278 INDEX fk_PAYMENTS_INVOICES1_idx (fk_invoice ASC) ,
279 CONSTRAINT fk_PAYMENTS_STUDENTS1
280 FOREIGN KEY (fk_student)
281 REFERENCES mf_db.STUDENTS (id)
282 ON DELETE NO ACTION
283 ON UPDATE NO ACTION,
284 CONSTRAINT fk_PAYMENTS_INVOICES1
285 FOREIGN KEY (fk_invoice)
286 REFERENCES mf_db.INVOICES (id)
287 ON DELETE NO ACTION
288 ON UPDATE NO ACTION)
289ENGINE = InnoDB;
290SET SQL_MODE=@OLD_SQL_MODE;
291SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
292SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;