Changes between Version 2 and Version 3 of Normalization


Ignore:
Timestamp:
09/16/25 15:20:42 (5 days ago)
Author:
221028
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Normalization

    v2 v3  
    22== Нормализација на базата и функционални карактеристики
    33
    4 * Субтипови за корисник — јасна поделба на улоги:
     4**Мега-релација R**
    55
     6R = {
    67
    78{{{
    8 User(user_id, user_name, user_surname, email, password, role)
     9user_id, user_name, user_surname, email, password, role,
     10student_id, teacher_id,
     11element_id, symbol, element_name, atomic_number, atomic_weight, melting_point, boiling_point, hazard_type, description_element,
     12equipment_id, equipment_name, type, description, safety_info,
     13reaction_id, r_teacher_id, element1_id, element2_id, product, conditions,
     14experiment_id, e_teacher_id, reaction_fk, result, safety_warning, time_stamp,
     15upe_user_id, upe_experiment_id, participation_timestamp,
     16uve_user_id, uve_element_id, viewed_at_el,
     17uvl_user_id, uvl_equipment_id, viewed_at_eq,
     18eleq_experiment_id, eleq_equipment_id
     19}}}
     20 }
    921
     22**Функциски зависности**
     23
     24User:
     25{{{
     26user_id → user_name, user_surname, email, password, role; и email → user_id
     27}}} (email е уникатен)
     28
     29Teacher/Student:
     30{{{
     31teacher_id → (ref User)
     32}}}
     33, {{{
     34student_id → (ref User, teacher_id)
     35}}}
     36
     37Elements:
     38{{{
     39element_id → symbol, element_name, atomic_number, atomic_weight, melting_point, boiling_point, hazard_type, description_element;
     40}}}
     41 и
     42{{{
     43symbol → element_id (симбол е уникатен)
    1044}}}
    1145
    1246
     47LabEquipment:
    1348{{{
    14 student(student_id → User.user_id, teacher_id → User.user_id)
     49equipment_id → equipment_name, type, description, safety_info;
     50}}}
     51 
     52{{{
     53(името е UNIQUE) equipment_name → equipment_id
    1554}}}
    1655
    1756
    18 
     57Reaction:
    1958{{{
    20 teacher(teacher_id → User.user_id)
     59 reaction_id → r_teacher_id, element1_id, element2_id, product, conditions; и доменски (element1_id, element2_id, conditions) → product
    2160}}}
    2261
    2362
    24 * Домен-табели
    25 
     63Experiment:
    2664{{{
    27 elements(element_id, symbol, element_name, atomic_number, atomic_weight, melting_point, boiling_point, hazard_type, description_element, teacher_id→User)
     65 experiment_id → e_teacher_id, reaction_fk, result, safety_warning, time_stamp
    2866}}}
    2967
    3068
     69Лог/N:M:
    3170
    3271{{{
    33 labequipment(equipment_id, equipment_name, type, description, safety_info, teacher_id→User)
     72(upe_user_id, upe_experiment_id) → participation_timestamp
     73(uve_user_id, uve_element_id) → viewed_at_el
     74(uvl_user_id, uvl_equipment_id) → viewed_at_eq
     75(eleq_experiment_id, eleq_equipment_id) → (без не-клучни атрибути)
    3476}}}
    3577
    3678
     792) Кандидат-клучеви
    3780
    38 {{{
    39 reaction(reaction_id, teacher_id→User, element1_id→elements, element2_id→elements, product, conditions)
     81User {user_id} (алтернативен {email}); Elements {element_id} (алтернативен {symbol}); LabEquipment {equipment_id} (алтернативен {equipment_name}); Reaction {reaction_id} (алтернативно тројката (e1,e2,conditions)); Experiment {experiment_id}; лог табели со композитни PK: {user_id,experiment_id}, {user_id,element_id}, {user_id,equipment_id}, {experiment_id,equipment_id}.
    4082
    41 }}}
     833) 1NF → 2NF → 3NF/BCNF
    4284
     851NF: сите атрибути се атомарни.
    4386
    44 {{{
    45 experiment(experiment_id, teacher_id→User, reaction_id→reaction, result, safety_warning, time_stamp)
    46 }}}
     872NF: во композитните лог-табели не-клучните колони зависат од целиот клуч.
    4788
     893NF/BCNF:
     90User(email UNIQUE), Elements(symbol UNIQUE), LabEquipment(equipment_name UNIQUE) ⇒ детерминантите се суперклучеви.
     91Reaction е 3NF; со UNIQUE над (e1,e2,conditions) станува и BCNF.
     92N:M табелите се BCNF.
    4893
    49 * N:M релации
     944) Lossless & Dependency-preserving
    5095
    51 {{{
    52 experimentlabequipment(experiment_id→experiment, equipment_id→labequipment)
    53 
    54 }}}
    55 
    56 
    57 {{{
    58 userparticipatesinexperiment(user_id→User, experiment_id→experiment[, participation_timestamp])
    59 }}}
    60 
    61 
    62 * Tracking-табели (активности/прегледи):
    63 
    64 
    65 {{{
    66 userviewselement(user_id→User, element_id→elements)
    67 }}}
    68 
    69 
    70 
    71 {{{
    72 userviewslabequipment(user_id→User, equipment_id→labequipment)
    73 }}}
     96Lossless преку PK/FK споеви (Experiment ⋈ Reaction по reaction_id, Student ⋈ User по student_id=user_id …).
     97Dependency-preserving: сите ФЗ ги чуваме со PK/UNIQUE/CHECK/FK (email, symbol, equipment_name; (user_id,experiment_id); физички CHECK-ови), без глобални JOIN-ови.
    7498
    7599|| Табела                       || PK                              || Важни FK                                || НФ статус                         ||