Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Чичкань.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
2.15 Mб
Скачать
      1. 8.6. Цілісна частина реляційної моделі. Реалізація умови цілісності даних в сучасних субд

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

  1. Перша вимога називається вимогою цілісності сутностей. Об'єкту або сутності реального світу в реляційних БД відповідають кортежі відношень. Конкретна вимога полягає в тому, що будь-який кортеж будь-якого відношення відрізняється від будь-якого іншого кортежу цього відношення. Іншими словами, будь-яке відношення повинне володіти певним первинним ключем. Ця вимога автоматично задовольняється, якщо в системі не порушуються базові властивості відношень.

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

Приклад зовнішнього ключа.

СТУДЕНТ (Код студента, Прізвище) складає ІСПИТ (Код студента, Предмет, Оцінка).

Атрибут Код студента сутності ІСПИТ називається зовнішнім ключем, оскільки його значення однозначно характеризують сутності, представлені кортежами деякого іншого відношення, – відношення СТУДЕНТ. Ми припускаємо, що поле Код студента є ключем відношення СТУДЕНТ.

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

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

Обмеження цілісності сутності і за посиланням повинні підтримуватися СУБД. Для дотримання цілісності сутності досить гарантувати відсутність у будь-якому відношенні кортежів з одним і тим же значенням первинного ключа. В Access для цього призначена спеціальна реалізація цілочисельного поля – поле типу "Лічильник". З цілісністю за посиланням справи йдуть дещо складніше.

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

Але як бути при видаленні кортежу з відношення, на яке веде посилання?

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

У розвинених реляційних СУБД зазвичай можна вибрати спосіб підтримки цілісності за посиланням для кожної окремої ситуації визначення зовнішнього ключа. Звичайно, для ухвалення такого рішення необхідно аналізувати вимоги конкретної прикладної області.

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

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

У лекції розглядаються питання використання формального апарату для оптимізації схем відношень. Сформульована проблема вибору раціональних схем відношень і напрями реалізації такого вибору шляхом нормалізації (послідовного перетворення схеми відношення в ряд нормальних форм). Для формального опису відповідного процесу визначені поняття функціональної залежності (залежності між атрибутами відношення), ключа, сформульовані правила виведення множини функціональних залежностей, поняття декомпозиції схеми відношення. Визначена перша, друга, третя нормальні форми і нормальна форма Бойса‑Кодда. Наведений приклад нормалізації до 3НФ. Розглянуті питання реалізації умов цілісності даних в реляційних СУБД.

Питання цієї лекції розглядаються в [11]-[9].