
- •Лекція 3. Реляційна модель бази даних
- •3. Вступ
- •3.1. Короткий огляд історії реляційної моделі
- •Домен - це набір припустимих значень для одного чи декількох атрибутів.
- •Кортеж - це рядок відношень.
- •Ступінь - ступінь відношення визначається кількістю атрибутів, що вона містить.
- •Кардинальність - це кількість кортежів, що містить відношення.
- •Реляційна база даних - Набір нормалізованих відношень.
- •Альтернативна термінологія
- •3.2.2. Математичні відношення
- •3.2.3. Відношення в базі даних
- •Реляційна схема - ім'я відношення, за яким випливає множина пар імен атрибутів і доменів.
- •3.2.4. Властивості відношень
- •3.2.5. Реляційні ключі
- •Суперключ (superkey) - Атрибут чи множина атрибутів, що єдиним образом ідентифікує кортеж даного відношення.
- •Потенційний ключ - суперключ, що не містить підмножини, що також є суперключем даного відношення.
- •Первинний ключ - Це потенційний ключ, що обраний для унікальної ідентифікації кортежів усередині відношення.
- •Зовнішній ключ - це атрибут чи множина атрибутів усередині відношення, що відповідає потенційному ключу будь якого (може того ж самого) відношення.
- •3.2.6. Представлення схем у реляційній базі даних
- •3.3. Реляційна цілісність
- •3.3.1. Визначник null Визначник null вказує, що значення атрибуту в даний момент невідомо чи неприйнятне для цього кортежу.
- •3.3.2. Цілісність сутностей
- •Цілісність сутностей - у базовому відношенні жоден атрибут, первинного ключа не може містити відсутніх значень, що позначаються визначником null.
- •3.3.3. Посилальна цілісність
- •3.3.4. Корпоративні обмеження цілісності Корпоративні обмеження цілісності - Додаткові правила підтримки цілісності даних, обумовлені користувачами чи адміністраторами бази даних.
- •3.4. Реляційні мови
- •3.4.1. Реляційна алгебра
- •Вибірка (чи обмеження)
- •Проекція
- •Декартовий добуток
- •Об'єднання
- •Різниця
- •Операції з'єднання
- •Тета-з'єднання (θ - join)
- •Природне з'єднання
- •Зовнішнє з'єднання
- •Напівз'єднання
- •Перетинання
- •Розподіл
- •3.4.2. Реляційне числення
- •Реляційне числення кортежів
- •Реляційне числення доменів
- •3.4.3. Інші мови
- •3.5. Представлення
- •3.5.1. Термінологія
- •Базове відношення - пойменоване відношення, що відповідає сутності в концептуальній схемі, кортежі якого фізично зберігаються в базі даних.
- •3.5.2. Призначення представлень
- •3.5.3. Відновлення представлень
- •3.6. Коли скбд можна вважати Реляційної
- •Фундаментальні правила (правила 0 і 12)
- •Правило 0 - фундаментальне правило
- •Правило 12 - правило заборони обхідних шляхів
- •Структурні правила (правила 1 і 6)
- •Правило 1 - представлення інформації
- •Правило 6 - відновлення представлення
- •Правила цілісності (правила 3 і 10)
- •Правило 3 - систематична обробка невизначених значень (null)
- •Правило 10 - незалежність обмежень цілісності
- •Правила маніпулювання даними (правила 2, 4, 5 і 7)
- •Правило 2 - гарантований доступ
- •Правило 4 - динамічний інтерактивний каталог, побудований за правилами реляційної моделі
- •Правило 5 - вичерпна підмова даних
- •Питання
3.3.1. Визначник null Визначник null вказує, що значення атрибуту в даний момент невідомо чи неприйнятне для цього кортежу.
Визначник NULL варто сприймати як логічну величину "невідомо". Іншими словами, або це значення не входить в область визначення деякого кортежу, або ніяке значення ще не задане. Ключове слово NULL являє собою спосіб обробки неповних чи незвичайних даних. Однак визначник NULL не слід розуміти як нульове чисельне значення чи заповнений пробілами текстовий рядок. Нулі і пробіли являють собою деякі значення, тоді як ключове слово NULL покликане позначати відсутність будь-якого значення. Отже, визначник NULL варто розглядати інакше, не так, як інші значення. Деякі автори використовують термін "значення NULL", але насправді визначник NULL не є значенням, а лише позначає його відсутність, а тому термін "значення NULL" використовувати не рекомендується.
Наприклад, у представленому в табл. 3.8 відношенні Viewing атрибут Comment може не мати визначеного значення доти, поки потенційний орендар не відвідає даний об'єкт нерухомості і не повідомить свою думку агентству. У противному випадку для представлення цього стану без використання ключового слова NULL буде потрібно або ввести якісь помилкові дані, або створити додаткові атрибути, що можуть бути безглуздими для користувачів, У даному прикладі можна спробувати представити відсутній коментар за допомогою значення -1. Крім того, можна додати у відношення Viewing ще один атрибут - "чи мається коментар?" - з значенням Y (Yes), якщо коментар є, і N (No) - у противному випадку. Однак обоє ці підходи можуть заплутати користувача.
Застосування визначника NULL може викликати проблеми на етапі реалізації. Труднощі виникають через те, що реляційна модель заснована на обчисленні предикатів першого порядку, що володіють двозначною, чи булевою логікою, тобто припустимими є тільки два значення: істина і неправда. Застосування визначника NULL означає, що прийдеться вести роботу з логікою більш високого порядку, наприклад тризначною чи навіть чотиризначною (Codd, 1986, 1987, 1990).
Використання поняття NULL у реляційній моделі є спірним питанням. Кодд (1990) розглядає поняття NULL як складову частину цієї моделі, а інші фахівці вважають цей підхід неправильним, думаючи що проблема відсутньої інформації ще не до кінця зрозуміла, задовільне її рішення не знайдене, а тому включення визначника NULL у реляційну модель є передчасним (Date, 1995). Слід зазначити, що не у всіх реляційних системах підтримується робота з визначником NULL.
Тепер можна приступати до вивчення реляційних обмежень цілісності.
3.3.2. Цілісність сутностей
Перше обмеження цілісності стосується первинних ключів базових відношень. Тут базове відношення визначається як відношення, що відповідає деякій сутності в концептуальній схемі (див. роздягнув 2.1). Більш точне визначення цього поняття приводиться в розділі 3.5.
Цілісність сутностей - у базовому відношенні жоден атрибут, первинного ключа не може містити відсутніх значень, що позначаються визначником null.
По визначенню, первинний ключ - це мінімальний ідентифікатор, що використовується для унікальної ідентифікації кортежів. Це значить, що ніяка підмножина первинного ключа не може бути достатнім для унікальної ідентифікації кортежів. Якщо допустити присутність визначника NULL у будь-якій частині первинного ключа, це рівноцінно твердженню, що не всі його атрибути необхідні для унікальної ідентифікації кортежів, що суперечить визначенню первинного ключа. Наприклад, оскільки no є первинним ключем відношення Branch, те не можна допустити вставку у відношення Branch кортежу з визначником NULL в атрибуті no.
Якщо розглянути це правило більш уважне, то можна помітити трохи його незвичайних властивостей. По-перше, чому воно застосовується до первинних ключів, але не використовується у відношенні альтернативних ключів? По-друге, чому воно обмежується тільки базовими відношеннями? Наприклад, використовуючи дані відношення Staff (див. табл. ЗА), розглянемо виконання наступного запиту: "Створити список номерів телефонів усіх співробітників організації". Результатом цього запиту є унарне відношення з єдиним атрибутом Tel_No. По визначенню, цей атрибут повинний бути первинним. ключем, але серед його значень міститься визначник NULL (відповідний номеру телефону співробітника з особистим номером 'SA9'). Оскільки це відношення не є базовим, реляційна модель допускає присутність визначника NULL у його первинному ключі. Недавно було почато кілька спроб перевизначення цього правила (Codd, 1988; Date, 1990),