Changes between Version 6 and Version 7 of Normalization


Ignore:
Timestamp:
03/05/22 14:29:14 (3 years ago)
Author:
193113
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Normalization

    v6 v7  
    11== Функциски зависности
    2  Атрибутите name и surname кај users се споени во user_fullname
    3  Атрибутите name и surname кај  persons се споени во person_fullname
     2 Атрибутите name и surname кај users се споени во user_fullname.
     3 Атрибутите name и surname кај  persons се споени во person_fullname.
    44
    5 FD = { movie_title -> movie_id, movie_title -> movie_description, movie_title -> movie_image_url, movie_title -> airing_date, movie_title -> imdb_rating, movie_title -> discussion_type,
    6  movie_id -> movie_title, movie_id -> movie_description, movie_id -> movie_image_url, movie_id -> airing_date, movie_id -> imdb_rating, movie_id -> discussion_type,
     5FD = { movie_title -> movie_id, movie_title -> movie_description, movie_title -> movie_image_url, movie_title -> airing_date, movie_title -> imdb_rating, movie_title -> discussion_type, movie_id -> movie_title, movie_id -> movie_description, movie_id -> movie_image_url, movie_id -> airing_date, movie_id -> imdb_rating, movie_id -> discussion_type,
    76 user_id -> username, user_id -> user_fullname, user_id -> email, user_id -> password,
    87 username -> user_id, username -> user_fullname, username -> email, username -> password,
     
    1514discussion_id reply_id -> reply_text, discussion_id reply_id -> reply_date }
    1615
     16F,,c,, = {  movie_title -> movie_id, movie_id -> movie_title, movie_id -> movie_description, movie_id -> movie_image_url, movie_id -> airing_date, movie_id -> imdb_rating, movie_id -> discussion_type,  user_id -> username, user_id -> user_fullname, user_id -> email, user_id -> password, username -> user_id, email  -> user_id,  person_id -> person_fullname, person_id -> person_type, person_id -> date_of_birth, person_id -> person_image_url, person_id -> person_description, person_id -> discussion_type, genre_id -> genre_type, genre_type -> genre_id, discussion_id -> discussion_type, discussion_id  -> discussion_text, discussion_id -> discussion_title, discussion_id -> date, discussion_id -> movie_id, discussion_id -> person_id, discussion_id reply_id -> reply_text, discussion_id reply_id -> reply_date }
     17
    1718== Нормална форма на актуелен дизајн
    1819
     
    2021
    2122== Декомпозиција
     23R={ person_id, person_fullname, person_type, date_of_birth, person_image_url, person_description, movie_id, movie_title, movie_description, movie_image_url, imdb_rating, airing_date, username, user_id, user_fullname, password, email, genre_id, genre_type, discussion_id, discussion_type, discussion_text, discussion_title, discussion_date, person_stars_rated, person_reason, movie_stars_rated, movie_reason, reply_id, reply_text, reply_date }
    2224
     25person_id, person_fullname, person_type, date_of_birth, person_image_url, person_description, movie_id, movie_title, movie_description, movie_image_url, imdb_rating, airing_date, username, user_id, user_fullname, password, email, genre_id, genre_type, discussion_id, discussion_type, discussion_text, discussion_title, discussion_date, person_stars_rated, person_reason, movie_stars_rated, movie_reason, reply_id, reply_text, reply_date + = { person_id, person_fullname, person_type, date_of_birth, person_image_url, person_description, movie_id, movie_title, movie_description, movie_image_url, imdb_rating, airing_date, username, user_id, user_fullname, password, email, genre_id, genre_type, discussion_id, discussion_type, discussion_text, discussion_title, discussion_date, person_stars_rated, person_reason, movie_stars_rated, movie_reason, reply_id, reply_text, reply_date } -  супер клуч кој што е составен од сите атрибути што еднозначно би идентификувал редица во табелата.
     26
     27movie_id, user_id, person_id, genre_id, discussion_id, reply_id + = { person_id, person_fullname, person_type, date_of_birth, person_image_url, person_description, movie_id, movie_title, movie_description, movie_image_url, imdb_rating, airing_date, username, user_id, user_fullname, password, email, genre_id, genre_type, discussion_id, discussion_type, discussion_text, discussion_title, discussion_date, person_stars_rated, person_reason, movie_stars_rated, movie_reason, reply_id, reply_text, reply_date } - супер клуч аплициран со сите функциски зависности на атрибутите од лева страна.
     28
     29movie_id, user_id, person_id, genre_id, discussion_id, reply_id - претставува кандидат клуч бидејќи ниту едно подмножество на овој супер клуч, неговиот затварач не ги идентификува сите останати атрибути. Овој не е единствен, поради тоа што, дел од атрибутите од овој клуч, имаат и функциски зависности и кон нив.
     30
     31movie_id, user_id, person_id, genre_type, discussion_id, reply_id  - супер клуч, воедно и кандидат клуч, заменет genre_id поради genre_type -> genre_id.
     32
     33movie_title, user_id, person_id, genre_id, discussion_id, reply_id - супер клуч, воедно и кандидат клуч, заменет movie_id поради movie_title -> movie_id.
     34
     35movie_title, user_id, person_id, genre_type, discussion_id, reply_id - супер клуч, воедно и кандидат клуч, заменет movie_id поради movie_title -> movie_id и заменет genre_id поради genre_type -> genre_id.
     36
     37movie_id, username, person_id, genre_id, discussion_id, reply_id -  супер клуч, воедно и кандидат клуч, заменет user_id поради username -> user_id.
     38
     39movie_id, email, person_id, genre_id, discussion_id, reply_id -  супер клуч, воедно и кандидат клуч, заменет user_id поради email -> user_id.
     40
     41movie_title, username, person_id, genre_id, discussion_id, reply_id - супер клуч, воедно и кандидат клуч, заменет movie_id поради movie_title -> movie_id и заменет user_id поради username -> user_id.
     42
     43movie_title, email, person_id, genre_id, discussion_id, reply_id - супер клуч, воедно и кандидат клуч, заменет movie_id поради movie_title -> movie_id и заменет user_id поради email -> user_id.
     44
     45movie_title, username, person_id, genre_type, discussion_id, reply_id - супер клуч, воедно и кандидат клуч, заменет movie_id поради movie_title -> movie_id,  заменет user_id поради username -> user_id и заменет genre_id поради genre_type -> genre_id.
     46
     47movie_title, email, person_id, genre_type, discussion_id, reply_id - супер клуч, воедно и кандидат клуч, заменет movie_id поради movie_title -> movie_id и заменет user_id поради email -> user_id и заменет genre_id поради genre_type -> genre_id.
     48
     49movie_id, username, person_id, genre_type, discussion_id, reply_id -  супер клуч, воедно и кандидат клуч, заменет user_id поради username -> user_id и заменет genre_id поради genre_type -> genre_id.
     50
     51movie_id, email, person_id, genre_type, discussion_id, reply_id -  супер клуч, воедно и кандидат клуч, заменет user_id поради email -> user_id и заменет genre_id поради genre_type -> genre_id.
     52
     53Примарни атрибути = { movie_id, user_id, person_id, genre_id, discussion_id, reply_id, genre_type, username, movie_title, email }
     54
     55Од горните зависности, може да се воочи дека постојат парцијални функциски зависности од сите атрибути посебно од кандидат клучот. Мора да се разложи во посебни табели за да бидат задоволени правилата за 2 нормална форма. Ќе се креира посебна табела за genre_id и genre_type, посебна табела за person_id и со сите атрибути произлезени од неговите функциски зависности освен discussion_type, посебна табела за movie_id заедно со сите атрибути произлезени од функцискисте зависности освен discussion_type, посебна табела за user_id заедно со сите атрибути произлезени од нивните функциски зависности, посебна табела за user_id и movie_id заедно со movie_reason и movie_stars_rated,  посебна табела за user_id и person_id заедно со person_reason и person_stars_rated, посебна табела за discussion_id и сите атрибути добиени од нивните функциски зависности, посебна табела за discussion_id и reply_id заедно со атрибутите добиени од нивните функциски зависности.
     56
     57R,,1,,(genre_id, genre_type)
     58R,,2,,(person_id, person_fullname, person_type, date_of_birth, person_image_url, person_description)
     59R,,3,,(movie_id, movie_title, movie_description, movie_image_url, imdb_rating, airing_date)
     60R,,4,,(username, user_id, user_fullname, password, email)
     61R,,5,,(user_id, person_id, person_stars_rated, person_reason)
     62R,,6,,(user_id, movie_id, movie_stars_rated, movie_reason)
     63R,,7,,(discussion_id, discussion_type, discussion_text, discussion_title, discussion_date, movie_id, person_id)
     64R,,8,,(discussion_id, reply_id, reply_text, reply_date)
     65
     66Сепак, со овие горе табели, нема да може да има спојување на табелите засегнати со жанрот, а тоа се R3 и R4. Кандидат клучевите на R3 и R4 не повлекуваат функциски зависности кон кандидат клуч на R1, па затоа ќе треба да постојат, уште две посебни табели, во кои кандидат клуч ќе биде соодветни комбинации од кандидат клуч на R1 и R3, како и R1 и R4. Може да постои само R9 или R10 за да спојувањето биде успешно, не постои функциска зависност заведена погоре, но истото нема да резултира со побарувањата на базата од ЕР дијаграмот.
     67
     68R,,9,,(genre_id, movie_id)
     69R,,10,,(genre_id, user_id)
     70
     719 табели се добиваат врз база на функциските зависности.
     72
     73Спојувањето ќе биде успешно и се запазени функциските зависности за 2 нормална форма.
     74
     75R,,1,,(genre_id, genre_type) - BCNF поради тоа што genre_id и genre_type се кандидат клучеви, односно супер клучеви, во оваа табела.
     76R,,2,,(person_id, person_fullname, person_type, date_of_birth, person_image_url, person_description) - BCNF, функциските зависности доаѓаат само од person_id што е кандидат клуч.
     77R,,3,,(movie_id, movie_title, movie_description, movie_image_url, imdb_rating, airing_date) - BCNF, функциските зависности доаѓаат само од кандидат клучевите.
     78R,,4,,(username, user_id, user_fullname, password, email) - BCNF, функциските зависности доаѓаат само од кандидат клучевите.
     79R,,5,,(user_id, person_id, person_stars_rated, person_reason) - BCNF, не постојат нетривијални функциски зависности без да биде вклучен кандидат клучот.
     80R,,6,,(user_id, movie_id, movie_stars_rated, movie_reason) - BCNF, не постојат нетривијални функциски зависности без да биде вклучен кандидат клучот.
     81R,,7,,(discussion_id, discussion_type, discussion_text, discussion_title, discussion_date, movie_id, person_id) - 2 нормална форма постојат транзитивни функциски зависности на discussion_id произлезени од movie_id и person_id.
     82
     83R,,8,,(discussion_id, reply_id, reply_text, reply_date) - BCNF, не постојат нетривијални функциски зависности без да биде вклучен кандидат клучот.
     84
     85Дополнително, побарувањата на ЕР дијаграмот не се целосно застапени, односно не постои табела за допаѓања на филмови, табела за допаѓања на дискусии и табела за допаѓања на реплики бидејќи не постојат функциски зависности од погоре. Исто и за креатор на реплика и дискусија, а воедно на филмот неговиот режисер, ќе мора да се во посебни табели, од аспект, повторно на функциските зависности, кои не постојат меѓусебно. Во R14, иако глобално не постои зависност кон person_id, сепак за да се задоволат барањата на ЕР дијаграмот, ќе биде креиарана нова табела која ќе репрезентира режисер на соодветниот филм.
     86
     87R,,11,,(user_id, movie_id)
     88R,,12,,(user_id, discussion_id)
     89R,,13,,(user_id, discussion_id, reply_id)
     90R,,14,,(movie_id, person_id)
     91R,,15,,(user_id, discussion_id)
     92R,,16,,(user_id, discussion_id, reply_id)
     93
     94