- •Тема 3 реляційна модель даних та її складові частини
- •3.1 Структура реляційної бд
- •3.2 Елементи реляційної моделі
- •3.3 Фундаментальні властивості відношень
- •Відсутність кортежів-дублікатів
- •2. Відсутність впорядкованості кортежів
- •3.Відсутність впорядкованості атрибутів
- •4. Атомарність значень атрибутів
- •3.4 Цілісність сутностей і посилань
- •3.5 Базисні засоби маніпулювання реляційними даними
- •3.5.1 Реляційна алгебра
- •3.5.2 Реляційне числення
2. Відсутність впорядкованості кортежів
Властивість відсутності впорядкованості кортежів відношення також є слідством визначення відношення-екземпляра як множини кортежів. Відсутність вимоги до підтримки порядку на множині кортежів відношення дає додаткову гнучкість СУБД при зберіганні баз даних в зовнішній пам'яті і при виконанні запитів до бази даних. Це не суперечить тому, що при формулюванні запиту до БД, наприклад, на мові SQL можна зажадати сортування результуючої таблиці відповідно до значень деяких стовпців. Такий результат, взагалі кажучи, не відношення, а деякий впорядкований список кортежів.
3.Відсутність впорядкованості атрибутів
Атрибути відношень не впорядковані, оскільки за визначенням схема відношення є множина пар { ім'я атрибуту, ім'я домена}. Для посилання на значення атрибуту в кортежі відношення завжди використовується ім'я атрибуту. Ця властивість теоретично дозволяє, наприклад, модифікувати схеми існуючих відношень не тільки шляхом додавання нових атрибутів, але і шляхом видалення існуючих атрибутів. Проте в більшості існуючих систем така можливість не допускається, і хоча впорядкованість набору атрибутів відношення явно не потрібна, часто як неявний порядок атрибутів використовується їх порядок в лінійній формі визначення схеми відношення.
4. Атомарність значень атрибутів
Значення всіх атрибутів є атомарними. Це витікає з визначення домена як потенційної множини значень простого типа даних, тобто серед значень домена не може міститися множина значень (відношення). Прийнято говорити, що в реляційних базах даних допускаються тільки нормалізовані відношення
3.4 Цілісність сутностей і посилань
Під цілісністю розуміють властивість бази даних, що означає, що вона містить повну, несуперечливу і адекватну інформацію, що відображає предметну область.
Вимога цілісності сутності полягає в тому, що будь-який кортеж відношення повинен відрізнятися від будь-якого іншого кортежу цього відношення, тобто іншими словами, будь-яке відношення повинне володіти первинним ключем. Ця вимога автоматично задовольняється, якщо в системі не порушуються базові властивості відношень.
Друга вимога називається вимогою цілісності по посиланнях. Очевидно, що при дотриманні нормалізованності відношень складна суть реального світу представляється в реляційній БД у вигляді декількох кортежів декількох відношень. Для зв'язку відношень служать ключі. Зовнішній ключ - це стовпець (або група стовпців) чиї значення є похідними значень первинного ключа іншої таблиці. Існування зовнішнього ключа припускає наявність первинного ключа в іншій (батьківської) таблиці, чиїм похідним є зовнішній ключ таблиці - нащадка. Вимога цілісності по посиланнях, або вимога зовнішнього ключа полягає в тому, що для кожного значення зовнішнього ключа, що з'являється у відношенні, що посилається, у відношенні, на яке веде посилання, повинен знайтися кортеж таким же значенням первинного ключа, або значення зовнішнього ключа повинне бути невизначеним (тобто ні на що не указувати).
Обмеження цілісності сутності і по посиланнях повинні підтримуватися СУБД. Для дотримання цілісності сутностей досить гарантувати відсутність в будь-якому відношенні кортежів з одним і тим же значенням первинного ключа.
З цілісністю по посиланнях справи йдуть декілька складніше.
Зрозуміло, що при оновленні відношення (вставці нових кортежів або модифікації значення зовнішнього ключа в існуючих кортежах), що посилається, досить стежити за тим, щоб не з'являлися некоректні значення зовнішнього ключа. Але як бути при видаленні кортежу з відношення, на яке веде посилання?
Тут існують три підходи, кожний з яких підтримує цілісність по посиланнях. Перший підхід (Заборона - Restrict) полягає в тому, що забороняється проводити видалення кортежу, на який існують посилання (тобто спочатку потрібне або видалити кортежі, що посилаються, або відповідним чином змінити значення їх зовнішнього ключа). При другому підході при видаленні кортежу, на який є посилання, у всіх кортежах, що посилаються, значення зовнішнього ключа автоматично стає невизначеним (Обнулення - Nullify). Нарешті, третій підхід (каскадне видалення - Cascade) полягає в тому, що при видаленні кортежу з відношення, на яке веде посилання, з відношення, що посилається, автоматично віддаляються кортежі, що все посилаються.
У розвинених реляційних СУБД звичайно можна вибрати спосіб підтримки цілісності по посиланнях для кожної окремої ситуації визначення зовнішнього ключа. Звичайно, для ухвалення такого рішення необхідно аналізувати вимоги конкретної прикладної області.
