Changes between Version 9 and Version 10 of Normalization


Ignore:
Timestamp:
12/25/25 03:18:17 (9 days ago)
Author:
211101
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Normalization

    v9 v10  
    181181==== Третата нормална форма погоре исто така е и BCNF
    182182
     183=== Lossless Join Test
     184Секоја декомпозиција направена при нормализацијата е lossless, односно со JOIN операција може целосно да се реконструира оригиналната релација без губење на информации.
     185
     186Декомпозицијата на релација R(X) во R1(A) и R2(B) е lossless ако важи:
     187- (A ∩ B) → A   или   (A ∩ B) → B
     188
     189==== 1
     190TRANSACTION_ACCOUNT_WITH_USER_DATA
     191
     192- R(transaction_account_id, account_name, balance, user_id, user_name, email)
     193- R1(transaction_account_id, account_name, balance, user_id)
     194- R2(user_id, user_name, email)
     195
     196R1 ∩ R2 = {user_id}
     197
     198- {transaction_account_id} → {user_id}
     199- {user_id} → {user_name, email}
     200
     201(user_id) → R2
     202⇒ Декомпозицијата е lossless
     203
     204==== 2
     205TRANSACTION_WITH_TAG_NAME
     206
     207- R(transaction_id, transaction_name, amount, net_amount, date, tag_id, tag_name)
     208- R1(transaction_id, transaction_name, amount, net_amount, date, tag_id)
     209- R2(tag_id, tag_name)
     210
     211R1 ∩ R2 = {tag_id}
     212
     213- {tag_id} → {tag_name}
     214
     215(tag_id) → R2
     216⇒ Декомпозицијата е lossless
     217
     218==== 3
     219TRANSACTION → TAG_ASSIGNED_TO_TRANSACTION
     220
     221- R(transaction_id, transaction_name, amount, net_amount, date, tag_id)
     222- R1(transaction_id, transaction_name, amount, net_amount, date)
     223- R2(transaction_id, tag_id)
     224
     225R1 ∩ R2 = {transaction_id}
     226
     227- {transaction_id} → {transaction_name, amount, net_amount, date}
     228
     229(transaction_id) → R1
     230⇒ Декомпозицијата е lossless
     231
     232==== 4
     233TRANSACTION_ACCOUNT_WITH_USER_DATA → TRANSACTION_ACCOUNT + USER
     234
     235- R(transaction_account_id, account_name, balance, user_id, user_name, email)
     236- R1(transaction_account_id, account_name, balance, user_id)
     237- R2(user_id, user_name, email)
     238
     239R1 ∩ R2 = {user_id}
     240
     241- {user_id} → {user_name, email}
     242
     243(user_id) → R2
     244⇒ Декомпозицијата е lossless
     245
     246==== 5
     247TAG
     248
     249- R(tag_id, tag_name)
     250- R1(tag_id, tag_name)
     251
     252(Нема реална декомпозиција – табелата е веќе атомска)
     253⇒ Тривијално lossless
     254
     255==== 6
     256TRANSACTION_BREAKDOWN
     257
     258- R(transaction_breakdown_id, transaction_id, transaction_account_id, spent_amount, earned_amount)
     259
     260Не е извршена декомпозиција, примарниот клуч функционално ги определува сите атрибути
     261⇒ Нема потреба од lossless join тест
     262
     263===
     264
     265Сите функционални зависности можат да се проверат локално во поединечни табели, без потреба од JOIN операции, oва значи дека шемата е dependency-preserving, lossless-join и е во BCNF.
     266
     267== Заклучок
     268Со примената на формална анализа на функционални зависности, правилен избор на примарни клучеви и проверка со lossless-join тест се елиминираат сите аномалии, се обезбедува логичка коректност и се добива шема погодна за имплементација во релациона датабаза.
     269
    183270==
    184271