Changes between Initial Version and Version 1 of Normalization


Ignore:
Timestamp:
09/11/25 02:50:17 (10 hours ago)
Author:
141515
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Normalization

    v1 v1  
     1== Нормализација
     2Прво, за 1NF треба да ги отстраниме сите низи или групи кои се повторуваат и сите вредности треба да имаат атомски единчени вредности.
     3
     4Во нашиот случај треба да ги отстраниме од табелата за претставништа низите за телефони и марки.
     5
     6За да го направиме тоа креираме нови табели за нив и ги отстрануваме потоа од постоечките. Целосната процедура е:
     7{{{
     8CREATE 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
     14INSERT INTO dealership_brands (dealership_tax_nr, brand_name)
     15SELECT tax_nr, unnest(brands) FROM dealership;
     16
     17ALTER TABLE dealership DROP COLUMN brands;
     18
     19CREATE 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
     26INSERT INTO dealership_telephones (dealership_tax_nr, phone_number)
     27SELECT tax_nr, unnest(telephones) FROM dealership;
     28
     29ALTER TABLE dealership DROP COLUMN telephones;
     30
     31}}}
     32
     33Следно за 2NF треба сите атрибути кои не се клучеви да се целосно а не делумно зависни на главниот клуч.
     34
     35Во нашата табела за претставништва имаме главен клуч tax_nr, па сега со новите табели за телефон и брендови за секое претставништво имаме зависност на главниот клуч, со што е постигната 2NF.
     36
     37Конечно за 3NF треба да се отстранети транзитивни зависности, односно зависности каде атрибути кои не се клучеви зависат на други атрибути кои не се клучеви. Кај нас ова е веќе постигнато бидејќи во секоја табела секој атрибут кој е foreign key посочува кон главен клуч во друга табела (на пример embg и a_id во табелата за payments).