| 243 | === Нормализација на R5 до 3NF |
| 244 | ФЗс пристурни во оваа релација се: |
| 245 | |
| 246 | 1. {{{ thread_id -> thread_created_at, thread_content, topic_title, parent_id, repo_url, project_title }}} |
| 247 | 2. {{{ project_title -> thread_created_at, thread_content, repo_url }}} |
| 248 | 3. {{{ {parent_id, topic_title} -> thread_content, thread_created_at }}} |
| 249 | 4. {{{ 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 |
| 279 | Eдинстевни ФЗ присутни во оваа релација се: |
| 280 | 1. {{{ thread_id -> repo_url,project_title }}} |
| 281 | 2. {{{ project_title -> repo_url, thread_id }}} |
| 282 | |
| 283 | Лесно се согледува дека {{{ thread_id }}} и {{{project_title}}} се кандидат клучеви, па според тоа бидејќи немаме ниту еден атрибут на левата старна во ФЗти, кои не е кандидат клуч, релацијата е во BCNF. |
| 284 | |
| 285 | Притоа да согледаме дека **R51** е релацијата **project_thread**. |
| 286 | |
| 287 | === Нормализација на R52 до BCNF |
| 288 | Eдинстевни ФЗ присутни во оваа релација се: |
| 289 | 1. {{{ thread_id -> topic_title,parent_id }}} |
| 290 | 2. {{{ {topic_title,parent_id} -> thread_id }}} |
| 291 | 3. {{{ 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 |
| 298 | Eдинстевни ФЗ присутни во оваа релација се: |
| 299 | 1. {{{ thread_id -> thread_created_at, thread_content }}} |
| 300 | |
| 301 | Бидејќи само {{{ thread_id }}} e кандидат клуч, не постои ФЗ во која левата страна не е супер клуч. Според тоа **R53** е во BCNF. |
| 302 | |
| 303 | Притоа да согледаме дека **R53** е релацијата **thread**. |
| 304 | |