Changes between Version 10 and Version 11 of Normalization


Ignore:
Timestamp:
09/22/25 22:06:51 (11 hours ago)
Author:
226026
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Normalization

    v10 v11  
    33- klaj unique constraint na (parent_id,topic_title)
    44- тргни start_at vo moderator - thread.
     5- trgni transitivni relacii kaj project_title i topic_title deka nemat smisla.
    56
    67= Нормализација и Подобрување на дизајн
     
    179180{{{ R4(thread_id, user_id, moderator_started_at, moderator_started_at) }}}  /done
    180181
    181 {{{ R5(thread_id,thread_created_at, thread_content,topic_title, parent_id,repo_url, project_title) }}}
     182{{{ R5(thread_id,thread_created_at, thread_content,topic_title, parent_id,repo_url, project_title) }}} /done
    182183
    183184{{{ R6(channel_UUID,channel_name,channel_description) }}} /done
     
    240241R4 е веќе во BCNF, заради тоа што единствената ФЗ го вклучува суперклучот и нема транзитивни зависимости.
    241242
     243=== Нормализација на R5 до 3NF
     244ФЗс пристурни во оваа релација се:
     245
     2461. {{{ thread_id -> thread_created_at, thread_content, topic_title, parent_id, repo_url, project_title }}}
     2472. {{{ project_title -> thread_created_at, thread_content, repo_url }}}
     2483. {{{ {parent_id, topic_title} -> thread_content, thread_created_at }}}
     2494. {{{ parent_id ->  thread_created_at, thread_content, topic_title, parent_id, repo_url, project_title, thread_id }}}
     250
     251{{{ R51(project_title, thread_created_at, thread_content, repo_url) }}}
     252{{{ R52(parent_id, topic_title,thread_content, thread_created_at) }}}
     253{{{ R53(thread_id, project_title, topic_title, parent_id) }}}
     254
     255Може да согледаме дека **thread_created_at** и **thread_content** се повторуваат во **R51** и **R52**, па според тоа може да ги изведиме во една заедничка релација, односно релацијата **R53**.
     256Според тоа ги добиваме следниве релации:
     257
     258{{{ R51(project_title, repo_url) }}}
     259{{{ R52(parent_id, topic_title) }}} 
     260{{{ R53(thread_id, project_title, topic_title, parent_id, thread_created_at, thread_content) }}}
     261
     262Од тоа што **thread** може да е или проект или топик, но не и двете, тоа повлекува дека:
     263
     264- **thread** е проект -> **topic_title**, **parent_id** се null вредности.
     265- **thread** е топик -> **project_title** е null вредност.
     266
     267Со цел да избегнеме null вредности и да обезбедиме **lossless join** ќе го направиме следното:
     268
     269- **R51** ќе додадеме **thread_id** (за постигнување на  **lossless join**), додека од **R53** ќе отстраниме **project_title**.
     270- **R52** ќе додадеме **thread_id** (за постигнување на  **lossless join**), додека од **R53** ќе остраниме  **topic_title**, **parent_id**.
     271
     272Со тоа ги добиваме следниве релации:
     273
     274{{{ R51(project_title, repo_url, thread_id) }}}
     275{{{ R52(parent_id, topic_title, thread_id) }}} 
     276{{{ R53(thread_id, thread_created_at, thread_content) }}}
     277
     278=== Нормализација на R51 до BCNF
     279Eдинстевни ФЗ присутни во оваа релација се:
     2801. {{{ thread_id -> repo_url,project_title }}}
     2812. {{{ project_title -> repo_url, thread_id }}}
     282
     283Лесно се согледува дека {{{ thread_id }}} и {{{project_title}}} се кандидат клучеви, па според тоа бидејќи немаме ниту еден атрибут на левата старна во ФЗти, кои не е кандидат клуч, релацијата е во BCNF.
     284
     285Притоа да согледаме дека **R51** е релацијата **project_thread**.
     286
     287=== Нормализација на R52 до BCNF
     288Eдинстевни ФЗ присутни во оваа релација се:
     2891. {{{ thread_id -> topic_title,parent_id }}}
     2902. {{{ {topic_title,parent_id} -> thread_id }}}
     2913. {{{ parent_id -> topic_title, thread_id }}}
     292
     293Бијдеќи {{{ parent_id }}} и {{{thread_id}}} се кандидат клучеви( {{{ {parent_id, topic_title} }}} е супер клуч) не постои ФЗ, во која левата страна не е супер клуч. Тоа значи дека **R52** e во BCNF.
     294
     295Притоа да согледаме дека **R52** е релацијата **topic_thread**.
     296
     297=== Нормализација на R53 до BCNF
     298Eдинстевни ФЗ присутни во оваа релација се:
     2991. {{{ thread_id -> thread_created_at, thread_content }}}
     300
     301Бидејќи само {{{ thread_id }}} e кандидат клуч, не постои ФЗ во која левата страна не е супер клуч. Според тоа **R53** е во BCNF.
     302
     303Притоа да согледаме дека **R53** е релацијата **thread**.
     304
    242305=== Нормализација на R6 до BCNF
    243306Единствена ФЗ присутна во оваа релациja е: