Анотація: Лекція присвячена питанням оптимізації схем відносин на основі формальних методів теорії реляційних баз даних. Розбирається приклад приведення таблиці до третьої нормальної формі, оптимальної по ряду показників. Розглядаються питання цілісності даних в СУБД.
Мета лекції. показати можливість ефективного використання формальних методів побудови оптимальної (за певними показниками) структури реляційної бази даних шляхом нормалізації схем відносин.
8.1. Проблема вибору раціональних схем відносин
При поданні концептуальної схеми у вигляді реляційної моделі можливі різні варіанти вибору схем відносин. Одні варіанти вибору розглядалися в попередніх розділах (п. 6.2.3), інші виходять об'єднанням (або розбиттям) деяких схем відносин. Від правильного вибору схем відносин, що становлять концептуальну схему, в значній мірі буде залежати ефективність функціонування бази даних.
Розглянемо для прикладу конкретну схему відносин і проаналізуємо її недоліки. Припустимо, що дані про студентів, факультети, спеціальності, включені в таблицю до такої схеми відносини: СТУДЕНТ (Код студента, Прізвище, Назва факультету, Назва спеціальності).
Ця схема відносин обумовлює такі недоліки відповідної бази даних:
- Дублювання інформації (надмірність). У студентів, що навчаються на одному факультеті, буде повторюватися назва факультету. Для різних факультетів будуть повторюватися спеціальності.
- Потенційна суперечливість (аномалії оновлення). Якщо, наприклад, зміниться назва спеціальності, то змінюючи її в одному кортежі (у одного студента), необхідно змінювати і у всіх інших кортежі, де вона присутня.
- Потенційна можливість втрати відомостей (аномалії видалення). При видаленні інформації про всіх студентів, що надходять на певну спеціальність, ми втрачаємо всі відомості про цю спеціальність.
- Потенційна можливість невключення інформації в базу даних (аномалії включення). У базі даних будуть відсутні відомості про спеціальність, якщо на ній немає навчаються студентів.
В теорії реляційних баз даних існують формальні методи побудови реляційної моделі бази даних. в якій відсутня надмірність і аномалії оновлення. видалення і включення.
Нормалізація. Перша нормальна форма.
Побудова оптимального варіанта схем відносин (володіє кращими властивостями при операціях включення, модифікації і видалення даних, ніж всі інші набори схем) здійснюється шляхом так званої нормалізації схем відносин. Нормалізація проводиться в кілька етапів. На початковому етапі схема відносин повинна перебувати в першій нормальній формі (1НФ).
Відношення знаходиться в першій нормальній формі. якщо все атрибути відносини приймають прості значення (атомарні або неподільні), які не є безліччю або кортежем з більш елементарних складових.
Розглянемо наступний приклад.
Тепер на перетині будь-якого рядка і будь-якого стовпця знаходиться одне значення і, отже, дана таблиця знаходиться в першій нормальній формі.
Далі відношення. представлене в першій нормальній формі. послідовно перетворюється в другу і третю нормальні форми. Процес побудови другої і третьої нормальних форм буде описаний в наступних підрозділах. При деяких припущеннях про дані третя нормальна форма є шуканим найкращим варіантом.
Якщо ці припущення не виконуються, то процес нормалізації триває і ставлення перетворюється в четверту і п'яту нормальні форми. Побудова відповідних форм описано в літературі і в даній книзі не розглядається.
Перш ніж перейти до побудови другої нормальної форми. необхідно визначити ряд формальних понять.
8.2. Функціональні залежності (залежності між атрибутами відносини)
Функціональна залежність на відношенні R - це твердження виду "Якщо два кортежу R збігаються за атрибутами безлічі (тобто. Ці кортежі мають у відповідних один одному компонентах одні і ті ж значення для кожного атрибута безлічі X), то вони повинні збігатися і по атрибутам безлічі. Формально ця залежність записується вираженням X -> Y. причому йдеться, що X функціонально визначає Y. Часто використовується інше утвержданіе: X функціонально визначає Y або Y функціонально залежить від X (позначається X -> Y) тоді і тільки тоді, коли кожн е значення безлічі X відносини R пов'язано з одним значенням безлічі Y відносини R. Інакше кажучи, якщо два кортежу R збігаються за значенням X. вони збігаються і за значенням Y.
Зауваження. Взагалі кажучи, під терміном "ставлення" можуть матися на увазі два поняття:
- відношення як змінна, яка може набувати різних значень (таблиця, в рядки і стовпці якої можуть бути вписані різні значення);
- відношення, як набір конкретних значень (таблиця із заповненими елементами).
Функціональні залежності характеризують всі відносини, які можуть бути значеннями схеми відносини R в принципі. Тому єдиний спосіб визначити функціональні залежності - уважно проаналізувати семантику (сенс) атрибутів.
Функціональні залежності є, зокрема, обмеженнями цілісності, тому доцільно перевіряти їх при кожному оновленні бази даних.
Приклад функціональних залежностей для відносини ЕКЗАМЕНАЦІЙНА ВІДОМІСТЬ