= Нормализација == Определување на функционални зависности transaction_id = R { account_id, username, e-mail, password, balance, transaction_id, amount, type, timestamp, s_id, r_id, withdraw_id, deposit_id, transferred_id, currency } account_id -> username, e-mail, password, balance transaction_id -> amount, type, timestamp, account_id withdraw_id -> account_id, amount, timestamp deposit_id -> account_id, amount, timestamp transferred_id -> s_id, r_id, transaction_id, currency === Лево * account_id * transaction_id * withdraw_id * deposit_id * transferred_id === Десно * username * e-mail * password * balance * amount * type * timestamp * currency === Двете Во мојата шема за база нема атрибут што се јавува како примарен клуч и истовремено надворешен во некоја од табелите. === Покривачи account_id += {username, e-mail, password, balance} не ги содржи сите атрибути transaction_id += {amount, type, timestamp, account_id} не ги содржи сите атрибути withdraw_id += {account_id, amount, timestamp} не ги содржи сите атрибути deposit_id += {account_id, amount, timestamp} не ги содржи сите атрибути transferred_id += { s_id, r_id, transaction_id, currency } не ги содржи сите атрибути account_id, transaction_id += {username, e-mail, password, balance, amount, type, timestamp, account_id} не ги содржи сите атрибути account_id, transaction_id, transferred_id += {username, e-mail, password, balance, amount, type, timestamp, account_id, s_id, r_id, transaction_id, currency} само оваа комбинација одговара за примарен клуч и него го избираме === Декомпозиција Сите табели имаат соодветен примарен клуч и правилно се референцирани надворешните клучеви. Според тоа тие исполнуваат 1NF. Во сите табели колоните кои немаат функција за чување на примарен клуч, не се зависни една од друга, туку од нивниот соодветен примарен клуч. Нема транзитивна зависност, исполнуваат 3NF. Сепак некои табели не го исполнуваат 2NF '''R1 {account_id, username, email, password, balance} е во BCNF''' R2 {amount, type, timestamp, account_id, s_id, r_id, transaction_id, currency} R2 не ја задоволува BNCF затоа што account_id, timestamp -> amount '''R21 {s_account_id, r_account_id, t_id, currency} е во BCNF''' === Релации '''account''' (останува иста) '''{id, username, email, password, balance}''' '''transaction''' (останува иста)'''{id, amount, currency, type, timestamp, account_id}''' '''transfer'''(останува иста)'''{ id s_id, r_id}''' '''deposit'''(се менуваат атрибутите)'''{ id, account_id, transaction_id, amount}''' '''withdraw''' (се менуваат атрибутите)'''{id, account_id, transaction_id, amount}''' '''transferred_money''' (останува иста) '''{ id → s_account_id, r_account_id, t_id, currency}''' Направив промени во deposit и withdraw релацијата такашто timestamp го исфрлив, а додадов атрибут transaction_id кој се референцира кон табелата transaction. Со ова се исполнуваат исте услови 1NF,2NF, 3NF и целата BCNF. На тој начин ако ги користиме account_id и transaction_id за одредување на amount атрибутот, тие два атрибута како суперклуч нема да ја нарушат Boyce-Code шемата и се избегнува дуплирање на податоците во табелите.