Changes between Version 4 and Version 5 of ddlScript.sql
- Timestamp:
- 02/06/25 16:30:33 (2 weeks ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
ddlScript.sql
v4 v5 1 1 {{{#!sql 2 -- Drop existing tables if they exist 3 DROP TABLE IF EXISTS UserParticipatesInExperiment CASCADE; 4 DROP TABLE IF EXISTS UserViewsExperiment CASCADE; 5 DROP TABLE IF EXISTS UserViewsElement CASCADE; 6 DROP TABLE IF EXISTS UserViewsLabEquipment CASCADE; 2 7 DROP TABLE IF EXISTS ExperimentLabEquipment CASCADE; 3 8 DROP TABLE IF EXISTS Experiment CASCADE; … … 5 10 DROP TABLE IF EXISTS Elements CASCADE; 6 11 DROP TABLE IF EXISTS LabEquipment CASCADE; 12 DROP TABLE IF EXISTS Student CASCADE; 13 DROP TABLE IF EXISTS Teacher CASCADE; 7 14 DROP TABLE IF EXISTS "User" CASCADE; 8 15 9 16 -- Create User table 10 17 CREATE TABLE "User" ( 11 18 user_id SERIAL PRIMARY KEY, 12 19 user_name VARCHAR(30) NOT NULL, 13 20 user_surname VARCHAR(30) NOT NULL, 14 email VARCHAR(50) NOT NULL UNIQUE 21 email VARCHAR(50) NOT NULL UNIQUE, 15 22 password VARCHAR(100) NOT NULL, 16 23 role ENUM('student', 'teacher') NOT NULL 17 24 ); 18 25 26 -- Create Student table (inherits from User) 27 CREATE TABLE Student ( 28 student_id INT PRIMARY KEY REFERENCES "User"(user_id) ON DELETE CASCADE, 29 teacher_id INT NOT NULL REFERENCES Teacher(teacher_id) ON DELETE CASCADE 30 ); 19 31 32 -- Create Teacher table (inherits from User) 33 CREATE TABLE Teacher ( 34 teacher_id INT PRIMARY KEY REFERENCES "User"(user_id) ON DELETE CASCADE 35 ); 36 37 -- Create LabEquipment table 20 38 CREATE TABLE LabEquipment ( 21 39 equipment_id SERIAL PRIMARY KEY, … … 23 41 type VARCHAR(50), 24 42 description TEXT, 25 safety_info TEXT 43 safety_info TEXT, 44 teacher_id INT NOT NULL REFERENCES Teacher(teacher_id) ON DELETE CASCADE 26 45 ); 27 46 28 47 -- Create Elements table 29 48 CREATE TABLE Elements ( 30 49 element_id SERIAL PRIMARY KEY, … … 36 55 boiling_point FLOAT, 37 56 hazard_type VARCHAR(50), 38 description_element TEXT 57 description_element TEXT, 58 teacher_id INT NOT NULL REFERENCES Teacher(teacher_id) ON DELETE CASCADE 39 59 ); 40 60 41 61 -- Create Reaction table 42 62 CREATE TABLE Reaction ( 43 63 reaction_id SERIAL PRIMARY KEY, 64 teacher_id INT NOT NULL REFERENCES Teacher(teacher_id) ON DELETE CASCADE, 44 65 element1_id INT NOT NULL REFERENCES Elements(element_id) ON DELETE CASCADE, 45 66 element2_id INT NOT NULL REFERENCES Elements(element_id) ON DELETE CASCADE, … … 48 69 ); 49 70 50 71 -- Create Experiment table 51 72 CREATE TABLE Experiment ( 52 73 experiment_id SERIAL PRIMARY KEY, 53 user_id INT NOT NULL REFERENCES "User" (user_id) ON DELETE CASCADE,74 teacher_id INT NOT NULL REFERENCES Teacher(teacher_id) ON DELETE CASCADE, 54 75 reaction_id INT NOT NULL REFERENCES Reaction(reaction_id) ON DELETE CASCADE, 55 76 result TEXT, … … 58 79 ); 59 80 60 81 -- Join table for linking experiments and lab equipment 61 82 CREATE TABLE ExperimentLabEquipment ( 62 83 experiment_id INT NOT NULL REFERENCES Experiment(experiment_id) ON DELETE CASCADE, 63 84 equipment_id INT NOT NULL REFERENCES LabEquipment(equipment_id) ON DELETE CASCADE, 64 65 85 PRIMARY KEY (experiment_id, equipment_id) 66 86 ); 87 88 -- Join table for tracking which users viewed elements 89 CREATE TABLE UserViewsElement ( 90 user_id INT NOT NULL REFERENCES "User"(user_id) ON DELETE CASCADE, 91 element_id INT NOT NULL REFERENCES Elements(element_id) ON DELETE CASCADE, 92 PRIMARY KEY (user_id, element_id) 93 ); 94 95 -- Join table for tracking which users viewed lab equipment 96 CREATE TABLE UserViewsLabEquipment ( 97 user_id INT NOT NULL REFERENCES "User"(user_id) ON DELETE CASCADE, 98 equipment_id INT NOT NULL REFERENCES LabEquipment(equipment_id) ON DELETE CASCADE, 99 PRIMARY KEY (user_id, equipment_id) 100 ); 101 102 -- Join table for tracking which users viewed experiments 103 CREATE TABLE UserViewsExperiment ( 104 user_id INT NOT NULL REFERENCES "User"(user_id) ON DELETE CASCADE, 105 experiment_id INT NOT NULL REFERENCES Experiment(experiment_id) ON DELETE CASCADE, 106 PRIMARY KEY (user_id, experiment_id) 107 ); 108 109 -- Join table for tracking which users participated in an experiment 110 CREATE TABLE UserParticipatesInExperiment ( 111 user_id INT NOT NULL REFERENCES "User"(user_id) ON DELETE CASCADE, 112 experiment_id INT NOT NULL REFERENCES Experiment(experiment_id) ON DELETE CASCADE, 113 PRIMARY KEY (user_id, experiment_id) 114 ); 67 115 }}}