Changes between Version 15 and Version 16 of Normalization


Ignore:
Timestamp:
12/26/25 23:21:08 (7 days ago)
Author:
211101
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Normalization

    v15 v16  
    7474R ∩ R1 = { user_id, user_name, email, password }
    7575
    76 user_id → R1
    77 
    7876R ∩ R1 → R1
    7977
     
    10199R1.1 ∩ R2 = { transaction_account_id, account_name, balance, user_id }
    102100
    103 transaction_account_id → R
    104 
    105101R1.1 ∩ R2 → R2
    106102
     
    130126R2.1 ∩ R3 = { transaction_id, transaction_name, amount, net_amount, date, tag_id, tag_name }
    131127
    132 transaction_id → R3
    133 
    134128R2.1 ∩ R3 → R3
    135129
     
    157151R3.1 ∩ R4 = { transaction_breakdown_id, transaction_id, transaction_account_id, spent_amount, earned_amount }
    158152
    159 transaction_breakdown_id → R4
    160 
    161153R3.1 ∩ R4 → R4
    162154
     
    221213R3 ∩ R3.2 = { transaction_id, transaction_name, amount, net_amount, date }
    222214
    223 transaction_id → R3.2
    224 
    225215R3 ∩ R3.2 → R3.2
    226216
     
    247237
    248238R3.3 ∩ R3.4 = { tag_id, tag_name }
    249 
    250 tag_id → R3.4
    251239
    252240R3.3 ∩ R3.4 → R3.4
     
    288276==== Третата нормална форма погоре исто така е и BCNF
    289277
    290 === Lossless Join Test
    291 Секоја декомпозиција направена при нормализацијата е lossless, односно со JOIN операција може целосно да се реконструира оригиналната релација без губење на информации.
    292 
    293 Декомпозицијата на релација R(X) во R1(A) и R2(B) е lossless ако важи:
    294 - (A ∩ B) → A   или   (A ∩ B) → B
    295 
    296 ==== 1
    297 TRANSACTION_ACCOUNT_WITH_USER_DATA
    298 
    299 - R(transaction_account_id, account_name, balance, user_id, user_name, email)
    300 - R1(transaction_account_id, account_name, balance, user_id)
    301 - R2(user_id, user_name, email)
    302 
    303 R1 ∩ R2 = {user_id}
    304 
    305 - {transaction_account_id} → {user_id}
    306 - {user_id} → {user_name, email}
    307 
    308 (user_id) → R2
    309 ⇒ Декомпозицијата е lossless
    310 
    311 ==== 2
    312 TRANSACTION_WITH_TAG_NAME
    313 
    314 - R(transaction_id, transaction_name, amount, net_amount, date, tag_id, tag_name)
    315 - R1(transaction_id, transaction_name, amount, net_amount, date, tag_id)
    316 - R2(tag_id, tag_name)
    317 
    318 R1 ∩ R2 = {tag_id}
    319 
    320 - {tag_id} → {tag_name}
    321 
    322 (tag_id) → R2
    323 ⇒ Декомпозицијата е lossless
    324 
    325 ==== 3
    326 
    327 TRANSACTION_ACCOUNT_WITH_USER_DATA → TRANSACTION_ACCOUNT + USER
    328 
    329 - R(transaction_account_id, account_name, balance, user_id, user_name, email)
    330 - R1(transaction_account_id, account_name, balance, user_id)
    331 - R2(user_id, user_name, email)
    332 
    333 R1 ∩ R2 = {user_id}
    334 
    335 - {user_id} → {user_name, email}
    336 
    337 (user_id) → R2
    338 ⇒ Декомпозицијата е lossless
    339 
    340 ==== 4
    341 TRANSACTION_WITH_TAG_NAME → TRANSACTION + TAG_ASSIGNED_TO_TRANSACTION
    342 
    343 - R(transaction_id, transaction_name, amount, net_amount, date, tag_id)
    344 - R1(transaction_id, transaction_name, amount, net_amount, date)
    345 - R2(transaction_id, tag_id)
    346 
    347 R1 ∩ R2 = {transaction_id}
    348 
    349 - {transaction_id} → {transaction_name, amount, net_amount, date}
    350 
    351 (transaction_id) → R1
    352 ⇒ Декомпозицијата е lossless
    353 
    354 ==== 5
    355 TAG
    356 
    357 - R(tag_id, tag_name)
    358 - R1(tag_id, tag_name)
    359 
    360 (Нема реална декомпозиција – табелата е веќе атомска)
    361 ⇒ Тривијално lossless
    362 
    363 ==== 4
    364 TRANSACTION_BREAKDOWN
    365 
    366 - R(transaction_breakdown_id, transaction_id, transaction_account_id, spent_amount, earned_amount)
    367 
    368 Не е извршена декомпозиција, примарниот клуч функционално ги определува сите атрибути
    369 ⇒ Нема потреба од lossless join тест
    370 
    371278===
    372279