diff --git a/Documentación/DB_Design/DB_Diagram_MemberFlow.png b/Documentación/DB_Design/DB_Diagram_MemberFlow.png new file mode 100644 index 0000000..e1302ff Binary files /dev/null and b/Documentación/DB_Design/DB_Diagram_MemberFlow.png differ diff --git a/Documentación/DB_Design/MemeberFlow_DB.mwb b/Documentación/DB_Design/MemeberFlow_DB.mwb new file mode 100644 index 0000000..76e385d Binary files /dev/null and b/Documentación/DB_Design/MemeberFlow_DB.mwb differ diff --git a/Documentación/DB_Design/MemeberFlow_DB.mwb.bak b/Documentación/DB_Design/MemeberFlow_DB.mwb.bak new file mode 100644 index 0000000..2db08ed Binary files /dev/null and b/Documentación/DB_Design/MemeberFlow_DB.mwb.bak differ diff --git a/Documentación/DB_Design/db_creation/db_creation_script.csv b/Documentación/DB_Design/db_creation/db_creation_script.csv new file mode 100644 index 0000000..12bf3d2 --- /dev/null +++ b/Documentación/DB_Design/db_creation/db_creation_script.csv @@ -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; diff --git a/Documentación/DB_Design/db_creation/mf_db_creation_script.sql b/Documentación/DB_Design/db_creation/mf_db_creation_script.sql new file mode 100644 index 0000000..1edbac5 --- /dev/null +++ b/Documentación/DB_Design/db_creation/mf_db_creation_script.sql @@ -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;