| | 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). |