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} |
| 12 | R = { 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} |
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]] |
| 17 | u_id(Student) -> year_of_studies, is_exempt, gender[[br]] |
| 18 | u_id(Employee) -> ( претставува редундантна вредност, исти атрибути како u_id -> ...) [[br]] |
| 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]] |
| 49 | num_available_rooms зависи од block_id па Block(block_id, num_available_rooms) [[br]] |
| 50 | room_is_available , room_capacity зависат од заедничкиот парцијален примарен клуч (block_id, room_number) па Room(block_id, room_number, room_is_available , room_capacity) [[br]] |
| 51 | request_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]] |
| 52 | room_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]] |