Друга нормальна форма. Приведення моделі БД до другої нормальної форми.



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

Визначення 3. Відношення R знаходиться в другій нормальній формі (2НФ) тоді і тільки тоді, коли відношення знаходиться в 1НФ і не має неключових атрибутів, що залежать від частини складеного ключа. (Неключовий атрибут - це атрибут, що не входить до складу ніякого потенційного ключа). Іншими словами, відношення знаходиться в 2NF, якщо воно знаходиться в 1NF і кожен неключовий атрибут функціонально повно залежить від первинного ключа.

Зауваження. Якщо потенційний ключ відношення є простим, то відношення автоматично знаходиться в 2НФ.

Приклад:

Нехай є відношення ПОСТАЧАННЯ (N_ПОСТАЧАЛЬНИКА, ТОВАР, ЦІНА).
Постачальник може поставляти різні товари, а той самий товар може поставлятися різними постачальниками. Тоді ключ відношення - "N_постачальника + товар". Нехай усі постачальники поставляють товар по одній і тій самій ціні. Тоді маємо наступні функціональні залежності:

· N_постачальника, товар -> ціна

· товар -> ціна

Неповна функціональна залежність атрибута "ціна" від ключа приводить до наступного аномалії: при зміні ціни товару необхідний повний перегляд відношення для того, щоб змінити всі записи про його постачальників. Дана аномалія є наслідком того факту, що в одній структурі даних об'єднані два семантичних факти. Наступне розкладання дає відношення в 2НФ:

· ПОСТАЧАННЯ (N_ПОСТАЧАЛЬНИКА, ТОВАР)

· ЦІНА_ТОВАРУ (ТОВАР, ЦІНА)

 

Для того, щоб усунути залежність атрибутів від частини складеного ключа, потрібно зробити декомпозицію відношення на кілька відношень. При цьому ті атрибути, що залежать від частини складеного ключа, виносяться в окреме відношення.

 

З точки зору процедур реляційної алгебри, для реалізації цієї декомпозиції з метою приведення відношення до 2NF необхідно:

· побудувати проекцію вихідного відношення, виключивши атрибути, що не знаходяться в повній функціональній залежності від складеного ключа;

· побудувати додатково одну чи кілька проекцій на частину складеного ключа й атрибути, що функціонально залежать від цієї частини.

Приведення до другої нормальної форми відношення “Діти” наведене нижче.

Відношення R2 (1NF):

Таб_номер Ім'я_дитини Вік дитини ПІБ Оклад Офіс Телефон
  С   Іванов І.І.     6-16
  Ж   Іванов І.І.     6-16
  В   Іванов І.І.     6-16
  Т   Петрук К.М.     6-16
  Ж   Сидоров О.Б.     3-06
  В   Сидоров О.Б.     3-06

Приведення відношення R2 (1NF) до 1NF:

 

Відношення R3 (2NF):

Таб_номер Ім'я_дитини Вік дитини
  С  
  Ж  
  В  
  Т  
  Ж  
  В  

Відношення R4 (2NF):

Таб_номер ПІБ Оклад Офіс Телефон
  Іванов І.І.     6-16
  Іванов І.І.     6-16
  Іванов І.І.     6-16
  Петрук К.М.     6-16
  Сидоров О.Б.     3-06
  Сидоров О.Б.     3-06

Відмічені аномалії усунуто.

Тим не менш, наявність транзитивної залежності

Таб_номер->Офіс;

Офіс ->Телефон

породжує аномалії наступного характеру:

· має місце дублювання інформації про телефон для співробітників одного офісу;

· існує проблема надмірності, оскільки зміна телефону офісу спричиняє необхідність пошуку і зміни номерів усіх співробітників цього офісу;

· не можна включити інформацію про новий офіс, якщо в даний момент відсутні співробітники цього офісу.

 

Базовий приклад. Відношення СПІВРОБІТНИКИ_ВІДДІЛИ_ПРОЕКТИ також не знаходиться в 2НФ, тому що є атрибути, що залежать від частини складеного ключа:

Залежність атрибутів, що характеризують співробітника від табельного номера співробітника є залежністю від частини складеного ключа:


Дата добавления: 2016-01-05; просмотров: 17; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!