| 1 | == Нормализација |
| 2 | Прво, за 1NF треба да ги отстраниме сите низи или групи кои се повторуваат и сите вредности треба да имаат атомски единчени вредности. |
| 3 | |
| 4 | Во нашиот случај треба да ги отстраниме од табелата за претставништа низите за телефони и марки. |
| 5 | |
| 6 | За да го направиме тоа креираме нови табели за нив и ги отстрануваме потоа од постоечките. Целосната процедура е: |
| 7 | {{{ |
| 8 | CREATE TABLE dealership_brands ( |
| 9 | dealership_tax_nr varchar(50) NOT NULL, |
| 10 | brand_name varchar(100) NOT NULL, |
| 11 | FOREIGN KEY (dealership_tax_nr) REFERENCES dealership(tax_nr) |
| 12 | ); |
| 13 | |
| 14 | INSERT INTO dealership_brands (dealership_tax_nr, brand_name) |
| 15 | SELECT tax_nr, unnest(brands) FROM dealership; |
| 16 | |
| 17 | ALTER TABLE dealership DROP COLUMN brands; |
| 18 | |
| 19 | CREATE TABLE dealership_telephones ( |
| 20 | dealership_tax_nr varchar(50) NOT NULL, |
| 21 | phone_number varchar(50) NOT NULL, |
| 22 | FOREIGN KEY (dealership_tax_nr) REFERENCES dealership(tax_nr) |
| 23 | ); |
| 24 | |
| 25 | -- Insert the dealership telephones into the new table |
| 26 | INSERT INTO dealership_telephones (dealership_tax_nr, phone_number) |
| 27 | SELECT tax_nr, unnest(telephones) FROM dealership; |
| 28 | |
| 29 | ALTER TABLE dealership DROP COLUMN telephones; |
| 30 | |
| 31 | }}} |
| 32 | |
| 33 | Следно за 2NF треба сите атрибути кои не се клучеви да се целосно а не делумно зависни на главниот клуч. |
| 34 | |
| 35 | Во нашата табела за претставништва имаме главен клуч tax_nr, па сега со новите табели за телефон и брендови за секое претставништво имаме зависност на главниот клуч, со што е постигната 2NF. |
| 36 | |
| 37 | Конечно за 3NF треба да се отстранети транзитивни зависности, односно зависности каде атрибути кои не се клучеви зависат на други атрибути кои не се клучеви. Кај нас ова е веќе постигнато бидејќи во секоја табела секој атрибут кој е foreign key посочува кон главен клуч во друга табела (на пример embg и a_id во табелата за payments). |