Version 10 (modified by 6 days ago) ( diff ) | ,
---|
Нормализација (верзија 1) ¶
Исполнува услов за 1NF ¶
Сите табели имаат соодветен примарен клуч и правилно се референцирани надворешните клучеви.
Исполнува услов за 2NF ¶
Нема парцијална зависност, атрибутите да зависат од дел од композитен клуч.
Исполнува услов 3NF ¶
Во сите табели колоните кои немаат функција за чување на примарен клуч, не се зависни една од друга, туку од нивниот соодветен примарен клуч. Нема транзитивна зависност.
Нормализација (верзија 2) - определување функциски зависности и да нема нешто со исто име на атрибут ¶
Функционални зависности ¶
account Table: id → username, email, password, balance
transaction Table: id → amount, currency, type, timestamp, account_id
transfer Table: id → s_id, r_id
deposit Table: id → account_id, amount, timestamp
withdraw Table: id → account_id, amount, timestamp
transferred_money Table: id → s_account_id, r_account_id, t_id, currency
Boyce-Code ¶
1. account Table - (T)
Колони: id, username, email, password, balance
Функционални зависности: id → username, email, password, balance
Анализа: id е примарниот клуч од кој зависат сите останати атрибути, па според тоа тој е и суперклучот.
Нема функционални зависности во кои детерминантата не е суперклуч.
Заклучок: Account табелата ја задоволува BCNF.
2. transaction Table - (N)
Колони: id, amount, currency, type, timestamp, account_id
Функционални зависности:
- id → amount, currency, type, timestamp, account_id
- account_id, timestamp → amount, currency, type
Анализа: id е примарниот клуч и ги одредува останатите атрибути, па затоа тој е суперклуч.
account_id, timestamp → amount, currency, type е проблематична зависност. Иако account_id и timestamp можат да се идентификуваат за трансакција, тие не се супер клуч. Ова значи account_id, timestamp не е суперклуч и можат да ја прекршат BCNF.
Заклучок: Transaction табелата не ја задоволува BCNF затоа што account_id, timestamp не прават суперклуч, но ги одредуваат другите атрибути (amount, currency, type).
3. transfer Table - (T)
Колони: id, s_id, r_id
Функционални зависности: id → s_id, r_id
Анализа: id е примарен клуч и тој уникатно ги одредува s_id и r_id.
Според тоа тој е супер клуч.
Нема функционални зависности во кои детерминантата не е суперклуч.
Заклучок: Transfer табелата ја задоволува BCNF.
4. deposit Table - (N)
Колони: id, account_id, amount, timestamp
Функционални зависности:
- id → account_id, amount, timestamp
- account_id, timestamp → amount
Анализа: id e примарниот клуч кој ги одредува сите останати атрибути, според тоа тој е и суперклуч.
account_id, timestamp → amount можат да биде проблематична зависност. Ако има повеќе повлекување на пари во исто време ова ја нарушува BCNF.
Заклучок: Deposit табелата не ја задоволува BCNF затоа што account_id, timestamp не се суперклуч, но го одредуваат amount.
5. withdraw Table - (N)
Колони: id, account_id, amount, timestamp
Функционални зависности:
- id → account_id, amount, timestamp
- account_id, timestamp → amount
Анализа: id е примарниот клуч и ги одредува останатите атрибути, па затоа тој е суперклуч.
account_id, timestamp → amount можат да биде проблематична зависност. Ако има повеќе повлекување на пари во исто време ова ја нарушува BCNF.
Заклучок: Withdraw табелата не ја задоволува BCNF затоа што account_id, timestamp не се суперклуч, но го одредуваат amount.
6. transferred_money Table - (T)
Колони: id, s_account_id, r_account_id, t_id, currency
Функционални зависности: id → s_account_id, r_account_id, t_id, currency
Анализа:
id е примарниот клуч кој се користи и како суперклуч од кои сите други атрибути зависат.
s_account_id, r_account_id, t_id можат да се употребат заедно како еден суперклуч, бидејќи претставуваат валидна нетривијална зависност која може да се корисни приидентификација на една редица
Заклучок: Transferred_money табелата ја задоволува BCNF.