== Нормализација на базата и функционални карактеристики * Субтипови за корисник — јасна поделба на улоги: {{{ 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) }}} * N:M релации {{{ 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 ||