Version 13 (modified by 8 days ago) ( diff ) | ,
---|
Нормализација
Функциски зависности и нормализација Базата ќе се подели во неколку функционални категории:
- Менаџирање на клиенти и нивни податоци (CLIENT, CLIENT_TYPE, ADDRESS)
- Менаџирање на осигурителни полиси (POLICY, POLICY_TYPE, POLICY_COVERAGE)
- Менаџирање на авто осигурување (VEHICLE, VEHICLE_INSURANCE)
- Менаџирање на имотно осигурување (PROPERTY, PROPERTY_INSURANCE)
- Менаџирање на патничко осигурување (TRAVEL_INSURANCE, DESTINATION)
1. Менаџирање на клиенти и нивни податоци (CLIENT, CLIENT_TYPE, ADDRESS)
Првична релација (не нормализирана):
R = { client_id, client_name, client_email, client_phone, client_type_id, client_type_name, client_type_description, address_id, street, city, postcode }
client_id | client_name | client_email | client_phone | client_type_id | client_type_name | client_type_description | address_id | street | city | postcode |
---|---|---|---|---|---|---|---|---|---|---|
1 | John Doe | john@… | 123-456-789 | 1 | Individual | Personal client | 101 | Main St 123 | Skopje | 1000 |
2 | Jane Smith | jane@… | 987-654-321 | 2 | Corporate | Business client | 102 | Oak Ave 456 | Bitola | 2000 |
Функциски зависности:
client_id → client_name, client_email, client_phone, client_type_id, address_id
client_type_id → client_type_name, client_type_description
address_id → street, city, postcode
Декомпозиција во 3НФ:
R1 = { client_id, client_name, client_email, client_phone, client_type_id, address_id }
R2 = { client_type_id, client_type_name, client_type_description }
R3 = { address_id, street, city, postcode }
2. Менаџирање на осигурителни полиси (POLICY, POLICY_TYPE, POLICY_COVERAGE)
Првична релација:
R = { policy_id, policy_number, policy_date, policy_type_id, policy_type_name, policy_type_description, client_id, coverage_id, coverage_type, coverage_description }
policy_id | policy_number | policy_date | policy_type_id | policy_type_name | policy_type_description | client_id | coverage_id | coverage_type | coverage_description |
---|---|---|---|---|---|---|---|---|---|
1 | POL123 | 11.10.2023 | 1 | Auto | Vehicle Insurance | 1 | 101 | Collision | Covers vehicle damage |
2 | POL456 | 07.11.2023 | 2 | Property | Home Insurance | 2 | 102 | Fire | Covers fire damage |
Функциски зависности:
policy_id → policy_number, policy_date, policy_type_id, client_id
policy_type_id → policy_type_name, policy_type_description
coverage_id → coverage_type, coverage_description
Декомпозиција во 3НФ:
R1 = { policy_id, policy_number, policy_date, policy_type_id, client_id }
R2 = { policy_type_id, policy_type_name, policy_type_description }
R3 = { policy_id, coverage_id }
R4 = { coverage_id, coverage_type, coverage_description }
3. Менаџирање на авто осигурување (VEHICLE, VEHICLE_INSURANCE)
Првична релација:
R = { vehicle_id, vehicle_registration, vehicle_make, vehicle_model, vehicle_year, client_id, policy_id }
vehicle_id | vehicle_registration | vehicle_make | vehicle_model | vehicle_year | client_id | policy_id |
---|---|---|---|---|---|---|
1 | SK-1234-AB | Toyota | Corolla | 2020 | 1 | 1 |
2 | BT-2154-BA | Ford | Focus | 2018 | 2 | 2 |
Функциски зависности:
vehicle_id → vehicle_registration, vehicle_make, vehicle_model, vehicle_year
policy_id → client_id
Декомпозиција во 3НФ:
R1 = { vehicle_id, vehicle_registration, vehicle_make, vehicle_model, vehicle_year }
R2 = { policy_id, client_id }
R3 = { vehicle_id, policy_id } (за поврзување на осигурувањето со возилата)
4. Менаџирање на имотно осигурување (PROPERTY, PROPERTY_INSURANCE)
Првична релација:
R = { property_id, property_type, property_value, property_address_id, client_id, policy_id }
property_id | property_type | property_value | property_address_id | client_id | policy_id |
---|---|---|---|---|---|
1 | House | 150000 | 201 | 1 | 1 |
2 | Apartment | 80000 | 202 | 2 | 2 |
Функциски зависности:
property_id → property_type, property_value, property_address_id
policy_id → client_id
Декомпозиција во 3НФ:
R1 = { property_id, property_type, property_value, property_address_id }
R2 = { property_id, policy_id }
R3 = { policy_id, client_id }
5. Менаџирање на патничко осигурување (TRAVEL_INSURANCE, DESTINATION)
Првична релација:
R = { travel_insurance_id, travel_date, travel_destination_id, destination_name, destination_country, client_id, policy_id }
travel_insurance_id | travel_date | travel_destination_id | destination_name | destination_country | client_id | policy_id |
---|---|---|---|---|---|---|
1 | 01.03.2025 | 301 | Paris | France | 1 | 1 |
2 | 20.02.2025 | 302 | Berlin | Germany | 2 | 2 |
Функциски зависности:
travel_insurance_id → travel_date, travel_destination_id, policy_id, client_id
travel_destination_id → destination_name, destination_country
Декомпозиција во 3НФ:
R1 = { travel_insurance_id, travel_date, travel_destination_id, policy_id, client_id }
R2 = { travel_destination_id, destination_name, destination_country }
Со оваа декомпозиција, базата е во 3-та нормална форма (3НФ), што значи:
- Ги елиминираме повторувањата
- Ги одделуваме зависностите во посебни релации
- Осигуруваме дека секој атрибут е директно зависен само од примарниот клуч на релацијата