Version 8 (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.
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.