wiki:Normalization

Version 42 (modified by 175012, 11 hours ago) ( diff )

--

Нормализација

Функциски зависности и нормализација Базата ќе се подели во неколку функционални категории:

  1. Менаџирање на клиенти и нивни податоци (Pol_dog, Customer)
  2. Менаџирање на пакети и покривања (Package,Covers)
  3. Менаџирање на осигурителни полиси (Policy,Auto_pol,Vehicle,Property_pol,Property,Travel_pol,Pol_osi)
  4. Плаќања (Payment)

1. Менаџирање на клиенти и нивни податоци (Pol_dog, Customer)

Првична релација (не нормализирана):

R = {d_embg ,name,surname, birthdate,kontakt, c_id ,email,pass,type }

d_embg name surname birthdate kontakt c_id email password type
290699842 Armend Selmani 19980629 072227959 1 armend@… as12345 false
290699945 Ardit Ameti 19990629 071234787 2 ardit@… aa9876 true

Функциски зависности:

d_embg → name,surname, birthdate,kontakt

c_id → email, pass, type

d_embgc_id (еден осигуреник има една сметка во системот)

Декомпозиција во 3НФ:

R1(Customer Details) = { d_embg ,name,surname, birthdate,kontakt } (Опис: Лични информации за клиентите.)

Примарен клуч: d_embg

Странски клуч: c_id → Customer(c_id)

R2(Customer Account) = { c_id ,name,email,pass,type } (Опис: Информации за кориснички профил и пристап до системот.)

Примарен клуч: c_id

R3(Pol_dog Customer) = { d_embg , c_id } (Опис: Врска помеѓу клиент и корисник (еден клиент може да има еден корисничк.)

Примарен клуч: (d_embg,c_id) (композитен клуч)

2. Менаџирање на пакети и покривања (Package,Covers)

Првична релација:

R = { code ,title, type_pol, total, valute, cov_id , cov_amount, cov_type }

code title type_pol total value cov_id cov_amount cov_type
1 Auto Kasko Auto 15000 MKD 1 10000 Штета од сообраќајка
2 Travel Basic Travel 3000 MKD 2 2000 Медицински трошоци во странство

Функциски зависности:

code → title,type_pol,total,value

cov_id → cov_amount,cov_type,

Декомпозиција во 3НФ:

R1(Package) = { code ,title,type_pol,total,valute } (Опис: Информации за осигурителен пакет.)

Примарен клуч: code

R2(Coverage) = { cov_id ,cov_amount,cov_type,package_code } (Опис: Детали за покривање во осигурување.)

Примарен клуч: cov_id

Странски клуч: package_code → Package(code)

R3(Package Coverage) = { code , cov_id } (Опис: Врска меѓу пакети и нивните покривања (еден-на-многу).)

Примарен клуч: (code, cov_id) (композитен клуч, релација еден-на-многу)

3. Менаџирање на осигурителни полиси (Policy,Auto_pol,Vehicle,Property_pol,Property,Travel_pol,Pol_osi)

Првична релација:

R = { p_id , s_date, e_date, a_id , pol_id, v_id , marka, model, license_plate, type, pr_id , pol_id, prop_id , address, floor, year_build, security, tr_id , pol_id, o_embg , name, surname, birthdate, kontakt}

p_id s_date e_date a_id pol_id v_id marka model license_plate type pr_id pol_id prop_id address floor year_build security tr_id pol_id o_embg name surname birthdate kontakt
1 2025-01-15 2025-01-25 1 1 1 Audi A6 SK-1234-AB Hatchback 1 1 1 Skopje, Center, Blvd 3 2015-03-12 true 1 1 210699945 Ardit Ameti 19990621 070112546
2 2025-02-04 2025-02-14 2 2 2 BMW X5 KU-5689-AD SUV 2 2 2 Kumanovo, Center, Blvd 2 2001-02-05 false 2 2 290699842 Armend Selmani 19980629 071258963

Функциски зависности:

p_id → s_date,e_date

a_id → pol_id

v_id → marka,model,license_plate,type

pr_id → pol_id

prop_id → address, floor,year_build,security

tr_id → pol_id

o_embg → name,surname,birthdate,kontakt

Декомпозиција во 3НФ:

R1(Policy) = { p_id ,s_date,e_datepackage_code, d_embg } (Опис: Основни информации за полиса.)

Примарен клуч: p_id

Странски клучеви: package_code → Package(code), d_embg → Pol_dog(d_embg)

R2(Auto Policy) = { a_id ,pol_id,v_id } (Опис: Врска меѓу авто-полиса и полиса.)

Примарен клуч: a_id

Странски клучеви: pol_id → Policy(p_id), v_id → Vehicle(v_id)

R3(Vehicle) = { v_id ,marka,model,license_plate,type } (Опис: Детали за возила кои се осигурени.)

Примарен клуч: v_id

R4(Property Policy) = { pr_id ,pol_id, prop_id } (Опис: Врска меѓу имот и полиса.)

Примарен клуч: pr_id

Странски клучеви: pol_id → Policy(p_id), prop_id → Property(prop_id)

R5(Property) = { prop_id ,address,floor,year_build,security } (Опис: Детали за осигурен недвижен имот.)

Примарен клуч: prop_id

R6(Travel Policy) = { tr_id ,pol_id,o_embg} (Опис: Врска меѓу патување и полиса.)

Примарен клуч: tr_id

Странски клучеви: pol_id → Policy(p_id), o_embg → Pol_osi(o_embg)

R7(Policy Owner) = { o_embg ,name,surname,birthdate,kontakt } (Опис: Сопственици на полиси – лични податоци.)

Примарен клуч: o_embg

4.Плаќања (Payment)

Првична релација:

R = {visa_number, p_date, p_amount, policy_id }

visa_number p_date p_amount policy_id
4111111111111111 2025-01-05 15000 1
4222222222222222 2025-02-02 3000 2

Функциски зависности:

payment_num → visa_number, p_date, p_amount, pol_id

Декомпозиција во 3НФ:

R1(Payment)={payment_num, visa_number, p_date, p_amount, pol_id} (Опис: Плаќања)

Примарен клуч: payment_num

Странски клучеви: pol_id → Policy(p_id)


Со оваа декомпозиција, базата е во 3-та нормална форма (3НФ), што значи:

  • Ги елиминираме повторувањата
  • Ги одделуваме зависностите во посебни релации
  • Осигуруваме дека секој атрибут е директно зависен само од примарниот клуч на релацијата
Note: See TracWiki for help on using the wiki.