
- •Лекція 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.2.3. Відношення в базі даних
Використовуючи зазначені концепції в контексті бази даних, ми одержимо наступне визначення реляційної схеми.
Реляційна схема - ім'я відношення, за яким випливає множина пар імен атрибутів і доменів.
Наприклад, для атрибутів A1, A2…, An з доменами D1, D2 …, Dn реляційної схемою буде множина {A1:D1, A2:D2,…,An:Dn}. Відношення R, задане реляційної схемою S, є множиною відображень імен атрибутів на відповідні їм домени. Таким чином, відношення R є множиною таких n-арних кортежів {A1:d1, A2:d2,…,An:dn}, де d1 є D1, d2 є D2,…,dn є Dn.
Кожен елемент n-арного кортежу складається з атрибута і значення цього атрибута. Звичайно при записі відношення у виді таблиці імена атрибутів перелічуються в заголовках стовпців, а кортежі утворять рядки формату (d1, d2 …, dn), де кожне значення береться з відповідного домену. Таким чином, у реляційній моделі відношення можна представити як довільну підмножину декартового добутку доменів атрибутів, тоді як таблиця - це усього лише фізичне представлення такого відношення.
У прикладі, показаному на мал. 3.1, відношення Branch має атрибути Bno, Street, Area, City, Pcode, Tel_No і Fax_No з відповідними їм доменами. Відношення Branch являє собою довільну підмножину декартового добутку доменів чи довільну множину 7-арних кортежів, у яких першим йде елемент із домену BRANCH_NOMBER, другим - елемент із домену STREET_NAME і т.д. Наприклад, один з 7-арних кортежів може мати такий вигляд:
{(У5, 22, Deer Rd, Sidcup, London, SW1 4EH, 0171-886-1212, 0171-886-1214)}
Цей же кортеж можна записати в більш коректній формі:
{(Bno: 'B5', Street: '22 Deer Rd', Area: 'Sidcup', City: 'London', Pcode: 'SW1 4EH', Tel_No: '0171-886-1212', Fax_No: '0171-886-1214')}
Таблиця Branch являє собою зручний спосіб запису всіх 7-арних кортежів, що утворять відношення в деякий заданий момент часу. Це зауваження пояснює, чому рядки таблиці в реляційній моделі називаються кортежами.
3.2.4. Властивості відношень
Відношення має наступні характеристики.
Відношення має ім'я, що відрізняється від імен всіх інших відношень.
Кожен осередок відношення містить тільки атомарне (неподільне) значення.
Кожен атрибут має унікальне ім'я.
Значення атрибуту беруться з того самого домену.
Порядок проходження атрибутів не має ніякого значення.
Кожен кортеж є унікальним, тобто дублікатів кортежів бути не може.
Теоретично порядок проходження кортежів у відношенні не має ніякого значення. (Однак, практично цей порядок може істотно вплинути на ефективність доступу до них.)
Для ілюстрації змісту цих обмежень давайте знову розглянемо відношення Branch, показане на мал. 3.1. Оскільки кожен осередок повинний містити тільки одне значення, то не допускається збереження в однім і тім же осередку двох номерів телефону того самого відділення компанії. Інакше кажучи, відношення не можуть містити повторюваних груп. Про відношення, що має таку властивість, говорять, що воно нормалізоване, чи знаходиться в першій нормальній формі (про нормальні форми - далі).
Імена стовпців, зазначені в їхньому верхньому рядку, відповідають іменам атрибутів відношення. Значення атрибута Bno беруться з домену BRANCH_NUMBERS - не допускається розміщення в цьому стовпці інших значень, наприклад поштового індексу. Стовпці можна змінювати місцями за умовою, що ім'я атрибута переміщається разом з його значеннями. Таблиця усе ще буде представляти те ж відношення, якщо атрибут Tel_No розташувати в ній перед атрибутом Pcode, хоча для кращої читабельності розумніше було б розташовувати окремі частини адреси поблизу.
Відношення не може містити кортежів-дублікатів. Наприклад, рядок ('B5', '22 Deer Rd', 'Sidcup', 'London', 'SW1 4EH', '0171-886-1212', '0171-886-1214') може бути представлена у відношенні тільки один раз. При необхідності рядки можна змінювати місцями довільним чином (наприклад, перемістити рядок відділення 'B5' на місце рядка відділення 'У4'), саме відношення при цьому залишиться колишнім.
Велика частина властивостей відношень походить від властивостей математичних відношень.
Оскільки відношення є множиною, то порядок елементів не має значення. Отже, порядок кортежів у відношенні несуттєвий.
У множині немає повторюваних елементів. Аналогічно, відношення не може містити кортежів-дублікатів.
При обчисленні декартового добутку множин із простими однозначними елементами (наприклад, цілочисленими значеннями), кожен елемент у кожнім кортежі має єдине значення. Аналогічно, кожен осередок відношення містить тільки одне значення. Однак математичне відношення не має потреб в нормалізації. Кодд запропонував заборонити наявність повторюваних груп з метою спрощення реляційної моделі даних.
Набір можливих значень для даної позиції відношення визначається множиною, чи доменом, на якому визначається ця позиція. У таблиці всі значення в кожнім стовпці повинні походити від того самого домену, визначеного для даного атрибута.
Однак у математичному відношенні порядок проходження елементів у кортежі має значення. Наприклад, припустима пара значень (1, 2) зовсім відмінна від припустимої пари (2, 1). Це твердження невірне для відношень у реляційної моделі, де спеціально обмовляється, що порядок атрибутів несуттєвий. Справа в тім, що заголовки стовпців однозначно визначають, до якого саме атрибута відноситься дане значення. Наслідком цього факту є положення про те, що порядок проходження заголовків стовпців в заголовку відношення несуттєвий. Однак, якщо структура відношення вже визначене, то порядок елементів у кортежах тіла відношення повинне відповідати порядку імен атрибутів.