Added Database design documentation

This commit is contained in:
Dennis Eckerskorn 2025-05-29 21:45:24 +02:00
parent ea38bf0f0b
commit 6d87682646
5 changed files with 729 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 KiB

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,326 @@
-- MySQL Workbench Forward Engineering
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @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';
-- -----------------------------------------------------
-- Schema mf_db
-- -----------------------------------------------------
-- -----------------------------------------------------
-- Schema mf_db
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS mf_db DEFAULT CHARACTER SET utf8 ;
USE mf_db ;
-- -----------------------------------------------------
-- Table mf_db.USERS
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS mf_db.USERS (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
surname VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL,
password VARCHAR(255) NOT NULL,
role VARCHAR(45) NULL,
register_date DATETIME NULL,
status VARCHAR(20) NOT NULL,
PRIMARY KEY (id),
UNIQUE INDEX email_UNIQUE (email ASC) )
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table mf_db.STUDENTS
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS mf_db.STUDENTS (
id INT NOT NULL AUTO_INCREMENT,
fk_user INT NOT NULL,
dni VARCHAR(10) NOT NULL,
birthdate DATE NOT NULL,
belt VARCHAR(20) NULL,
progress TEXT NULL,
status VARCHAR(20) NOT NULL,
PRIMARY KEY (id),
INDEX fk_STUDENTS_USERS1_idx (fk_user ASC) ,
UNIQUE INDEX dni_UNIQUE (dni ASC) ,
CONSTRAINT fk_STUDENTS_USERS1
FOREIGN KEY (fk_user)
REFERENCES mf_db.USERS (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table mf_db.TEACHERS
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS mf_db.TEACHERS (
id INT NOT NULL AUTO_INCREMENT,
fk_user INT NOT NULL,
discipline VARCHAR(50) NULL,
status VARCHAR(20) NOT NULL,
PRIMARY KEY (id),
INDEX fk_TEACHERS_USERS1_idx (fk_user ASC) ,
CONSTRAINT fk_TEACHERS_USERS1
FOREIGN KEY (fk_user)
REFERENCES mf_db.USERS (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table mf_db.GROUPS
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS mf_db.GROUPS (
id INT NOT NULL AUTO_INCREMENT,
fk_teacher INT NOT NULL,
name VARCHAR(45) NOT NULL,
level VARCHAR(45) NULL,
schedule DATETIME NULL,
status VARCHAR(20) NOT NULL,
PRIMARY KEY (id),
INDEX fk_GROUPS_TEACHERS1_idx (fk_teacher ASC) ,
CONSTRAINT fk_GROUPS_TEACHERS1
FOREIGN KEY (fk_teacher)
REFERENCES mf_db.TEACHERS (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table mf_db.TRAINING_SESSIONS
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS mf_db.TRAINING_SESSIONS (
id INT NOT NULL AUTO_INCREMENT,
fk_grupo INT NOT NULL,
date_time DATETIME NULL,
status VARCHAR(50) NULL,
PRIMARY KEY (id),
INDEX fk_CLASSES_GROUPS1_idx (fk_grupo ASC) ,
CONSTRAINT fk_CLASSES_GROUPS1
FOREIGN KEY (fk_grupo)
REFERENCES mf_db.GROUPS (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table mf_db.INVOICES
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS mf_db.INVOICES (
id INT NOT NULL AUTO_INCREMENT,
fk_student INT NOT NULL,
date DATETIME NOT NULL,
total DECIMAL(10,2) NOT NULL,
status VARCHAR(20) NOT NULL,
PRIMARY KEY (id),
INDEX fk_INVOICES_STUDENTS1_idx (fk_student ASC) ,
CONSTRAINT fk_INVOICES_STUDENTS1
FOREIGN KEY (fk_student)
REFERENCES mf_db.STUDENTS (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table mf_db.IVA_TYPE
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS mf_db.IVA_TYPE (
id INT NOT NULL AUTO_INCREMENT,
percentage DECIMAL(10,2) NOT NULL,
description VARCHAR(50) NULL,
PRIMARY KEY (id))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table mf_db.PRODUCTS_SERVICES
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS mf_db.PRODUCTS_SERVICES (
id INT NOT NULL AUTO_INCREMENT,
fk_iva_type INT NOT NULL,
name VARCHAR(100) NOT NULL,
description VARCHAR(250) NULL,
price DECIMAL(10,2) NOT NULL,
type VARCHAR(45) NOT NULL,
status VARCHAR(20) NULL,
PRIMARY KEY (id),
INDEX fk_PRODUCTS_SERVICES_IVA_TYPE1_idx (fk_iva_type ASC) ,
CONSTRAINT fk_PRODUCTS_SERVICES_IVA_TYPE1
FOREIGN KEY (fk_iva_type)
REFERENCES mf_db.IVA_TYPE (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table mf_db.INVOICE_LINES
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS mf_db.INVOICE_LINES (
id INT NOT NULL AUTO_INCREMENT,
fk_invoice INT NOT NULL,
fk_product_service INT NOT NULL,
description TEXT NULL,
quantity DECIMAL(10,2) NOT NULL,
unit_price DECIMAL(10,2) NOT NULL,
subtotal DECIMAL(10,2) NOT NULL,
PRIMARY KEY (id),
INDEX fk_INVOICE_LINES_INVOICES_idx (fk_invoice ASC) ,
INDEX fk_INVOICE_LINES_PRODUCTS_SERVICES1_idx (fk_product_service ASC) ,
CONSTRAINT fk_INVOICE_LINES_INVOICES
FOREIGN KEY (fk_invoice)
REFERENCES mf_db.INVOICES (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT fk_INVOICE_LINES_PRODUCTS_SERVICES1
FOREIGN KEY (fk_product_service)
REFERENCES mf_db.PRODUCTS_SERVICES (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table mf_db.NOTIFICATIONS
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS mf_db.NOTIFICATIONS (
id INT NOT NULL AUTO_INCREMENT,
fk_user INT NOT NULL,
title VARCHAR(200) NULL,
message TEXT NULL,
shipping_date DATETIME NULL,
type VARCHAR(100) NULL,
status VARCHAR(50) NULL,
PRIMARY KEY (id),
INDEX fk_NOTIFICATIONS_USERS1_idx (fk_user ASC) ,
CONSTRAINT fk_NOTIFICATIONS_USERS1
FOREIGN KEY (fk_user)
REFERENCES mf_db.USERS (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table mf_db.STUDENT_HISTORY
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS mf_db.STUDENT_HISTORY (
id INT NOT NULL AUTO_INCREMENT,
fk_student INT NOT NULL,
event_date DATE NULL,
event_type VARCHAR(200) NULL,
description TEXT NULL,
PRIMARY KEY (id),
INDEX fk_STUDENT_HISTORY_STUDENTS1_idx (fk_student ASC) ,
CONSTRAINT fk_STUDENT_HISTORY_STUDENTS1
FOREIGN KEY (fk_student)
REFERENCES mf_db.STUDENTS (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table mf_db.STUDENTS_GROUPS
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS mf_db.STUDENTS_GROUPS (
fk_student INT NOT NULL,
fk_group INT NOT NULL,
inscription_date DATE NOT NULL,
PRIMARY KEY (fk_student, fk_group),
INDEX fk_STUDENTS_has_GROUPS_GROUPS1_idx (fk_group ASC) ,
INDEX fk_STUDENTS_has_GROUPS_STUDENTS1_idx (fk_student ASC) ,
CONSTRAINT fk_STUDENTS_has_GROUPS_STUDENTS1
FOREIGN KEY (fk_student)
REFERENCES mf_db.STUDENTS (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT fk_STUDENTS_has_GROUPS_GROUPS1
FOREIGN KEY (fk_group)
REFERENCES mf_db.GROUPS (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table mf_db.ASSISTENCE
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS mf_db.ASSISTENCE (
id INT NOT NULL AUTO_INCREMENT,
fk_training_session INT NOT NULL,
fk_student INT NOT NULL,
status VARCHAR(50) NULL,
PRIMARY KEY (id),
INDEX fk_ASISTENCIAS_CLASSES1_idx (fk_training_session ASC) ,
INDEX fk_ASISTENCIAS_STUDENTS1_idx (fk_student ASC) ,
CONSTRAINT fk_ASISTENCIAS_CLASSES1
FOREIGN KEY (fk_training_session)
REFERENCES mf_db.TRAINING_SESSIONS (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT fk_ASISTENCIAS_STUDENTS1
FOREIGN KEY (fk_student)
REFERENCES mf_db.STUDENTS (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table mf_db.MEMBERSHIPS
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS mf_db.MEMBERSHIPS (
id INT NOT NULL AUTO_INCREMENT,
fk_student INT NOT NULL,
type VARCHAR(50) NOT NULL,
start_date DATE NOT NULL,
end_date DATE NOT NULL,
status VARCHAR(20) NOT NULL,
PRIMARY KEY (id),
INDEX fk_MEMBERSHIP_STUDENTS1_idx (fk_student ASC) ,
CONSTRAINT fk_MEMBERSHIP_STUDENTS1
FOREIGN KEY (fk_student)
REFERENCES mf_db.STUDENTS (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table mf_db.PAYMENTS
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS mf_db.PAYMENTS (
id INT NOT NULL AUTO_INCREMENT,
fk_student INT NOT NULL,
fk_invoice INT NOT NULL,
payment_date DATETIME NOT NULL,
amount DECIMAL(10,2) NOT NULL,
payment_method VARCHAR(50) NOT NULL,
status VARCHAR(20) NOT NULL,
PRIMARY KEY (id),
INDEX fk_PAYMENTS_STUDENTS1_idx (fk_student ASC) ,
INDEX fk_PAYMENTS_INVOICES1_idx (fk_invoice ASC) ,
CONSTRAINT fk_PAYMENTS_STUDENTS1
FOREIGN KEY (fk_student)
REFERENCES mf_db.STUDENTS (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT fk_PAYMENTS_INVOICES1
FOREIGN KEY (fk_invoice)
REFERENCES mf_db.INVOICES (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
1 -- MySQL Workbench Forward Engineering
2 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
3 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
4 SET @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 -- -----------------------------------------------------
11 CREATE SCHEMA IF NOT EXISTS mf_db DEFAULT CHARACTER SET utf8 ;
12 USE mf_db ;
13 -- -----------------------------------------------------
14 -- Table mf_db.USERS
15 -- -----------------------------------------------------
16 CREATE 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) )
27 ENGINE = InnoDB;
28 -- -----------------------------------------------------
29 -- Table mf_db.STUDENTS
30 -- -----------------------------------------------------
31 CREATE 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)
47 ENGINE = InnoDB;
48 -- -----------------------------------------------------
49 -- Table mf_db.TEACHERS
50 -- -----------------------------------------------------
51 CREATE 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)
63 ENGINE = InnoDB;
64 -- -----------------------------------------------------
65 -- Table mf_db.GROUPS
66 -- -----------------------------------------------------
67 CREATE 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)
81 ENGINE = InnoDB;
82 -- -----------------------------------------------------
83 -- Table mf_db.TRAINING_SESSIONS
84 -- -----------------------------------------------------
85 CREATE 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)
97 ENGINE = InnoDB;
98 -- -----------------------------------------------------
99 -- Table mf_db.INVOICES
100 -- -----------------------------------------------------
101 CREATE 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)
114 ENGINE = InnoDB;
115 -- -----------------------------------------------------
116 -- Table mf_db.IVA_TYPE
117 -- -----------------------------------------------------
118 CREATE 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))
123 ENGINE = InnoDB;
124 -- -----------------------------------------------------
125 -- Table mf_db.PRODUCTS_SERVICES
126 -- -----------------------------------------------------
127 CREATE 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)
142 ENGINE = InnoDB;
143 -- -----------------------------------------------------
144 -- Table mf_db.INVOICE_LINES
145 -- -----------------------------------------------------
146 CREATE 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)
167 ENGINE = InnoDB;
168 -- -----------------------------------------------------
169 -- Table mf_db.NOTIFICATIONS
170 -- -----------------------------------------------------
171 CREATE 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)
186 ENGINE = InnoDB;
187 -- -----------------------------------------------------
188 -- Table mf_db.STUDENT_HISTORY
189 -- -----------------------------------------------------
190 CREATE 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)
203 ENGINE = InnoDB;
204 -- -----------------------------------------------------
205 -- Table mf_db.STUDENTS_GROUPS
206 -- -----------------------------------------------------
207 CREATE 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)
224 ENGINE = InnoDB;
225 -- -----------------------------------------------------
226 -- Table mf_db.ASSISTENCE
227 -- -----------------------------------------------------
228 CREATE 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)
246 ENGINE = InnoDB;
247 -- -----------------------------------------------------
248 -- Table mf_db.MEMBERSHIPS
249 -- -----------------------------------------------------
250 CREATE 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)
264 ENGINE = InnoDB;
265 -- -----------------------------------------------------
266 -- Table mf_db.PAYMENTS
267 -- -----------------------------------------------------
268 CREATE 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)
289 ENGINE = InnoDB;
290 SET SQL_MODE=@OLD_SQL_MODE;
291 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
292 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

View File

@ -0,0 +1,403 @@
-- MySQL Workbench Forward Engineering
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @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';
-- -----------------------------------------------------
-- Schema mf_db
-- -----------------------------------------------------
-- -----------------------------------------------------
-- Schema mf_db
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS mf_db DEFAULT CHARACTER SET utf8 ;
USE mf_db ;
-- -----------------------------------------------------
-- Table mf_db.ROLES
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS mf_db.ROLES (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(45) NOT NULL,
PRIMARY KEY (id),
UNIQUE INDEX name_UNIQUE (name ASC) )
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table mf_db.USERS
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS mf_db.USERS (
id INT NOT NULL AUTO_INCREMENT,
fk_role INT NOT NULL,
name VARCHAR(50) NOT NULL,
surname VARCHAR(50) NOT NULL,
phone_number VARCHAR(30) NOT NULL,
email VARCHAR(100) NOT NULL,
password VARCHAR(255) NOT NULL,
address VARCHAR(100) NULL,
register_date DATETIME NULL,
status VARCHAR(20) NOT NULL,
PRIMARY KEY (id),
UNIQUE INDEX email_UNIQUE (email ASC) ,
INDEX fk_USERS_ROLES1_idx (fk_role ASC) ,
CONSTRAINT fk_USERS_ROLES1
FOREIGN KEY (fk_role)
REFERENCES mf_db.ROLES (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table mf_db.MEMBERSHIPS
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS mf_db.MEMBERSHIPS (
id INT NOT NULL AUTO_INCREMENT,
type VARCHAR(50) NOT NULL,
start_date DATE NOT NULL,
end_date DATE NOT NULL,
status VARCHAR(20) NOT NULL,
PRIMARY KEY (id))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table mf_db.STUDENTS
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS mf_db.STUDENTS (
id INT NOT NULL,
fk_user INT NOT NULL,
fk_membership INT NULL,
dni VARCHAR(10) NOT NULL,
birthdate DATE NOT NULL,
belt VARCHAR(20) NULL,
progress TEXT NULL,
medical_report VARCHAR(500) NULL,
parent_name VARCHAR(50) NULL,
PRIMARY KEY (id),
UNIQUE INDEX dni_UNIQUE (dni ASC) ,
INDEX fk_STUDENTS_MEMBERSHIPS1_idx (fk_membership ASC) ,
INDEX fk_STUDENTS_USERS1_idx (fk_user ASC) ,
UNIQUE INDEX fk_user_UNIQUE (fk_user ASC) ,
CONSTRAINT fk_STUDENTS_MEMBERSHIPS1
FOREIGN KEY (fk_membership)
REFERENCES mf_db.MEMBERSHIPS (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT fk_STUDENTS_USERS1
FOREIGN KEY (fk_user)
REFERENCES mf_db.USERS (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table mf_db.TEACHERS
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS mf_db.TEACHERS (
id INT NOT NULL,
fk_user INT NOT NULL,
discipline VARCHAR(50) NULL,
PRIMARY KEY (id),
INDEX fk_TEACHERS_USERS1_idx (fk_user ASC) ,
UNIQUE INDEX fk_user_UNIQUE (fk_user ASC) ,
CONSTRAINT fk_TEACHERS_USERS1
FOREIGN KEY (fk_user)
REFERENCES mf_db.USERS (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table mf_db.TRAINING_GROUPS
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS mf_db.TRAINING_GROUPS (
id INT NOT NULL AUTO_INCREMENT,
fk_teacher INT NOT NULL,
name VARCHAR(45) NOT NULL,
level VARCHAR(45) NULL,
schedule DATETIME NULL,
PRIMARY KEY (id),
INDEX fk_GROUPS_TEACHERS1_idx (fk_teacher ASC) ,
CONSTRAINT fk_GROUPS_TEACHERS1
FOREIGN KEY (fk_teacher)
REFERENCES mf_db.TEACHERS (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table mf_db.TRAINING_SESSIONS
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS mf_db.TRAINING_SESSIONS (
id INT NOT NULL AUTO_INCREMENT,
fk_group INT NOT NULL,
date_time DATETIME NULL,
status VARCHAR(50) NULL,
PRIMARY KEY (id),
INDEX fk_CLASSES_GROUPS1_idx (fk_group ASC) ,
CONSTRAINT fk_CLASSES_GROUPS1
FOREIGN KEY (fk_group)
REFERENCES mf_db.TRAINING_GROUPS (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table mf_db.INVOICES
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS mf_db.INVOICES (
id INT NOT NULL AUTO_INCREMENT,
fk_user INT NOT NULL,
date DATETIME NOT NULL,
total DECIMAL(10,2) NOT NULL,
status VARCHAR(20) NOT NULL,
PRIMARY KEY (id),
INDEX fk_INVOICES_USERS1_idx (fk_user ASC) ,
CONSTRAINT fk_INVOICES_USERS1
FOREIGN KEY (fk_user)
REFERENCES mf_db.USERS (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table mf_db.IVA_TYPE
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS mf_db.IVA_TYPE (
id INT NOT NULL AUTO_INCREMENT,
percentage DECIMAL(10,2) NOT NULL,
description VARCHAR(50) NULL,
PRIMARY KEY (id))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table mf_db.PRODUCTS_SERVICES
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS mf_db.PRODUCTS_SERVICES (
id INT NOT NULL AUTO_INCREMENT,
fk_iva_type INT NOT NULL,
name VARCHAR(100) NOT NULL,
description VARCHAR(250) NULL,
price DECIMAL(10,2) NOT NULL,
type VARCHAR(45) NOT NULL,
status VARCHAR(20) NULL,
PRIMARY KEY (id),
INDEX fk_PRODUCTS_SERVICES_IVA_TYPE1_idx (fk_iva_type ASC) ,
CONSTRAINT fk_PRODUCTS_SERVICES_IVA_TYPE1
FOREIGN KEY (fk_iva_type)
REFERENCES mf_db.IVA_TYPE (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table mf_db.INVOICE_LINES
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS mf_db.INVOICE_LINES (
id INT NOT NULL AUTO_INCREMENT,
fk_invoice INT NOT NULL,
fk_product_service INT NOT NULL,
description TEXT NULL,
quantity INT NOT NULL,
unit_price DECIMAL(10,2) NOT NULL,
subtotal DECIMAL(10,2) NOT NULL,
PRIMARY KEY (id),
INDEX fk_INVOICE_LINES_INVOICES_idx (fk_invoice ASC) ,
INDEX fk_INVOICE_LINES_PRODUCTS_SERVICES1_idx (fk_product_service ASC) ,
CONSTRAINT fk_INVOICE_LINES_INVOICES
FOREIGN KEY (fk_invoice)
REFERENCES mf_db.INVOICES (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT fk_INVOICE_LINES_PRODUCTS_SERVICES1
FOREIGN KEY (fk_product_service)
REFERENCES mf_db.PRODUCTS_SERVICES (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table mf_db.NOTIFICATIONS
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS mf_db.NOTIFICATIONS (
id INT NOT NULL AUTO_INCREMENT,
title VARCHAR(200) NOT NULL,
message TEXT NULL,
shipping_date DATETIME NOT NULL,
type VARCHAR(100) NULL,
status VARCHAR(50) NULL,
PRIMARY KEY (id))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table mf_db.STUDENT_HISTORY
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS mf_db.STUDENT_HISTORY (
id INT NOT NULL AUTO_INCREMENT,
fk_student INT NOT NULL,
event_date DATE NULL,
event_type VARCHAR(200) NULL,
description TEXT NULL,
PRIMARY KEY (id),
INDEX fk_STUDENT_HISTORY_STUDENTS1_idx (fk_student ASC) ,
CONSTRAINT fk_STUDENT_HISTORY_STUDENTS1
FOREIGN KEY (fk_student)
REFERENCES mf_db.STUDENTS (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table mf_db.STUDENTS_GROUPS
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS mf_db.STUDENTS_GROUPS (
fk_student INT NOT NULL,
fk_group INT NOT NULL,
PRIMARY KEY (fk_student, fk_group),
INDEX fk_STUDENTS_has_GROUPS_GROUPS1_idx (fk_group ASC) ,
INDEX fk_STUDENTS_has_GROUPS_STUDENTS1_idx (fk_student ASC) ,
CONSTRAINT fk_STUDENTS_has_GROUPS_STUDENTS1
FOREIGN KEY (fk_student)
REFERENCES mf_db.STUDENTS (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT fk_STUDENTS_has_GROUPS_GROUPS1
FOREIGN KEY (fk_group)
REFERENCES mf_db.TRAINING_GROUPS (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table mf_db.ASSISTANCE
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS mf_db.ASSISTANCE (
id INT NOT NULL AUTO_INCREMENT,
fk_training_session INT NOT NULL,
fk_student INT NOT NULL,
date_time DATETIME NOT NULL,
PRIMARY KEY (id),
INDEX fk_ASISTENCIAS_CLASSES1_idx (fk_training_session ASC) ,
INDEX fk_ASISTENCIAS_STUDENTS1_idx (fk_student ASC) ,
CONSTRAINT fk_ASISTENCIAS_CLASSES1
FOREIGN KEY (fk_training_session)
REFERENCES mf_db.TRAINING_SESSIONS (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT fk_ASISTENCIAS_STUDENTS1
FOREIGN KEY (fk_student)
REFERENCES mf_db.STUDENTS (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table mf_db.PAYMENTS
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS mf_db.PAYMENTS (
id INT NOT NULL AUTO_INCREMENT,
fk_invoice INT NOT NULL,
payment_date DATETIME NOT NULL,
amount DECIMAL(10,2) NOT NULL,
payment_method VARCHAR(50) NOT NULL,
status VARCHAR(20) NOT NULL,
PRIMARY KEY (id),
INDEX fk_PAYMENTS_INVOICES1_idx (fk_invoice ASC) ,
CONSTRAINT fk_PAYMENTS_INVOICES1
FOREIGN KEY (fk_invoice)
REFERENCES mf_db.INVOICES (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table mf_db.PERMISSIONS
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS mf_db.PERMISSIONS (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(45) NOT NULL,
PRIMARY KEY (id),
UNIQUE INDEX name_UNIQUE (name ASC) )
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table mf_db.ROLES_PERMISSIONS
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS mf_db.ROLES_PERMISSIONS (
fk_role INT NOT NULL,
fk_permission INT NOT NULL,
PRIMARY KEY (fk_role, fk_permission),
INDEX fk_ROLES_has_PERMISSIONS_PERMISSIONS1_idx (fk_permission ASC) ,
INDEX fk_ROLES_has_PERMISSIONS_ROLES1_idx (fk_role ASC) ,
CONSTRAINT fk_ROLES_has_PERMISSIONS_ROLES1
FOREIGN KEY (fk_role)
REFERENCES mf_db.ROLES (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT fk_ROLES_has_PERMISSIONS_PERMISSIONS1
FOREIGN KEY (fk_permission)
REFERENCES mf_db.PERMISSIONS (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table mf_db.USERS_NOTIFICATIONS
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS mf_db.USERS_NOTIFICATIONS (
fk_user INT NOT NULL,
fk_notification INT NOT NULL,
PRIMARY KEY (fk_user, fk_notification),
INDEX fk_USERS_has_NOTIFICATIONS_NOTIFICATIONS1_idx (fk_notification ASC) ,
INDEX fk_USERS_has_NOTIFICATIONS_USERS1_idx (fk_user ASC) ,
CONSTRAINT fk_USERS_has_NOTIFICATIONS_USERS1
FOREIGN KEY (fk_user)
REFERENCES mf_db.USERS (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT fk_USERS_has_NOTIFICATIONS_NOTIFICATIONS1
FOREIGN KEY (fk_notification)
REFERENCES mf_db.NOTIFICATIONS (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table mf_db.ADMINS
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS mf_db.ADMINS (
id INT NOT NULL AUTO_INCREMENT,
fk_user INT NOT NULL,
PRIMARY KEY (id),
INDEX fk_ADMINS_USERS1_idx (fk_user ASC) ,
UNIQUE INDEX fk_user_UNIQUE (fk_user ASC) ,
CONSTRAINT fk_ADMINS_USERS1
FOREIGN KEY (fk_user)
REFERENCES mf_db.USERS (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;