== Нормализација Функциски зависности и нормализација Базата ќе се подели во неколку функционални категории: 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 =||= John Doe =||= john@example.com =||= 123-456-789 =||= 1 =||= Individual =||= Personal client =||= 101 =||= Main St 123 =||= Skopje =||= 1000 =|| ||= 2 =||= Jane Smith =||= jane@example.com =||= 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НФ), што значи: - Ги елиминираме повторувањата - Ги одделуваме зависностите во посебни релации - Осигуруваме дека секој атрибут е директно зависен само од примарниот клуч на релацијата