6. Метод нормальних форм
Проектування БД є одним з етапів життєвого циклу інформаційної системи. Основною задачею, розв'язуваної в процесі проектування БД, є задача нормалізації її відносин. Розглянутий нижче метод нормальних форм є класичним методом проектування реляційних БД. Цей метод заснований на фундаментальному в теорії реляційних баз даних понятті залежності між атрибутами відносин.
Нормальні форми
Процес проектування БД із використанням методу нормальних форм є ітераційним і полягає в послідовному перекладі відносин з першої нормальної форми в нормальні форми більш високого порядку за певними правилами. Кожна наступна нормальна форма обмежує певний тип функціональних залежностей, усуває відповідні аномалії при виконанні операцій над відношеннями БД і зберігає властивості попередніх нормальних форм.
Виділяють наступну послідовність нормальних форм:
перша нормальна форма (1НФ);
друга нормальна форма (2НФ);
третя нормальна форма (ЗНФ);
посилена третя нормальна форма, або нормальна форма Бойса - Кодда (БКНФ);
• четверта нормальна форма (4НФ);
• п'ята нормальна форма (5НФ).
Перша нормальна форма. Відношення перебуває в 1НФ, якщо всі його атрибути є простими (мають єдине значення). Вихідне відношення будується таким чином, щоб воно було в 1НФ.
Переклад відношень в наступну нормальну форму здійснюється методом «декомпозиції без втрат». Така декомпозиція повинна забезпечити таке перетворення, щоб запити (вибірка даних за умовою) до вихідного відношення й до відношень, одержуваних у результаті декомпозиції, дадуть однаковий результат.
Основною операцією методу є операція проекції. Пояснимо її на прикладі. Припустимо, що у відношенні R(A,B,C,D,E,...) усунення функціональної залежності С->D дозволить перевести його в наступну нормальну форму. Для рішення цієї задачі виконаємо декомпозицію відношення R на два нових відношення R1(A,B,C,E,...) і R2(C,D). Відношення R2 є проекцією відношення R на атрибути С и D.
Вихідне відношення ВИКЛАДАЧ, використовуване для іллюстрації метода, має складений ключ ФИО.Предм.Група й перебуває в 1 НФ. оскільки всі його атрибути прості.
Щодо цього відповідно до мал. 2.15 можна виділити часткову залежність атрибутів Стаж, Д_Стаж, Каф, Должн, Оклад від ключа - зазначені атрибути перебувають у функціональній залежності від атрибута ФИО, що є частиною складеного ключа.
Ця часткова залежність від ключа приводить до наступного:
1. У відношенні присутнє явне й неявне надлишкове дублювання даних, наприклад:
повторення відомостей про стаж, посаду й оклад викладачів, що проводять заняття в декількох групах і/або по різних предметах;
повторення відомостей про оклади для однієї й тої ж посади або про надбавки за однаковий стаж.
2. Наслідком надлишкового дублювання даних є проблема їхнього редагування. Наприклад, зміна посади у викладача Іванова І.М. зажадає перегляду всіх кортежів відношення й внесення змін у ті з них, які містять відомості про даного викладача.
Частина надмірності усувається при переході відношення в 2НФ.
Друга нормальна форма. Відношення перебуває в 2НФ, якщо воно перебуває в 1НФ і кожний неключовий атрибут функціонально повно залежить від первинного ключа (складеного).
Для усунення часткової залежності й переходу відношення в 2НФ необхідно, використовуючи операцію проекції, розкласти його на кілька відносин у такий спосіб:
побудувати проекцію без атрибутів, що перебувають у частковій функціональній залежності від первинного ключа;
побудувати проекції на частині складеного первинного ключа й атрибути, що залежать від цих частин.
У результаті одержимо дві відношення R1 і R2 в 2НФ (рис. 2.13).
У відношенні R1 первинний ключ є складовим і складається з атрибутів ФИО.Предм.Група. Нагадаємо, що даний ключ у відношенні R1 отриманий у припущенні, що кожний викладач в одній групі по одному предмету може або читати лекції, або проводити практичні заняття. У відношенні R2 ключ ФИО.
R1
ФИО | Предм | Група | ВидЗан | |||||
Іванов И. М. | СУБД | 256 | Практ | |||||
Іванов И. М. | ПЛ/1 | 123 | Практ | |||||
Петров М. И. | СУБД | 256 | Лекція | |||||
Петров М. И. | Паскаль | 256 | Практ | |||||
Сидоров Н. Г. | ПЛ/1 | 123 | Лекція | |||||
Сидоров Н. Г. | Паскаль | 256 | Лекція | |||||
Егоров В. В. | ПЭВМ | 244 | Лекція | |||||
R2
| ||||||||
ФИО | Должн | Оклад | Стаж | Д_Стаж | Каф | |||
Іванов И. М. | преп | 500 | 5 | 100 | 25 | |||
Петров М. И. | ст.преп | 800 | 7 | 100 | 25 | |||
Сидоров Н.Г | преп | 500 | 10 | 150 | 25 | |||
Егоров В. В. | преп | 500 | 5 | 100 | 24 |
Рис. 2.13. Відношення БД у 2НФ
Дослідження відносин R1 і R2 показує, що перехід до 2НФ дозволив виключити явну надмірність даних у таблиці R2 - повторення рядків з відомостями про викладачів. В R2 як і раніше має місце неявне дублювання даних.
Для подальшого вдосконалювання відношень необхідно перетворити його в ЗНФ.
Третя нормальна форма.
Визначення 1. Відношення перебуває в ЗНФ, якщо воно перебуває в 2НФ і кожний неключовий атрибут нетранзитивно залежить від первинного ключа.
Існує й альтернативне визначення.
Визначення 2, Відношення перебуває в ЗНФ у тому і тільки в тому випадку, якщо всі неключові атрибути відношення взаємно незалежні й повністю залежать від первинного ключа.
Довести справедливість цього твердження нескладно. Дійсно, те, що неключові атрибути повністю залежать від первинного ключа, означає, що дане відношення перебуває у формі 2НФ. Взаємна незалежність атрибутів (визначення наведене вище) означає відсутність усякої залежності між атрибутами відношення, у тому числі й транзитивній залежності між ними. Таким чином, друге визначення ЗНФ зводиться до першого визначення.
Якщо у відношенні R1 транзитивні залежності відсутні, то у відношенні R2 вони є:
ФИО—>Должн—>Оклад,
ФИО—>Оклад—> Должн,
ФИО—>Стаж—> Д_Стаж
Транзитивні залежності також породжують надлишкове дублювання інформації у відношенні. Усунемо їх. Для цього використовуючи операцію проекції на атрибути, що є причиною транзитивних залежностей, перетворимо відношення R2, одержавши при цьому відношення R3, R4 і R5, кожне з яких перебуває в ЗНФ (рис, 2.14а). Графічно ці відношення представлені на рис. 2.14б. Помітимо, що відношення R2 можна перетворити по-іншому, а саме: у відношенні R3 замість атрибута Должн взяти атрибут Оклад.
а) б)
R 3
ФИО | Должн | Стаж | Каф |
Іванов И. М. | преп | 5 | 25 |
Петров М. И. | ст.преп | 7 | 25 |
Сидоров Н.Г | преп | 10 | 25 |
Егоров В. В. | преп | 5 | 24 |
R4
Должн | Оклад |
Преп | 500 |
ст.преп | 800 |
R5
Стаж | Д_стаж |
5 | 100 |
7 | 100 |
10 | 150 |
Рис. 2.14. Відношення БД у ЗНФ
На практиці побудова ЗНФ схем відношень у більшості випадків є достатнім і приведенням до них процес проектування реляційної БД закінчується. Дійсно, приведення відношень до ЗНФ у нашім прикладі, привело до усунення надлишкового дублювання.
Якщо у відношенні є залежність атрибутів складеного ключа від неключових атрибутів, то необхідно перейти до посиленого ЗНФ.
Посилена ЗНФ або нормальна форма Бойса - Кодда (БКНФ).
Відношення перебуває в БКНФ, якщо воно перебуває в ЗНФ і в ньому відсутні залежності ключів (атрибутів складеного ключа) від неключових атрибутів.