- •Лекція 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 - вичерпна підмова даних
- •Питання
Різниця
-
R – S
Різниця двох відношень R і S складається з кортежів, що маються у відношенні R, але відсутні у відношенні S. Причому відношення R і S повинні бути сумісні по об'єднанню.
Приклад 3.5 Операція різниці
Створіть список усіх міст, у яких є відділення компанії, але немає об'єктів нерухомості, що здаються в оренду.
П City (Branch) - П City (Property_for_Rent)
У даному випадку аналогічно попередньому прикладу варто створити спільні по об'єднанню відношенні Branch і Property_for_Rent, виконавши їх проекцію по атрибуті City. Потім для комбінування отриманих нових відношень варто використовувати операцію різниці. Результат виконання цих операцій показаний у табл. 3.14.
Операції з'єднання
Як правило, користувачів цікавить лише деяка частина всіх комбінацій кортежів декартового добутку, що задовольняє заданій умові. Тому замість декартового добутку звичайно використовується, одна з найважливіших операцій реляційної алгебри - операція з'єднання. У результаті її виконання на базі двох вихідних відношень створюється деяке нове відношення. Операція з'єднання є похідної від операції декартового добутку, тому що вона еквівалентна операції вибірки з декартового добутку двох операндів-відношень тих кортежів, що задовольняють умові, зазначеній в предикаті з'єднання як формули вибірки. З погляду ефективної реалізації в реляційних СКБД, ця операція є однієї із самих важких і часто виявляється однієї з основних причин, що викликають проблеми з продуктивністю, властиві всім реляційним системам.
Нижче перераховані різні типи операцій з'єднання, що трохи відрізняються одна від одної і можуть бути в тій чи іншій ступені корисні.
Тета-з'єднання (Θ-join). .
З'єднання по еквівалентності (equi-join), що є приватним видом тета-з'єднання.
Природне з'єднання (natural join).
Зовнішнє з'єднання (outer join).
Напівз'єднання (semi-join).
Тета-з'єднання (θ - join)
-
R S
Операція тета-з'єднання визначає відношення, що містять кортежі з декартового добутку відношень R і S, що задовольняють предикату F. Предикат F має вид R.ai θ S.bi, де замість θ може бути зазначений один з операторів порівняння (<, <=, >, > = ,= чи -=).
Позначення тета-з'єднання можна переписати на основі базових операцій вибірки і декартового добутку так, як показано нижче.
R S = σF (R x S)
Так само, як і у випадку з декартовим добутком, ступенем тета-з'єднання називається сума ступенів операндів-відношень R і S. Якщо предикат F містить тільки оператор рівності (=), то з'єднання називається з'єднанням по еквівалентності (equi-join). Ще раз звернемося до запиту, описаному в прикладі 3.3.
Приклад 3.6 Операція з'єднання по еквівалентності
Створіть список всіх орендарів, що оглядали об'єкти нерухомості з указівкою зроблених ними коментарів.
У прикладі 3.3 для одержання цього списку використовувалися операції декартового добутки і вибірки. Однак той же самий результат можна одержати за допомогою з'єднання по еквівалентності.
( П Rno, Fname, Lname (Renter)) renter.rno = viewing.rno (П Rno, Pno, Comment (Viewing))
Результат цих операцій показаний у табл. 3.12.