Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Поняття форми відношення. Перша нормальна форма





Не кожна таблиця з даними є відношенням. Відношенням є лише та таблиця, яка знаходиться в першій нормальній формі. Тобто відношення обов’язково повинне знаходитися в першій нормальній формі (1НФ).

Відношення знаходиться в першій нормальній формі, якщо кожний елемент відношення має і завжди буде мати атомарне значення.

Ця таблиця не є відношенням. Значення перших 3-х атрибутів є атомарними, значення решти 3-х атрибутів є множинними, тобто не кожний рядок є кортежем. Наприклад, одержувачу 1010 відповідає по одному значенню атрибутів <Назва_одержувача> та <Код_станції> і відразу по три значення атрибутів <Код_вантажу>, <Найм_вантажу> та <Маса_вантажу>. Тобто значення перших трьох атрибутів є атомарними, а решти – множинними.

Можна перетворити таблицю у відношення шляхом введення штучного (надлишкового) дублювання даних, тобто продублювати відомі нам значення перших 3 атрибутів (додані значення атрибутів показані курсивом в табл. 14).

Таблиця 9 – Відношення НАВАНТАЖЕННЯ:

Код одержувача Назва одержувача Код станції Код вантажу Найм. вантажу Маса вантажу
  Мех. з-д     Метвироби  
  Мех. з-д     Рейки  
  Мех. з-д     Дріт  
  Ф-ка     Метвироби  
  Ф-ка     Дріт  
  Мех. з-д     Рейки  
  Мех. з-д     Дріт  
  ЗБК     Прокат  
  Будтрест   - - -

Перетворена таким чином таблиця є відношенням, що перебуває в 1НФ. Всі рядки є кортежами, що складені з атомарних значень атрибутів. Кортеж, в якому визначені не всі значення атрибутів називається неповним кортежем.

Це відношення називається універсальним, тому що РБД складається всього з одного відношення і в ньому міститься вся потрібна інформація.

Таким чином виконано перший етап проектування РБД, що полягає у складанні універсального відношення.

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

Проблеми зв’язані головним чином з недостатньою кількістю відношень в РБД. Розглянемо їх на прикладі попереднього універсального відношення:

1. Проблема вставки даних. Потрібно залучити до РБД нового одержувача (1572), якому не відправляли у звітну добу вантажі. Але невизначені значення атрибутів, як правило, не допускаються, тому що можуть виникнути проблеми під час отримання довідок на основі цих даних. (Наприклад, потрібна довідка про одержувачів, якім відправлені вантажі масою до 100 тон. В довідку може бути залучений одержувач 1572, якому взагалі ніяких вантажів не відправлено).

2. Проблема вилучення даних. Якщо одержувач (1537) поданий одним кортежем зі всіма заповненими полями і раптом дізналися, що вантаж ще не був відправлений, тоді потрібно видалити цей кортеж, але тоді разом зникнуть всі дані про одержувача 1537.

3. Проблема модифікації даних. Якщо одержувач (1010) повідомить, що змінюється код станції примикання, на якій знаходяться декілька одержувачів (1010 та 1572), тоді його прийдеться змінювати не тільки у всіх кортежах в цього одержувача (1010), але й у інших одержувачів (1572) на цій станції, інакше виникне протиріччя: обидва одержувача як і раніше знаходяться на одній станції, а коди станцій в них різні. Така невідповідність неприпустима. Причиною протиріччя є явна надлишковість даних.

Нормалізація відношення

Для усунення ризику виникнення зазначених проблем під час роботи з РБД виконують нормалізацію універсального відношення.

Перед нормалізацією відношення повинно знаходитися в першій нормальній формі.

Нормальна форма Бойса-Кодда

Запитання: Чи можна, не аналізуючи проблем, що можуть виникнути під час роботи з РБД, визначити, чи потребує відношення нормалізації?

Відповідь: Так. Якщо відношення знаходиться в нормальній формі Бойса-Кодда (НФБК), то воно майже напевно не потребує нормалізації і може застосовуватися в РБД, інакше потрібна його нормалізація.

Відношення знаходиться в НФБК, якщо і тільки якщо кожний детермінант відношення є можливим ключем відношення.

Що стосується можливих ключів універсального відношення НАВАНТАЖЕННЯ, то їх два й обидва вони складові:

<Код_одержувача, Код_вантажу>;

<Код_одержувача, Найм_вантажу>.

Функціональні залежності

Детермінант. Нехай дані 2 атрибути: А та В, то говорять, що атрибут В функціонально залежить від атрибуту А, якщо для кожного значення атрибуту А завжди існує рівно одне пов’язане з ним значення атрибуту В. Або навпаки, атрибут А є детермінантом атрибуту В. А й В можуть бути складовими, тобто кожний з них може бути складений з декількох атрибутів.

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

В будь-якому випадку при визначенні функціональної залежності не слід відволікатися від смислу самих атрибутів, від їх взаємної смислової залежності, а також від обмежень, що накладаються на можливі значення цих атрибутів.

Візьмемо два атрибути <Назва_одержувача> та <Код_одержувача>.

Переглянувши екземпляр відношення можна установити, що одному значенню атрибута <Код_одержувача> відповідає одне значення атрибута <Назва_одержувача>. Отже, можна припустити, що атрибут <Назва_одержувача> функціонально залежить від атрибута <Код_одержувача>.

Тепер перевіримо за змістом це припущення. А чи може одержувач з певним кодом мати іншу назву?

Кожен одержувач має унікальний код, тобто немає і не може бути двох одержувачів з однаковими кодами. Отже, у відношення не може бути в принципі доданий кортеж, у якому повториться код одержувача з іншою назвою одержувача. Код одержувача може повторитися тільки з тією же самою назвою. З цього боку гіпотеза про існування функціональної залежності між атрибутами <Код_одержувача> і <Назва_одержувача> підтверджується.

З іншого боку, чи може той самий одержувач мати кілька різних назв? Очевидно, що ні, якщо інше не обговорено окремо чи спеціально. Якщо такого застереження нема, то можна зробити остаточний висновок про те, що між атрибутами <Код_одержувача> і <Назва_одержувача> дійсно існує функціональна залежність, причому атрибут <Код_одержувача> є детермінантом атрибута <Назва_одержувача>.

Необхідно перевірити, чи є зворотна функціональна залежність між цими атрибутами.

В представленому екземплярі відношення зустрічається значення атрибута <Назва_одержувача>, якому відповідають два значення атрибута <Код_одержувача>. Два одержувачі 1010 і 1425 мають однакові назви. Отже, зворотна функціональна залежність між цими атрибутами відсутня. Атрибут <Назва_одержувача> не є детермінантом атрибута <Код_одержувача>.

На схемі функціональних залежностей між атрибутами відношення сама залежність показується стрілочкою від детермінанта до залежного атрибута.

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

Наприклад: атрибут <Маса_вантажу> функціонально не залежить від жодного атрибута відношення НАВАНТАЖЕННЯ. Пара атрибутів <Код_одержувача, Код_вантажу> є детермінантом для атрибута <Маса_вантажу>. Кожний з атрибутів пари є детермінантом: <Код_одержувача> для атрибутів <Назва_одержувача> і <Код_СТАНЦІЇ>, <Код_вантажу> для атрибута <Найм_вантажу>.

На схемі функціональних залежностей атрибути обведені кружечком, а пари атрибутів об’єднані рамочкою. В правому нижньому куті приводиться список детермінантів.

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

Схема функціональних залежностей між атрибутами відношення НАВАНТАЖЕННЯ(Код_одержувача, Назва_одержувача, Код_станції, Код_вантажу, Найменування_вантажу, Маса_вантажу) представлена на рисунку 5.

Рис. 5. Схема функціональних залежностей

Висновок: не кожний детермінант є можливим ключем, а тільки 4-й та 5-й. Тому відношення НАВАНТАЖЕННЯ не знаходиться в НФБК, отже потрібна його декомпозиція.

На цьому закінчується другий етап проектування РБД.







Что способствует осуществлению желаний? Стопроцентная, непоколебимая уверенность в своем...

Живите по правилу: МАЛО ЛИ ЧТО НА СВЕТЕ СУЩЕСТВУЕТ? Я неслучайно подчеркиваю, что место в голове ограничено, а информации вокруг много, и что ваше право...

Что будет с Землей, если ось ее сместится на 6666 км? Что будет с Землей? - задался я вопросом...

Что делать, если нет взаимности? А теперь спустимся с небес на землю. Приземлились? Продолжаем разговор...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2024 zdamsam.ru Размещенные материалы защищены законодательством РФ.