Лекція 8 Тема: Логічна модель І нормалізація даних. Навчальна мета заняття



бет9/9
Дата18.11.2022
өлшемі309,76 Kb.
#51017
түріЛекція
1   2   3   4   5   6   7   8   9
Байланысты:
PRIC LECTURE 08

Повторювані групи даних можуть бути визначені як списки, що повторюються елементи, як внутрішня структура усередині атрибута. Ця структура порушує 1НФ і тому повинна бути вилучена з моделі.
Сутність «Сотрудник» містить повторювану групу даних в атрибуті «Имя ребенка» (рис. 3). Це порушує 1НФ, яка говорить, що сутність перебуває в 1НФ, якщо кожний з атрибутів має не більше чому одне значення для кожного екземпляра. Екземпляр атрибута «Имя ребенка» має два значення: Маша і Оля (табл. 1).

Сотрудник#

Фамилия

Адрес

Имя ребенка

Е1

Седов

Сурикова, 10

Коля

Е2

Куликов

Миру, 23

Маша, Оля

Таблиця 1 Екземпляри сутності Сотрудник
Рис. 3. Сотрудник.
Це порушення 1НФ призводить до проблем. Запис значення атрибута через кому «Маша, Оля» призводить до того, що розміру стовпця може не вистачити для зберігання даних (адже Сотрудник може мати і 4, і 5 дітей). Проблема є і у тому, що за таким атрибутом неможливо побудувати індекс.
Для приведення сутності «Сотрудник» до 1НФ потрібно:

  • створити нову сутність «Ребенок»,

  • перенести в неї повторюваний атрибут «Имя ребенка»,

  • визначити атрибут «Ребенок#» в якості первинного ключа сутності «Ребенок»,

  • встановити ідентифікуючий зв’язок від сутності «Сотрудник» до сутності «Ребенок». Первинний ключ «Сотрудник#» сутності «Сотрудник» буде в сутності «Ребенок» зовнішнім ключем.

Результат приведення сутності «Сотрудник» до 1НФ на рис. 4 (табл. 2 і 3).

Рис. 4. Нормалізована сутність Сотрудник.
Таблиця 2 Таблиця 3
Екземпляри сутності Сотрудник Екземпляри сутності Ребенок




Сотрудник#

Фамилия

Адрес

Е1

Сєдов

Сурикова, 10

Е2

Куликів

Миру, 23






Сотрудник#

Ребенок#

Имя ребенка

Е1

С1

Коля

Е2

С1

Маша

E2

C2

Оля



Багаторазове використання атрибута. Інша проблема – це зберігання в одному атрибуті різних за змістом значень, що порушує 1НФ (наприклад, рис. 5 і табл. 4).
Атрибут «Дата зачисления или увольнения» (табл. 4) зберігає інформацію як про зарахування, так і про звільнення Сотрудника. Якщо зберігається тільки одне значення (наприклад, 01.07.20), то неможливо зрозуміти, яка саме дата внесена. Рішення проблеми в тому, щоб дозволити окремим атрибутам зберігати окремі факти.
Для приведення сутності «Сотрудник1» до 1НФ: розділимо складний атрибут «Дата зачисления или увольнения» на атомарні атрибути – «Дата зачисления» і «Дата увольнения». Результат приведення сутності «Сотрудник1» до 1НФ у табл. 5.

Рис. 5. Сотрудник1.
Таблиця 4 Екземпляри сутності Сотрудник1

Сотрудник#

Фамилия

Адрес

Дата зачисления или увольнения

El

Сєдов

Сурикова, 10

01.07.20

Е2

Куликів

Миру, 23

07.08.20

Таблиця 5 Екземпляри сутності Сотрудник1

Сотрудник#

Фамилия

Адрес

Дата зачисления

Дата увольнения

Е1

Сєдов

Сурикова, 10

01.07.20


Е2

Куликів

Миру, 23

07.08.20

01.09.20

Множинне місцезнаходження того самого факту. Одна із цілей БД полягає в максимальній підтримці цілісності даних, щоб у такий спосіб гарантувати, що інформація, що містить у БД, правильна, і факти « усередині» БД не перебувають у протиріччі. Тому важливо представити кожний факт у БД один і тільки один раз (рис. 6). Якщо факт з’являється у дві (або більш) місцях, помилки можуть «проникнути» у дані. Єдине виключення із цього правила (один факт в одному місці) – у випадку атрибутів первинних ключів.

Рис. 6. Сутність Ребенок.
Включення атрибута «Адрес Сотрудника» у сутність «Ребенок» – це помилка (табл. 6). Тепер, якщо Сотрудник має кілька дітей, те його адреса буде зберігатися для кожної дитини.
Атрибут «Адрес Сотрудника» – ознака сутності «Сотрудник», але не сутності «Ребенок». Фактично, це порушення 2НФ, яка говорить: при наявності складеного первинного ключа всі атрибути повинні залежати від повного ключа, а не від його частин. Адрес Сотрудника не залежить від повного первинного ключа «Сотрудник# Ребенок#», а залежить від його частини – атрибута «Сотрудник#».
Таблиця 6 Екземпляри сутності Ребенок

Сотрудник#

Ребенок#

Имя ребенка

Адрес сотрудника

Е1

С1

Коля

Сурикова, 10

Е2

С1

Маша

Мира, 23

E2

C2

Оля

Мира, 23

Для приведення сутності «Ребенок» до 2НФ:
– перенесемо атрибут «Адрес Сотрудника» у сутність «Сотрудник».
Конфліктуючі факти. Конфлікти фактів можуть відбуватися по різних причинах, включаючи порушення першої, другий або третьої нормальних форм.
Атрибут «Адрес жены» включений у сутність «Ребенок» (рис. 7 і табл. 7), що привело до порушення 2НФ. Дані на табл. 6 показують, що Сотрудник Е2 має двох дітей – Машу і Олю іі дві різні адреси дружини. Можливо, Е2 має дві дружини (одна живе на Миру, 23, інша на Ботанічній, 24), або в Олі і Маші різні мами. Або Е2 має одну дружину, що проживає по різних адресах. Який варіант є правильним? Проблема в тому, що вибрати правильний варіант із наявних даних неможливо.

Сотрудник#

Ребенок#

Имя ребенка

Адрес жены

Е1

С1

Коля

Сурикова,10

Е2

Сl

Маша

Миру, 23

Е2

С2

Оля

Ботанічна, 24

Таблиця 7 Екземпляри сутності Ребенок
Рис. 7. Ребенок.
Для приведення до 2НФ:

  • створимо нову сутність «Жена»,

  • помістимо атрибут «Адрес жены» у сутність «Жена»,

  • встановимо ідентифікуючий зв’язок від сутності «Сотрудник» до сутності «Жена».

Результат приведення сутності «Ребенок» до 2НФ на рис. 8. Можна побачити, що Сотрудник Е2 має двох дружин, одну нинішню і одну колишню (табл. 8 і 9).

Рис. 8. Сотрудник.
Таблиця 8 Таблиця 9
Екземпляри сутності Сотрудник Екземпляри сутності Жена

Сотрудник#

Ребенок#

Имя ребенка


Сотрудник#

Жена#

Адрес жены

Текущая

Е1

С1

Коля

Е1

S1

Сурикова,10

Да

Е2

Сl

Маша

Е2

Sl

Миру, 23

Да

Е2

С2

Оля

Е2

S2

Ботанічна, 24

Нет

Похідні атрибути. Інший приклад конфлікту фактів відбувається, коли порушено 3НФ. Якщо включити атрибути «Дата рождения» і «Возраст» у сутність «Ребенок» (табл. 10), то буде порушена ЗНФ, тому що атрибут «Возраст» функціонально залежить від атрибута «Дата рождения». Знаючи дату народження, завжди можна одержати вік дитини.
Похідні атрибути – це атрибути, які можуть бути обчислені з інших атрибутів (наприклад, «Возраст»), і отже, можуть не зберігатися в БД. Щоб бути точними, похідні атрибути повинні модифікуватися щораз, коли джерело їх утвору модифікується. Це створює більші непродуктивні витрати в додатку, який робить модифікації.
Таблиця 10
Екземпляри сутності Ребенок

Сотрудник#

Ребенок#

Имя ребенка

Дата рождения

Возраст

Е1

С1

Коля

01.09.10

10

Е2

С1

Маша

01.08.08

12

Е2

С2

Оля

02.07.15

5

Ціль нормалізації полягає в тому, щоб гарантувати, що є тільки один спосіб довідатися кожний факт, записаний у БД. Якщо ж Ви можете одержати відповідь двома різними способами, можливо, що дві відповіді будуть різні.
Сутність «Ребенок» має атрибути «Дата рождения» і «Возраст». Припустимо, що атрибут «Возраст» модифікується наприкінці місяця. Потім ви задаєте запит: якого віку Ребенок? Ви можете безпосередньо звернутися до атрибута «Возраст» і одержить відповідь. Також ви можете відняти «Дату рождения» від сьогоднішньої дати і теж одержати відповідь. Якщо «Возраст» не модифікувався недавно, то ви одержите неправильну відповідь. Тобто при наявності в БД похідних атрибутів, у ній завжди є потенціал для конфліктуючих відповідей.

  1. Приведення до нормальної форми.

Приведення до 1НФ.
Сутності Автор, Книга, Видавництво, Редактор, КнигаАвтор, ПунктЗаказа відповідають 1НФ тому що мають первинні ключі, не мають повторюваних груп.
Сутність Заказ не відповідає 1НФ тому що має повторювану групу атрибутів Название, КоличествоЗаказано, КоличествоОтправлено. Для приведення до 1НФ перенесемо повторювані атрибути Название, КоличествоЗаказано,
КоличествоОтправлено із сутності Замовлення в сутність ПунктЗаказа.
Приведення до 2НФ. Сутності Автор, Книга, Видавництво, Редактор, Заказ відповідають 2НФ тому що:

    • представлені в 1НФ,

    • мають простий первинний ключ.

Сутність КнигаАвтор відповідають 2НФ тому що:

    • представлена в 1НФ,

    • мають складений первинний ключ, – не мають неключових атрибутів.

Сутність ПунктЗаказа не відповідають 2НФ тому що:

    • представлена в 1НФ,

    • мають складений первинний ключ,

    • але атрибут Название не залежить не від повного первинного ключа, а від його частину – атрибуту Книга#.

Для приведення до 2НФ необхідно вилучити атрибут Название із сутності ПунктЗаказа.
Приведення до 3НФ. Сутності Автор, Книга, Видавництво, Редактор, Замовлення, ПунктЗаказа, КнигаАвтор відповідають 3НФ тому що:

    • представлені в 2НФ,

    • між неключовими атрибутами немає взаємозв’язків.

Сутність Автор не відповідає 3НФ, тому що

    • атрибут Позиція (позиція автору у списку авторів) не залежить від первинного ключа Автор#. У кожного автора може бути багато книг і в кожній він може займати різні позиції (1, 2, 3 та ін.). Насправді, позиція визначається парою значень Автор# і Книга#.

    • атрибут Разделение гонорара не залежить від первинного ключа Автор#, а залежить від пари значений Автор# і Книга#.

Для приведення до 3НФ необхідно перемістити атрибути Автор# і Книга# і Позиция з сутності Автор у сутність КнигаАвтор. (рис. 9).

Рис. 9. Нормалізована логічна модель у нотації Бахмана.

  1. Завдання для самоконтролю та самостійної роботи над темою

З метою закріплення теоретичних знань із теми підготуйте самостійно розгорнуті відповіді на поставлені запитання та виконайте завдання практичного характеру із використанням додаткових джерел.

  1. Для чого створюється логічна модель?

  2. Чим відрізняється логічна та фізична моделі?

  3. Що таке нотація Бахмана?

  4. Що таке нотація Баркера?

  5. Визначення понять: сутність; екземпляр сутності; зв’язок; атрибут.

  6. Що таке нормалізація?

  7. Що таке первинний ключ?

  8. Що означає запис: Х → Y?

  9. Які бувають сутності?

  10. Які бувають атрибути?

  11. Які бувають зв’язки?

  12. Умови та особливості нормальних форм: 1НФ, 2НФ, 3НФ.

  13. Назвіть типові ситуації, коли необхідно проводити нормалізацію?

  14. Якими параметрами характеризується зв’язок?


Достарыңызбен бөлісу:
1   2   3   4   5   6   7   8   9




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет