Страницы

Поиск по вопросам

вторник, 10 декабря 2019 г.

MySql: Где используются 4 и 5 нормальные формы?

#mysql #sql


Дорогие знатоки, изучая MySql нормальные формы дошел до третьего. Все понял отлично.
Но вот дальше чуть запутался. Можно ли на реальном примере показать их в действии.

К примеру

Table authors
id  name

Table books
id  title  price

Table authors_books
author_id  book_id


У авторов есть емейлы. Храню их в отдельной таблице. Но по моему это все таки относится
к третьей нормальной форме.

Table author_emails
id  author_id  email


Пожалуйста приведите примеры с пояснениями .
Спасибо!
    


Ответы

Ответ 1



Если 1-3 НФ позволяют избавиться от избыточности неключевых атрибутов (избыточность в сложном первичном ключе просто игнорится), то 4 и 5 НФ позволяют избавиться от избыточности внутри первичного ключа. Поэтому, чтобы искать от чего бы избавиться, чтобы привести таблицу к 4, а потом 5 НФ, первичный ключ должен состоять минимум из 3х атрибутов. В противном случае (ключ состоит из 1-2 атрибутов) таблица уже находится в 4 и 5 НФ. Добавление полей id сильно мешает пониманию НФ. Если бы вместо id author_id email было что-то типа: address_id author_id email - эти три атрибута и есть первичный ключ, таблица уже находится в 3НФ. Тогда можно было бы выделить две многозначные зависимости: У автора может быть несколько физ.адресов и несколько электронных почт. Причем адрес и эл. почта между собой не связаны. Избавляемся путем разделения на 2 таблицы: address_id author_id и author_id email Эти таблицы находятся в 4НФ, т.к. в них отсутствуют многозначные зависимости. Если каким-то загадочным образом существует зависимость между address_id и email, при условии, что и предыдущие условия выполняются (У автора может быть несколько физ.адресов и несколько электронных почт) тогда мы не можем назвать это многозначной зависимостью, а, следовательно, и избавляться для 4НФ не от чего, т.е. таблица address_id author_id email уже находится в 4НФ. Но, зато такое явление можем назвать зависимостью соединения - чего не должно быть в 5НФ. От зависимости соединения можем избавиться, разбив исходную табл. на три: address_id author_id, author_id emai, address_id email

Комментариев нет:

Отправить комментарий