| 1 | {{{#!sql |
| 2 | DROP TABLE IF EXISTS ExperimentLabEquipment CASCADE; |
| 3 | DROP TABLE IF EXISTS Experiment CASCADE; |
| 4 | DROP TABLE IF EXISTS Reaction CASCADE; |
| 5 | DROP TABLE IF EXISTS Elements CASCADE; |
| 6 | DROP TABLE IF EXISTS LabEquipment CASCADE; |
| 7 | DROP TABLE IF EXISTS USER CASCADE; |
| 8 | |
| 9 | |
| 10 | CREATE TABLE USER ( |
| 11 | user_id SERIAL PRIMARY KEY, |
| 12 | user_name VARCHAR(30) NOT NULL, |
| 13 | user_surname VARCHAR(30) NOT NULL, |
| 14 | password VARCHAR(100) NOT NULL, |
| 15 | role ENUM('student', 'teacher') NOT NULL |
| 16 | ); |
| 17 | |
| 18 | |
| 19 | CREATE TABLE LabEquipment ( |
| 20 | equipment_id SERIAL PRIMARY KEY, |
| 21 | equipment_name VARCHAR(50) NOT NULL UNIQUE, |
| 22 | type VARCHAR(50), |
| 23 | description TEXT, |
| 24 | safety_info TEXT |
| 25 | ); |
| 26 | |
| 27 | |
| 28 | CREATE TABLE Elements ( |
| 29 | element_id SERIAL PRIMARY KEY, |
| 30 | symbol VARCHAR(2) NOT NULL UNIQUE, |
| 31 | element_name VARCHAR(50) NOT NULL, |
| 32 | atomic_number INT NOT NULL, |
| 33 | atomic_weight FLOAT NOT NULL, |
| 34 | melting_point FLOAT, |
| 35 | boiling_point FLOAT, |
| 36 | hazard_type VARCHAR(50), |
| 37 | description_element TEXT |
| 38 | ); |
| 39 | |
| 40 | |
| 41 | CREATE TABLE Reaction ( |
| 42 | reaction_id SERIAL PRIMARY KEY, |
| 43 | element1_id INT NOT NULL REFERENCES Elements(element_id) ON DELETE CASCADE, |
| 44 | element2_id INT NOT NULL REFERENCES Elements(element_id) ON DELETE CASCADE, |
| 45 | product VARCHAR(50), |
| 46 | conditions TEXT |
| 47 | ); |
| 48 | |
| 49 | -- Создај табела за експерименти |
| 50 | CREATE TABLE Experiment ( |
| 51 | experiment_id SERIAL PRIMARY KEY, |
| 52 | user_id INT NOT NULL REFERENCES USER (user_id) ON DELETE CASCADE, |
| 53 | reaction_id INT NOT NULL REFERENCES Reaction(reaction_id) ON DELETE CASCADE, |
| 54 | result TEXT, |
| 55 | time_stamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP, |
| 56 | safety_warning TEXT |
| 57 | ); |
| 58 | |
| 59 | -- Создај поврзувачка табела за експерименти и лабораториска опрема |
| 60 | CREATE TABLE ExperimentLabEquipment ( |
| 61 | experiment_id INT NOT NULL REFERENCES Experiment(experiment_id) ON DELETE CASCADE, |
| 62 | equipment_id INT NOT NULL REFERENCES LabEquipment(equipment_id) ON DELETE CASCADE, |
| 63 | |
| 64 | PRIMARY KEY (experiment_id, equipment_id) |
| 65 | ); |
| 66 | }}} |