Version 18 (modified by 12 days ago) ( diff ) | ,
---|
Функционални карактеристики и нормализација
1. Oпределување на важечките функциски зависности
Тргнуваме од список во кој сите атрибути имаат различни имиња. За таа цел атрибутите кои што имаат исти имиња ги преименувавме. Во продолжение е списокот на атрибути кои што се преименувани.
- id (Кај ентитетот pre_ordered_items) -> preorderedItemId
- name (Кај ентитетот pre_ordered_items) -> preorderedItemName
- status (Кај ентитетот reservations) -> reservationStatus
- id (Кај ентитетот reservations) -> reservationHistoryId
- status (Кај ентитетот reservation_history) -> reservationStatus
- id (Кај ентиетот menu_tags) -> menuTagId
- id (Кај ентитетот users) -> userId
- category (Кај ентитетот menus) -> menuCategory
- location (Кај ентитетот tables) -> tableLocation
2. Резервации
reservation_id | user_id | table_id | restaurant_id | reservation_date | time_from | time_to | number_of_people |
1 | 101 | 11 | 201 | 2025-05-01 | 18:00 | 20:00 | 4 |
2 | 102 | 12 | 202 | 2025-05-02 | 19:30 | 21:00 | 2 |
3 | 103 | 13 | 203 | 2025-05-03 | 17:00 | 18:30 | 3 |
Во оваа релација, restaurant_id се повторува иако е функционски зависен од table_id, бидејќи секоја маса припаѓа на еден ресторан.
Функциски зависности:
- reservation_id → user_id, table_id, restaurant_id, date, time, duration
- table_id → restaurant_id
Анализа на зависности: Само лево (детерминанти):
- reservation_id
- table_id
Само десно (зависни атрибути):
- restaurant_id, user_id, date, time, duration
Канонична покривка: Од reservation_id може да се добијат сите атрибути, затоа е кандидат клуч.
Анализа на нормализација:
Прва нормална форма (1НФ):
Сите атрибути се атомски, нема листи или вложени структури. Задоволена.
Втора нормална форма (2НФ):
Клучот е едноставен (reservation_id), па нема парцијални зависности. Задоволена.
Трета нормална форма (3НФ):
Се појавува транзитивна зависност:
reservation_id → table_id → restaurant_id
Значи, restaurant_id е транзитивно зависен од примарниот клуч (reservation_id), и релацијата не е во 3НФ.
R1: Reservation (без дупликација на restaurant_id)
- R1(reservation_id, user_id, table_id, date, time, duration)
R2: Table (со поврзаност со ресторан)
- R2(table_id, restaurant_id)
Финална анализа
- Нема дуплицирање.
- restaurant_id може да се добие преку JOIN со Table.
3. Историја на резервации
reservation_history_id | user_id | table_id | restaurant_id | reservation_date | time_from | time_to | number_of_people |
1 | 101 | 11 | 201 | 2025-05-01 | 18:00 | 20:00 | 4 |
2 | 102 | 12 | 202 | 2025-05-02 | 19:30 | 21:00 | 2 |
3 | 103 | 13 | 203 | 2025-05-03 | 17:00 | 18:30 | 3 |
Во оваа релација, restaurant_id се повторува иако е функционски зависен од table_id, бидејќи секоја маса припаѓа на еден ресторан.
Функциски зависности:
- reservation_history_id → user_id, table_id, restaurant_id, date, time, duration
- table_id → restaurant_id
Анализа на зависности: Само лево (детерминанти):
- reservation_history_id
- table_id
Само десно (зависни атрибути):
- restaurant_id, user_id, date, time, duration
Канонична покривка: Од reservation_history_id може да се добијат сите атрибути, затоа е кандидат клуч.
Анализа на нормализација:
Прва нормална форма (1НФ):
Сите атрибути се атомски, нема листи или вложени структури. Задоволена.
Втора нормална форма (2НФ):
Клучот е едноставен (reservation_history_id), па нема парцијални зависности. Задоволена.
Трета нормална форма (3НФ):
Се појавува транзитивна зависност:
reservation_history_id → table_id → restaurant_id
Значи, restaurant_id е транзитивно зависен од примарниот клуч (reservation_history_id), и релацијата не е во 3НФ.
R1: Reservation (без дупликација на restaurant_id)
- R1(reservation_history_id, user_id, table_id, date, time, duration)
R2: Table (со поврзаност со ресторан)
- R2(table_id, restaurant_id)
Финална анализа
- Нема дуплицирање.
- restaurant_id може да се добие преку JOIN со Table.