Version 42 (modified by 11 hours ago) ( diff ) | ,
---|
Нормализација
Функциски зависности и нормализација Базата ќе се подели во неколку функционални категории:
- Менаџирање на клиенти и нивни податоци (Pol_dog, Customer)
- Менаџирање на пакети и покривања (Package,Covers)
- Менаџирање на осигурителни полиси (Policy,Auto_pol,Vehicle,Property_pol,Property,Travel_pol,Pol_osi)
- Плаќања (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 | 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_embg → c_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НФ), што значи:
- Ги елиминираме повторувањата
- Ги одделуваме зависностите во посебни релации
- Осигуруваме дека секој атрибут е директно зависен само од примарниот клуч на релацијата