Changes between Version 12 and Version 13 of Normalization


Ignore:
Timestamp:
09/22/25 22:23:29 (11 hours ago)
Author:
225144
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Normalization

    v12 v13  
    11Note:
    2 - moderator_id izbrishi nasekade
     2
    33- klaj unique constraint na (parent_id,topic_title)
    44- тргни start_at vo moderator - thread.
     
    1919  topic_thread: guidelines, topic_title, parent_id 
    2020  project_thread: repo_url, project_title,
    21   is_moderated_by: moderator_started_at,
    2221  associated_with: asc_started_at, asc_ended_at,
    2322  channel: channel_name, channel_description, channel_UUID
     
    40395. {{{ {blacklisted_about_user,user_id, thread_id, blacklisted_start_date} ->  blacklisted_end_date, reason }}}
    4140
    42 6. {{{ {thread_id, user_id} -> moderator_started_at }}}
    43 
    44 7. {{{ thread_id -> thread_created_at, thread_content }}}
    45 
    46 8. {{{ thread_id -> guidelines, topic_title, parent_id }}}
    47 
    48 9. {{{ thread_id -> repo_url, project_title }}}
    49 
    50 10. {{{ {thread_id, user_id } -> asc_started_at, asc_ended_at }}}
    51 
    52 11. {{{ channel_UUID ->  channel_name,channel_description}}} 
     416. {{{ thread_id -> thread_created_at, thread_content }}}
     42
     437. {{{ thread_id -> guidelines, topic_title, parent_id }}}
     44
     458. {{{ thread_id -> repo_url, project_title }}}
     46
     479. {{{ {thread_id, user_id } -> asc_started_at, asc_ended_at }}}
     48
     4910. {{{ channel_UUID ->  channel_name,channel_description}}} 
    5350
    545112. {{{ {thread_id, msg_send_at, user_id } -> msg_content }}}
     
    565313. {{{ pr_id -> pr_name, pr_override_type }}}
    5754
    58 15. {{{ parent_id -> thread_id }}}
    59 
    60 16. {{{ project_title -> repo_url, thread_id, thread_created_at, thread_content  }}}
    61 
    62 17. {{{ {parent_id, topic_title} -> guidelines, thread_id, thread_created_at, thread_content }}}
    63 
    64 18. {{{ {pr_name, thread_id} -> pr_override_type }}}
    65 
    66 19. {{{ blacklisted_about_user -> user_id  }}}
     5514. {{{ parent_id -> thread_id }}}
     56
     5715. {{{ project_title -> repo_url, thread_id, thread_created_at, thread_content  }}}
     58
     5916. {{{ {parent_id, topic_title} -> guidelines, thread_id, thread_created_at, thread_content }}}
     60
     6117. {{{ {pr_name, thread_id} -> pr_override_type }}}
     62
     6318. {{{ blacklisted_about_user -> user_id  }}}
    6764
    6865=== Изведени ФЗ
     
    8279
    8380> **LHS**:
    84 >> {{{ submission_id, moderator_id,blacklisted_start_date, msg_send_at,pr_id,tag_name,perm_name,blacklisted_about_user, channel_UUID}}}
     81>> {{{ submission_id,blacklisted_id,blacklisted_start_date, msg_send_at,pr_id,tag_name,perm_name,blacklisted_about_user, channel_UUID}}}
    8582
    8683> **RHS**:
    87 >> {{{ description, password, registered_at, email, sex,is_active,name, feedback_submission_type, feedback_created_at, feedback_description, submission_status, submission_created_at, submission_description,blacklisted_end_date, reason, tag_name,thread_created_at, thread_content, guidelines,repo_url, moderator_started_at, asc_started_at, channel_description, perm_name, pr_override_type, msg_content }}}
     84>> {{{ description, password, registered_at, email, sex,is_active,name, feedback_submission_type, feedback_created_at, feedback_description, submission_status, submission_created_at, submission_description,blacklisted_end_date, reason, tag_name,thread_created_at, thread_content, guidelines,repo_url, asc_started_at, channel_description, perm_name, pr_override_type, msg_content }}}
    8885
    8986> **LHS & RHS**:
     
    138135user_id,
    139136blacklisted_start_date
     137blacklisted_id
    140138msg_send_at
    141139pr_id
     
    162160username, description, password, registered_at, email, sex,is_active,name,
    163161blacklisted_end_date, reason,
    164 moderator_started_at,
    165162thread_created_at, thread_content,
    166163topic_title, parent_id,
     
    173170}}}
    174171
    175 {{{ R1(user_id,username, description, password, registered_at, email, sex,is_active,name) }}}  /done
    176 
    177 {{{ R2(submission_id,feedback_submission_type, feedback_created_at, feedback_description,submission_status, submission_created_at, submission_description)}}}  / done
     172{{{ R1(user_id,username, description, password, registered_at, email, sex,is_active,name) }}}
     173
     174{{{ R2(submission_id,feedback_submission_type, feedback_created_at, feedback_description,submission_status, submission_created_at, submission_description)}}}
    178175
    179176{{{ R3(blacklisted_about_user,user_id, thread_id, blacklisted_start_date,blacklisted_end_date, reason) }}}
    180177
    181 {{{ R4(thread_id, user_id, moderator_started_at, moderator_started_at) }}}  /done
    182 
    183 {{{ R5(thread_id,thread_created_at, thread_content,topic_title, parent_id,repo_url, project_title) }}} /done
    184 
    185 {{{ R6(channel_UUID,channel_name,channel_description) }}} /done
    186 
    187 {{{ R7(pr_id,pr_name, pr_override_type) }}} /done
    188 
    189 {{{ R8(thread_id, msg_send_at, user_id,msg_content) }}} /done
     178
     179{{{ R4(thread_id,thread_created_at, thread_content,topic_title, parent_id,repo_url, project_title) }}}
     180
     181{{{ R5(channel_UUID,channel_name,channel_description) }}}
     182
     183{{{ R6(pr_id,pr_name, pr_override_type) }}}
     184
     185{{{ R7(thread_id, msg_send_at, user_id,msg_content) }}}
    190186 
    191 {{{ R9(thread_id,user_id,asc_started_at, asc_ended_at) }}} #thread_id, user_id / done
    192 
    193 {{{ R10(perm_name) }}} / done
    194 {{{ R11(tag_name) }}} / done
     187{{{ R8(thread_id,user_id,asc_started_at, asc_ended_at) }}}
     188
     189{{{ R9(perm_name) }}}
     190{{{ R10(tag_name) }}}
    195191
    196192=== Нормализација на R1 до 3NF
     
    249245
    250246
    251 === Нормализација на R4 до BCNF
    252 Единствена ФЗ присутна во оваа релациja е:
    253  
    254 
    255 {{{ {thread_id, user_id} -> moderator_started_at}}}
    256 
    257 R4 е веќе во BCNF, заради тоа што единствената ФЗ го вклучува суперклучот и нема транзитивни зависимости.
    258 
    259 === Нормализација на R5 до 3NF
     247=== Нормализација на R4 до 3NF
    260248ФЗс пристурни во оваа релација се:
    261249
     
    2652534. {{{ parent_id ->  thread_created_at, thread_content, topic_title, parent_id, repo_url, project_title, thread_id }}}
    266254
    267 {{{ R51(project_title, thread_created_at, thread_content, repo_url) }}}
    268 {{{ R52(parent_id, topic_title,thread_content, thread_created_at) }}}
    269 {{{ R53(thread_id, project_title, topic_title, parent_id) }}}
    270 
    271 Може да согледаме дека **thread_created_at** и **thread_content** се повторуваат во **R51** и **R52**, па според тоа може да ги изведиме во една заедничка релација, односно релацијата **R53**.
     255{{{ R41(project_title, thread_created_at, thread_content, repo_url) }}}
     256{{{ R42(parent_id, topic_title,thread_content, thread_created_at) }}}
     257{{{ R43(thread_id, project_title, topic_title, parent_id) }}}
     258
     259Може да согледаме дека **thread_created_at** и **thread_content** се повторуваат во **R41** и **R42**, па според тоа може да ги изведиме во една заедничка релација, односно релацијата **R43**.
    272260Според тоа ги добиваме следниве релации:
    273261
    274 {{{ R51(project_title, repo_url) }}}
    275 {{{ R52(parent_id, topic_title) }}} 
    276 {{{ R53(thread_id, project_title, topic_title, parent_id, thread_created_at, thread_content) }}}
     262{{{ R41(project_title, repo_url) }}}
     263{{{ R42(parent_id, topic_title) }}} 
     264{{{ R43(thread_id, project_title, topic_title, parent_id, thread_created_at, thread_content) }}}
    277265
    278266Од тоа што **thread** може да е или проект или топик, но не и двете, тоа повлекува дека:
     
    283271Со цел да избегнеме null вредности и да обезбедиме **lossless join** ќе го направиме следното:
    284272
    285 - **R51** ќе додадеме **thread_id** (за постигнување на  **lossless join**), додека од **R53** ќе отстраниме **project_title**.
    286 - **R52** ќе додадеме **thread_id** (за постигнување на  **lossless join**), додека од **R53** ќе остраниме  **topic_title**, **parent_id**.
     273- **R41** ќе додадеме **thread_id** (за постигнување на  **lossless join**), додека од **R43** ќе отстраниме **project_title**.
     274- **R42** ќе додадеме **thread_id** (за постигнување на  **lossless join**), додека од **R43** ќе остраниме  **topic_title**, **parent_id**.
    287275
    288276Со тоа ги добиваме следниве релации:
    289277
    290 {{{ R51(project_title, repo_url, thread_id) }}}
    291 {{{ R52(parent_id, topic_title, thread_id) }}} 
    292 {{{ R53(thread_id, thread_created_at, thread_content) }}}
    293 
    294 === Нормализација на R51 до BCNF
     278{{{ R41(project_title, repo_url, thread_id) }}}
     279{{{ R42(parent_id, topic_title, thread_id) }}} 
     280{{{ R43(thread_id, thread_created_at, thread_content) }}}
     281
     282=== Нормализација на R41 до BCNF
    295283Eдинстевни ФЗ присутни во оваа релација се:
    2962841. {{{ thread_id -> repo_url,project_title }}}
     
    299287Лесно се согледува дека {{{ thread_id }}} и {{{project_title}}} се кандидат клучеви, па според тоа бидејќи немаме ниту еден атрибут на левата старна во ФЗти, кои не е кандидат клуч, релацијата е во BCNF.
    300288
    301 Притоа да согледаме дека **R51** е релацијата **project_thread**.
    302 
    303 === Нормализација на R52 до BCNF
     289Притоа да согледаме дека **R41** е релацијата **project_thread**.
     290
     291=== Нормализација на R42 до BCNF
    304292Eдинстевни ФЗ присутни во оваа релација се:
    3052931. {{{ thread_id -> topic_title,parent_id }}}
     
    3072953. {{{ parent_id -> topic_title, thread_id }}}
    308296
    309 Бијдеќи {{{ parent_id }}} и {{{thread_id}}} се кандидат клучеви( {{{ {parent_id, topic_title} }}} е супер клуч) не постои ФЗ, во која левата страна не е супер клуч. Тоа значи дека **R52** e во BCNF.
    310 
    311 Притоа да согледаме дека **R52** е релацијата **topic_thread**.
    312 
    313 === Нормализација на R53 до BCNF
     297Бијдеќи {{{ parent_id }}} и {{{thread_id}}} се кандидат клучеви( {{{ {parent_id, topic_title} }}} е супер клуч) не постои ФЗ, во која левата страна не е супер клуч. Тоа значи дека **R42** e во BCNF.
     298
     299Притоа да согледаме дека **R42** е релацијата **topic_thread**.
     300
     301=== Нормализација на R43 до BCNF
    314302Eдинстевни ФЗ присутни во оваа релација се:
    3153031. {{{ thread_id -> thread_created_at, thread_content }}}
    316304
    317 Бидејќи само {{{ thread_id }}} e кандидат клуч, не постои ФЗ во која левата страна не е супер клуч. Според тоа **R53** е во BCNF.
    318 
    319 Притоа да согледаме дека **R53** е релацијата **thread**.
     305Бидејќи само {{{ thread_id }}} e кандидат клуч, не постои ФЗ во која левата страна не е супер клуч. Според тоа **R43** е во BCNF.
     306
     307Притоа да согледаме дека **R43** е релацијата **thread**.
     308
     309=== Нормализација на R5 до BCNF
     310Единствена ФЗ присутна во оваа релациja е:
     311
     312{{{channel_UUID -> channel_name,channel_description}}}
     313
     314R6 е веќе во BCNF, заради тоа што единствената ФЗ го вклучува суперклучот и нема транзитивни зависимости.
     315
     316Притоа да согледаме дека **R5** е релацијата **channel**.
    320317
    321318=== Нормализација на R6 до BCNF
    322319Единствена ФЗ присутна во оваа релациja е:
    323320
    324 {{{channel_UUID -> channel_name,channel_description}}}
    325 
    326 R6 е веќе во BCNF, заради тоа што единствената ФЗ го вклучува суперклучот и нема транзитивни зависимости.
    327 
    328 Притоа да согледаме дека **R6** е релацијата **channel**.
     321{{{pr_id -> pr_name, pr_override_type}}}
     322
     323**R6** е веќе во BCNF, заради тоа што единствената ФЗ го вклучува суперклучот и нема транзитивни зависимости.
     324
     325Да заприметиме дека **R6** е уствари **project_role**.
    329326
    330327=== Нормализација на R7 до BCNF
    331328Единствена ФЗ присутна во оваа релациja е:
    332329
    333 {{{pr_id -> pr_name, pr_override_type}}}
    334 
    335 R7 е веќе во BCNF, заради тоа што единствената ФЗ го вклучува суперклучот и нема транзитивни зависимости.
    336 
    337 Да заприметиме дека **R7** е уствари **project_role**.
    338 
    339 === Нормализација на R8 до BCNF
     330{{{ {thread_id, msg_send_at, user_id} -> msg_content}}}
     331
     332**R7** е веќе во BCNF, заради тоа што единствената ФЗ го вклучува суперклучот и нема транзитивни зависимости.
     333
     334Притоа да согледаме дека **R7* е релацијата **messages**.
     335
     336=== Нормализација на R8 до BCNF 
    340337Единствена ФЗ присутна во оваа релациja е:
    341338
    342 {{{ {thread_id, msg_send_at, user_id} -> msg_content}}}
    343 
    344 R8 е веќе во BCNF, заради тоа што единствената ФЗ го вклучува суперклучот и нема транзитивни зависимости.
    345 
    346 Притоа да согледаме дека **R8** е релацијата **messages**.
     339{{{{thread_id,user_id} -> asc_started_at, asc_ended_at}}}
     340
     341**R8** е веќе во BCNF, заради тоа што единствената ФЗ го вклучува суперклучот и нема транзитивни зависности.
     342
     343Пртиоа да согледаме дека **R8** е релацијата ** developer_associated_with_project**.
    347344
    348345=== Нормализација на R9 до BCNF
    349 Единствена ФЗ присутна во оваа релациja е:
    350 
    351 {{{{thread_id,user_id} -> asc_started_at, asc_ended_at}}}
    352 
    353 R9 е веќе во BCNF, заради тоа што единствената ФЗ го вклучува суперклучот и нема транзитивни зависности.
    354 
    355 Пртиоа да согледаме дека **R9** е релацијата ** developer_associated_with_project**.
    356 
    357 === Нормализација на R10 до BCNF
    358 Најпрвин да заприметиме дека R10 е уствари релацијата **permissions**.
    359 
    360 Бидејќи немаме транзитивни релации и бидејќи {{{ perm_name+ = {perm_name} }}} е супер клуч на релацијата, добиваме дека **R1** е во BCNF.
    361 
    362 === Нормализација на R11
    363 Најпрвин да заприметиме декa R11 е уствари релацијата **tag**. Исто како и кај **R10**, лесно се согледува дека и оваа релација е во BCNF.
    364 
     346Најпрвин да заприметиме дека R9 е всушност релацијата **permissions**.
     347
     348Бидејќи немаме транзитивни релации и бидејќи {{{ perm_name+ = {perm_name} }}} е супер клуч на релацијата, добиваме дека **R9** е во BCNF.
     349
     350=== Нормализација на R10
     351Најпрвин да заприметиме декa R10 е уствари релацијата **tag**. Исто како и кај **R9**, лесно се согледува дека и оваа релација е во BCNF.
     352