wiki:Normalization

Version 15 (modified by 175012, 8 days ago) ( diff )

--

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

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

  1. Менаџирање на клиенти и нивни податоци (CLIENT, CLIENT_TYPE, ADDRESS)
  2. Менаџирање на осигурителни полиси (POLICY, POLICY_TYPE, POLICY_COVERAGE)
  3. Менаџирање на авто осигурување (VEHICLE, VEHICLE_INSURANCE)
  4. Менаџирање на имотно осигурување (PROPERTY, PROPERTY_INSURANCE)
  5. Менаџирање на патничко осигурување (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 Armend Selmani armend@… 123-456-789 1 Individual Personal client 101 Rokomija 49 Skopje 1000
2 Ardit Ameti ardit@… 987-654-321 2 Corporate Business client 102 Metodija 1 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.2024 1 Auto Vehicle Insurance 1 101 Collision Covers vehicle damage
2 POL456 07.11.2024 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НФ), што значи:

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