404 lines
12 KiB
SQL
404 lines
12 KiB
SQL
-- 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;
|