/* This script does: * create tables of the database * creates the sequences for the ids(with AUTO_INCREMENT) * create the triggers and trigger functions */ /* ----------------------------------- */ /* TABLES' CREATION */ /* ----------------------------------- */ /* ----- ENTITIES TABLES -----*/ /* -- Table User -- */ CREATE TABLE T_S_USER_USR ( PK_ID int AUTO_INCREMENT PRIMARY KEY, USR_USERNAME varchar(50) UNIQUE NOT NULL, USR_PASSWORD varchar(50) NOT NULL, USR_NATIONALITY varchar(20) NOT NULL, USR_SEX char(1) NOT NULL, USR_DATE_OF_BIRTH date, USR_CURRENT_NB_COINS int DEFAULT 0, USR_TOTAL_NB_COINS int DEFAULT 0, USR_NB_GAMES_PLAYED int DEFAULT 0, FK_CURRENT_SKIN int REFERENCES T_H_SKIN_SKI(PK_ID) ); /* -- Table Skin -- */ CREATE TABLE T_H_SKIN_SKI ( PK_ID int AUTO_INCREMENT PRIMARY KEY, SKI_NAME varchar(50) UNIQUE NOT NULL, SKI_IMAGE varchar(50) UNIQUE NOT NULL, SKI_PRICE varchar(30) ); /* -- Table Game -- */ CREATE TABLE T_E_GAME_GAM ( PK_ID int AUTO_INCREMENT PRIMARY KEY, GAM_NAME varchar(50) UNIQUE, GAM_IMAGE varchar(50) UNIQUE, GAM_NB_PLAYER_MIN int, GAM_NB_PLAYER_MAX int ); /* -- Table Match -- */ CREATE TABLE T_E_MATCH_MTC ( PK_ID int AUTO_INCREMENT PRIMARY KEY, MTC_IN_GAME boolean, FK_ID_GAME int REFERENCES T_E_GAME_GAM(PK_ID) ); /* -- Table Conversation -- */ CREATE TABLE T_H_CONVERSATION_COV ( PK_ID int AUTO_INCREMENT PRIMARY KEY, COV_NAME varchar(20) ); /* -- Table Message -- */ CREATE TABLE T_H_MESSAGE_MSG ( PK_ID int AUTO_INCREMENT PRIMARY KEY, MSG_MESSAGE text, FK_SENDER int REFERENCES T_S_USER_USR(PK_ID) ); /* ----- JUNCTURE TABLES ----- */ /* -- Juncture own skin -- */ CREATE TABLE T_J_OWN_SKIN_OWN ( FK_USER int , FOREIGN KEY (FK_USER) REFERENCES T_S_USER_USR(PK_ID) ON DELETE CASCADE, FK_SKIN int , FOREIGN KEY (FK_SKIN) REFERENCES T_H_SKIN_SKI(PK_ID), PRIMARY KEY(FK_SKIN, FK_USER) ); /* -- Juncture play match -- */ CREATE TABLE T_J_PLAY_MATCH_PLM ( FK_USER int , FOREIGN KEY (FK_USER ) REFERENCES T_S_USER_USR(PK_ID) ON DELETE CASCADE, FK_MATCH int , FOREIGN KEY (FK_MATCH) REFERENCES T_E_MATCH_MTC(PK_ID) ON DELETE CASCADE, PRIMARY KEY (FK_USER,FK_MATCH) ); /* -- Juncture discuss -- */ CREATE TABLE T_J_DISCUSS_DIS ( FK_USER int , FOREIGN KEY (FK_USER) REFERENCES T_S_USER_USR(PK_ID) ON DELETE CASCADE, FK_CONVERSATION int , FOREIGN KEY (FK_CONVERSATION) REFERENCES T_H_CONVERSATION_COV(PK_ID) ON DELETE CASCADE, PRIMARY KEY(FK_USER,FK_CONVERSATION) ); /* -- Juncture contain message -- */ CREATE TABLE T_J_CONTAIN_MESSAGE_CMG ( FK_CONVERSATION int, FOREIGN KEY (FK_CONVERSATION) REFERENCES T_H_CONVERSATION_COV(PK_ID) ON DELETE CASCADE, FK_MESSAGE int, FOREIGN KEY (FK_MESSAGE) REFERENCES T_H_MESSAGE_MSG(PK_ID) ON DELETE CASCADE, PRIMARY KEY (FK_CONVERSATION,FK_MESSAGE) ); /* ----------------------------------- */ /* TRIGGERS' CREATION */ /* ----------------------------------- */ /* ----- USER's trigger ----- */ /* -- after insert -> add basic skin into the list of skin -- */ CREATE TRIGGER after_insert_user AFTER INSERT ON T_S_USER_USR FOR EACH ROW INSERT INTO T_J_OWN_SKIN_OWN VALUES(NEW.PK_ID,1); /* ----- CONVERSATION's trigger ----- */ CREATE TRIGGER before_delete_conversation BEFORE DELETE ON T_H_CONVERSATION_COV FOR EACH ROW DELETE FROM T_H_MESSAGE_MSG WHERE PK_ID = (SELECT FK_MESSAGE FROM T_J_CONTAIN_MESSAGE_CMG WHERE FK_CONVERSATION=OLD.PK_ID);