Changes between Version 6 and Version 7 of Normalization


Ignore:
Timestamp:
08/14/25 23:14:42 (5 days ago)
Author:
211228
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Normalization

    v6 v7  
    33== Подобро именување на атрибути
    44
    5 status од табела Room_Request -> request_status
    6 status од табела Document -> document_status
     5status од табела Room_Request -> request_status [[br]]
     6status од табела Document -> document_status [[br]]
     7start_date од табелата StudentTookRoom -> room_start_date[[br]]
     8end_date од табелата StudentTookRoom -> room_end_date[[br]]
     9is_available од Room -> room_is_available [[br]]
     10capacity од Room -> room_capacity
    711
    8 
    9 R = { u_id, phone_number, first_name, last_name, email, pass, faculty_name, year_of_studies, is_exempt, gender, p_id, amount, payment_date, student_id, payment_month, d_id, d_comment, d_name, document_status, [[br]] upload_date, file_path, emp_id, block_id, num_available_rooms, room_number, is_available, capacity, request_status, roommate_email, requested_time, start_date, end_date}
     12R = { u_id, phone_number, first_name, last_name, email, pass, faculty_name, year_of_studies, is_exempt, gender, p_id, amount, payment_date, payment_month, d_id, d_comment, d_name, document_status, [[br]] upload_date, file_path, block_id, num_available_rooms, room_number, room_is_available , room_capacity, request_status, roommate_email, room_start_date, room_end_date}
    1013
    1114== Определување на функциски зависности ==
    1215
    1316u_id -> phone_number, first_name, last_name, email, pass [[br]]
    14 email -> u_id, phone_number, first_name, last_name, pass ( транзитивна вредност па ја отфрлам )[[br]]
    15 student_id -> u_id, phone_number, first_name, last_name, email, pass, faculty_name, year_of_studies, is_exempt, gender[[br]]
    16 emp_id -> ( претставува редундантна вредност, исти атрибути како u_id -> ...) [[br]]
     17u_id(Student) -> year_of_studies, is_exempt, gender[[br]]
     18u_id(Employee) -> ( претставува редундантна вредност, исти атрибути како u_id -> ...) [[br]]
    1719p_id -> amount, payment_date, payment_month, student_id[[br]]
    18 d_id -> d_comment, d_name, d_status, upload_date, file_path, emp_id, student_id[[br]]
     20d_id -> d_comment, d_name, d_status, upload_date, file_path, u_id (Студентот прикачува)[[br]]
     21d_id -> emp_id ( Вработениот прегледува документ )[[br]]
    1922block_id -> num_available_rooms[[br]]
    2023room_number, block_id -> is_available, capacity [[br]]
     
    3841Сега R е во прва нормализирана форма односно ги исполнува условите сите атрибути да се атомски, нема колони кои се повторуваат и има примарен клуч кој ги покрива сите атрибути. [[br]]
    3942
     43== Декомпозиција во 2НФ - отстранување на парцијални зависности
     44
     45Ги отстранувам сите атрибути зависни од u_id во табела User(u_id, first_name, last_name, phone_number, email, password) [[br]]
     46Атрибутите is_exempt, faculty_name, year_of_studies исто се зависни од u_id но ги отстранувам во нова табела бидејќи ова е пример за наследство и за избегнување на null вредности - Student(u_id, is_exempt, faculty_name, year_of_studies) [[br]]
     47Атрибутите amount, payment_date, payment_month се зависни од p_id па ги делам во табела Payment(p_id, amount, payment_date, payed_month, u_id (Student))
     48Атрибутите d_comment, d_name, document_status, upload_date, file_path зависат само од d_id па ги ставам во табела заедно со зависностите за Student и Employee - Document(d_id, d_comment, d_name, document_status, upload_date, file_path, u_id(Student), u_id(Employee)) [[br]]
     49num_available_rooms зависи од block_id па Block(block_id, num_available_rooms) [[br]]
     50room_is_available , room_capacity зависат од заедничкиот парцијален примарен клуч (block_id, room_number) па Room(block_id, room_number, room_is_available , room_capacity) [[br]]
     51request_status, roommate_email атрибутите се зависни од u_id(Student), u_id(Employee), room_number, block_id па табелата би била Room_request( u_id(Student), u_id(Employee), room_number, block_id) [[br]]
     52room_start_date, room_end_date атрибутите зависат на (u_id(Student), room_number, block_id) и тоа би била посебна табела Student_Took_Room(u_id(Student), room_number, block_id, room_start_date, room_end_date) [[br]]
     53
     54Со оваа поделба е направено отстранување на парцијалните зависности па имаме декомпозиција до втора нормална форма [[br]]
     55
     56== Декомпозиција во 3НФ
     57
     58Сите релации остануваат исти како и во првичната база па немам дополнителни промени во тој однос, имам подобрување во именувањето на некои од атрибутите за избегнување на конфузија.[[br]]
    4059
    4160
     
    4362
    4463
     64
     65
     66