
- •Вступ до баз даних. Загальна характеристика основних понять
- •1.1. Розвиток основних понять представлення даних
- •Лекція 6
- •Друга стадія концептуального проектування бд. (Моделі даних субд. Представлення концептуальної моделі засобами моделі даних субд)
- •6.1. Представлення концептуальній моделі засобами моделі даних субд
- •6.2 Типові моделі даних субд і представлення концептуальної моделі
- •6.2.1. Мережева модель даних
- •6.2.2. Ієрархічна модель даних
- •6.2.3. Реляційна модель даних
- •6.2.4. Багатовимірна модель даних
- •6.3. Засоби автоматизованого проектування концептуальної моделі
- •Лекція 6
- •Друга стадія концептуального проектування бд. (Моделі даних субд. Представлення концептуальної моделі засобами моделі даних субд)
- •6.1. Представлення концептуальній моделі засобами моделі даних субд
- •6.2 Типові моделі даних субд і представлення концептуальної моделі
- •6.2.1. Мережева модель даних
- •6.2.2. Ієрархічна модель даних
- •6.2.3. Реляційна модель даних
- •6.2.4. Багатовимірна модель даних
- •6.3. Засоби автоматизованого проектування концептуальної моделі
- •Лекція 7
- •Формалізація реляційної моделі
- •7.1. Формалізований опис відношень і схеми відношень
- •7.2. Маніпулювання даними в реляційній моделі
- •7.3. Операції реляційної алгебри
- •Лекція 8
- •Використання формального апарату для оптимізації схем відношень
- •8.1. Проблема вибору раціональних схем відношень
- •8.2. Функціональні залежності (залежності між атрибутами відношення)
- •8.3. Декомпозиція схеми відношення
- •8.4 .Вибір раціонального набору схем відношень шляхом нормалізації
- •8.5. Приклад нормалізації до 3нф
- •8.6. Цілісна частина реляційної моделі. Реалізація умови цілісності даних в сучасних субд
- •Лекція 9
- •Фізичні моделі даних (внутрішній рівень)
- •9.1. Структура пам'яті еом
- •9.2. Представлення екземпляра логічного запису
- •9.3. Організація обміну між оперативною і зовнішньою пам'яттю
- •9.4. Структури зберігання даних у зовнішній пам'яті еом
- •9.4.1. Послідовне розміщення фізичних записів
- •Пошук запису із заданим значенням ключа
- •9.4.2. Розміщення фізичних записів у вигляді спискової структури
- •Пошук запису із заданим значенням ключа
- •9.4.3. Використання індексів (індексування)
- •Пошук і читання запису із заданим значенням ключа
- •Модифікація (коректування) запису
- •Видалення запису
- •Додавання запису
- •9.4.5. Розміщення записів з використанням хешування
- •Пошук запису із заданим значенням ключа і читання
- •Модифікації запису
- •Видалення запису
- •Додавання запису
- •9.4.6. Комбіновані структури зберігання
- •Лекція 10
- •Структура сучасної субд на прикладі Microsoft sql Server 2008
- •10.1 Загальна структура субд
- •10.2. Архітектура бази даних. Логічний рівень
- •Тип даних hierarchyid
- •Просторові типи даних
- •Індекси
- •Представлення
- •Складки
- •Обмеження
- •Правила
- •Значення за замовчуванням
- •10.3. Архітектура бази даних. Фізичний рівень
- •Файли і файлові групи
- •Сторінки і екстенти
- •Сторінки файлів даних
- •Організація таблиць та індексів
- •Управління роботою з екстентами і вільним місцем
- •Відстежування вільного місця
- •Лекція 11
- •Програмне забезпечення роботи з сучасними базами даних
- •11.1. Основні завдання програмного забезпечення баз даних
- •11.2. Проблеми створення і ведення реляційних баз даних
- •11.3. Поняття мови sql і його основні частини
- •11.3.1. Історія виникнення і стандарти мови sql
- •11.3.2. Переваги мови sql
- •11.3.2. Загальна характеристика sql
- •Термінологія
- •Різновиди sql
- •Лекція 12
- •Основні оператори мови sql. Інтерактивний sql
- •12.1. Загальне уявлення про основні оператори мови sql
- •12.2 Інтерактивний режим роботи з sql (інтерактивна sql)
- •12.3. Використання мови sql для вибору інформації з таблиці
- •12.4. Використання sql для вибору інформації з декількох таблиць
- •12.5. Використання sql для вставки, редагування і видалення даних у таблицях
- •Лекція 13
- •Використання мови sql у прикладних програмах
- •13.1. Програмний (вбудований) sql
- •13.2. Статичний sql
- •13.3. Динамічний sql
- •13.4. Інтерфейси програмування додатків (api). Db‑Library, odbc, oci, jdbc
- •Протокол odbc
- •Протокол jdbc
- •Бібліотека db-Library
- •Лекція 14
- •Напрями розвитку баз даних
- •14.1. Об'єктно-орієнтований підхід до організації баз даних
- •Об'єктно-орієнтоване програмування
- •Об'єктно-орієнтовані бази даних
- •Об'єктно-реляційні субд
- •14.2. Розподілені бази даних
- •14.3. Сховища даних
- •Основи криптології
8.6. Цілісна частина реляційної моделі. Реалізація умови цілісності даних в сучасних субд
Нагадаємо, що під цілісністю бази даних розуміється те, що в ній міститься повна, несуперечлива і така інформація, що адекватно (правильно) відображає предметну область. Підтримка цілісності в реляційних БД заснована на виконанні наступних вимог.
Перша вимога називається вимогою цілісності сутностей. Об'єкту або сутності реального світу в реляційних БД відповідають кортежі відношень. Конкретна вимога полягає в тому, що будь-який кортеж будь-якого відношення відрізняється від будь-якого іншого кортежу цього відношення. Іншими словами, будь-яке відношення повинне володіти певним первинним ключем. Ця вимога автоматично задовольняється, якщо в системі не порушуються базові властивості відношень.
Друга вимога називається вимогою цілісності за посиланням. Вочевидь, що при дотриманні нормалізованості відношень складні сутності реального світу представляються у реляційній БД у вигляді декількох кортежів декількох відношень. Зв'язок між відношеннями здійснюється за допомогою міграції ключа.
Приклад зовнішнього ключа.
СТУДЕНТ (Код студента, Прізвище) складає ІСПИТ (Код студента, Предмет, Оцінка).
Атрибут Код студента сутності ІСПИТ називається зовнішнім ключем, оскільки його значення однозначно характеризують сутності, представлені кортежами деякого іншого відношення, – відношення СТУДЕНТ. Ми припускаємо, що поле Код студента є ключем відношення СТУДЕНТ.
Говорять, що відношення, в якому визначений зовнішній ключ, посилається на відповідне відношення, в якому такий же атрибут є первинним ключем.
Вимога цілісності за посиланням або вимога зовнішнього ключа полягає в тому, що для кожного значення зовнішнього ключа у посилальному відношенні, (в розумінні посилання) на яке веде посилання, повинен знайтися кортеж з таким же значенням первинного ключа або значення зовнішнього ключа має бути невизначеним (тобто ні на що не вказувати).
Обмеження цілісності сутності і за посиланням повинні підтримуватися СУБД. Для дотримання цілісності сутності досить гарантувати відсутність у будь-якому відношенні кортежів з одним і тим же значенням первинного ключа. В Access для цього призначена спеціальна реалізація цілочисельного поля – поле типу "Лічильник". З цілісністю за посиланням справи йдуть дещо складніше.
Зрозуміло, що при оновленні відношення (вставці нових кортежів або модифікації значення зовнішнього ключа в існуючих кортежах), що посилається, досить стежити за тим, аби не з'являлися некоректні значення зовнішнього ключа.
Але як бути при видаленні кортежу з відношення, на яке веде посилання?
Тут існують три підходи, кожен з яких підтримує цілісність за посиланням. Перший підхід полягає в тому, що забороняється проводити видалення кортежу, на який існують посилання. Тобто спочатку потрібно або видалити кортежі, що посилаються, або відповідним чином змінити значення їх зовнішнього ключа. При другому підході при видаленні кортежу, на який є посилання, у всіх кортежах, що посилаються, значення зовнішнього ключа автоматично стає невизначеним. Нарешті, третій підхід (каскадне видалення) полягає в тому, що при видаленні кортежу з відношення, на яке веде посилання, з відношення, що посилається, автоматично видаляються усі кортежі, що посилаються.
У розвинених реляційних СУБД зазвичай можна вибрати спосіб підтримки цілісності за посиланням для кожної окремої ситуації визначення зовнішнього ключа. Звичайно, для ухвалення такого рішення необхідно аналізувати вимоги конкретної прикладної області.
Відмітимо, що всі сучасні СУБД підтримують і цілісність сутностей, і цілісність за посиланням, але дозволяють користувачам вилучати дані обмеження і, таким чином, будувати бази даних, не відповідні реляційній моделі. Досвід показує, що відхід від основних положень реляційної моделі призводить до короткострокового виграшу – алгоритми стають простіші, але згодом серйозно ускладнюють завдання, особливо її супровід.
Короткі підсумки: Лекція присвячена питанням оптимізації схем відношень (структури реляційної бази даних) на основі формальних методів теорії реляційних баз даних. Тут розглядається ряд необхідних для цього понять (функціональна залежність, нормальні форми, декомпозиція схем відношень). Розбирається приклад приведення таблиці до третьої нормальної форми, оптимальної по ряду показників (що виключає збитковість, аномалії включення і видалення). Розглядаються питання реалізації цілісності даних у реляційних СУБД.
У лекції розглядаються питання використання формального апарату для оптимізації схем відношень. Сформульована проблема вибору раціональних схем відношень і напрями реалізації такого вибору шляхом нормалізації (послідовного перетворення схеми відношення в ряд нормальних форм). Для формального опису відповідного процесу визначені поняття функціональної залежності (залежності між атрибутами відношення), ключа, сформульовані правила виведення множини функціональних залежностей, поняття декомпозиції схеми відношення. Визначена перша, друга, третя нормальні форми і нормальна форма Бойса‑Кодда. Наведений приклад нормалізації до 3НФ. Розглянуті питання реалізації умов цілісності даних в реляційних СУБД.
Питання цієї лекції розглядаються в [11]-[9].