Нормализација на базата и функционални карактеристики
- Субтипови за корисник — јасна поделба на улоги:
User(user_id, user_name, user_surname, email, password, role)
student(student_id → User.user_id, teacher_id → User.user_id)
teacher(teacher_id → User.user_id)
elements(element_id, symbol, element_name, atomic_number, atomic_weight, melting_point, boiling_point, hazard_type, description_element, teacher_id→User)
labequipment(equipment_id, equipment_name, type, description, safety_info, teacher_id→User)
reaction(reaction_id, teacher_id→User, element1_id→elements, element2_id→elements, product, conditions)
experiment(experiment_id, teacher_id→User, reaction_id→reaction, result, safety_warning, time_stamp)
experimentlabequipment(experiment_id→experiment, equipment_id→labequipment)
userparticipatesinexperiment(user_id→User, experiment_id→experiment[, participation_timestamp])
- Tracking-табели (активности/прегледи):
userviewselement(user_id→User, element_id→elements)
userviewslabequipment(user_id→User, equipment_id→labequipment)
Табела | PK | Важни FK | НФ статус
|
User | user_id | — | 3NF / BCNF (формално по user_id)
|
student | student_id | teacher_id → User | 3NF / BCNF
|
teacher | teacher_id | — | 3NF / BCNF
|
elements | element_id | teacher_id → User | 3NF / BCNF
|
labequipment | equipment_id | teacher_id → User | 3NF / BCNF
|
reaction | reaction_id | teacher_id, element1_id, element2_id | 3NF / BCNF
|
experiment | experiment_id | teacher_id, reaction_id | 3NF / BCNF
|
experimentlabequipment | (experiment_id, equipment_id) | експеримент / опрема | 3NF / BCNF
|
userparticipatesinexperiment | (user_id, experiment_id) | корисник / експеримент | 3NF / BCNF
|
userviewselement | (user_id, element_id) | корисник / елемент | 3NF / BCNF
|
userviewslabequipment | (user_id, equipment_id) | корисник / опрема | 3NF / BCNF
|