Зацерковний В.І. та ін. ГІС та бази даних. І бази даних
Скачать 31.1 Mb.
|
Кристофер Дейт (Christopher J. Date) (1941 р.) – відомий фахівець у галузі баз даних, незалежний автор, лектор і консультант. Автор класичного посібника "Введення в системи баз даних", який як стандартний текст у системах баз даних використовується в багатьох університетах світу. 394 Стрижнева сутність (стрижень) – це незалежна сутність. Асоціативна сутність (асоціація) – це зв’язок типу Б:Б між двома або більше сутностями чи екземплярами сутності. Асоціації розглядаються як повноправні сутності, які або можуть брати участь в інших асоціаціях і позначатись аналогічно стрижневим сутностям, або мати не тільки набір ключових атрибутів, необхідних для вказівки зв’язків, але й будь-яку іншу кількість атрибутів, що характе- ризують зв’язок. Характеристична сутність (характеристика) – це зв’язок типу Б:1 або 1:1 між двома сутностями (окремий випадок асоціації). Єдиною метою характеристики в рамках аналізованої предметної сфери є опис або уточнення деякої іншої сутності. Потреба у них виникає в зв’язку з тим, що сутності реального світу мають іноді багатозначні властивості. Наприклад, книга може мати декілька характеристик перевидання (доповнене, перероблене тощо). В реляційній моделі даних до відношень пред’являються певні вимо- ги, які виражаються в принципі інформаційної неподільності: кожне значен- ня відношення реляційної моделі може містити тільки одну порцію даних – і принципі інформаційного кодування: неприпустимо, щоб в значенні відношення реляційної моделі містилось більше однієї порції даних. 12.2. Ключі Зв’язки між кортежами реалізуються у вигляді ключів – певним чином позначених атрибутів відношення. Ключ – це стовпчик (або декілька стовпчик), що додається до таблиці і дозволяє встановити зв’язок із записами в іншій таблиці. Існують ключі двох типів: первинні і вторинні (зовнішні). Первинний ключ – це одне або кілька полів (стовпчик), комбіна- ція значень яких однозначно визначає кожний запис у таблиці. Пер- винний ключ не допускає значень Null і завжди повинен мати унікальний індекс. Первинний ключ використовується для зв’язування таблиці з зовнішніми ключами в інших таблицях (рис. 12.4). Зовнішній (вторинний) ключ – це одне або декілька полів (стовп- чиків) у таблиці, що містять посилання на поле або поля первинного ключа в іншій таблиці. Зовнішній ключ визначає спосіб об’єднання таблиць. З двох логічно пов’язаних таблиць одну називають таблицею первинного ключа, або головною таблицею, а іншу – таблицею вторинного (зовнішнього) ключа, або підпорядкованою таблицею. 395 Рис. 12.4. Пов’язування таблиць ключем СКБД дозволяють зіставити споріднені записи з обох таблиць і спільно вивести їх у формі, звіті або запиті. Існує три типи первинних ключів: ключові поля лічильника (лічиль- ник), простий ключ і складовий ключ. Поле лічильника (тип даних "Лічильник"). Для кожного запису цього поля таблиці автоматично заноситься унікальне числове значення. Простий ключ. Якщо поле містить унікальні значення, такі як коди чи інвентарні номери, то це поле можна визначити як первинний ключ. Як ключ можна визначити всі поля, що містять дані, якщо це поле не містить повторювані значення або значення Null. Складові ключі. У випадках, коли неможливо гарантувати унікаль- ність значень кожного поля, існує можливість створити ключ, що складається з декількох полів. Найчастіше така ситуація виникає для таблиці, використовуваної для зв’язування двох таблиць відношенням "багато до багатьох" (рис.12.5). Необхідно ще раз відзначити, що в полі первинного ключа повинні бути тільки унікальні значення в кожному рядку таблиці, тобто збіг не допускається, а в полі вторинного або зовнішнього ключа збіг значень у рядках таблиці допускається. Якщо виникають труднощі з вибором потрібного типу первинного ключа, то як ключ доцільно обрати поле лічильника. 1 2 3 4 Id_theme Записи 1 2 3 4 Id_post Записи 1 1 1 2 Id_theme Таблиця Themes PK Таблиця Posts PK FK 396 Рис. 12.5. Приклад складового ключа 12.3. Зв’язування відношень Структура даних може бути описана формально. Опис глобальної логічної структури бази даних називається схемою. Схема визначає всі типи елементів даних, які зберігаються в базі даних, а також усі зв’язки між ними. Схема бази даних, як правило, дуже складна. Конкретний користувач або прикладний програміст не повинен знати схему в цілому. Така необізнаність часто навіть необхідна з точки зору безпеки даних. Програ- міст або користувач повинен бути інформований тільки про множину даних і зв’язків, які орієнтовані на його конкретну предметну сферу. Частина схеми отримала назву підсхеми. По суті, підсхема – це певна організація файлів прикладного програміста. В функції СКБД входить побудова відповідних підсхем із загальної схеми і передача даних користувачам і системним програмістам. При цьому схема даних повинна бути спроектована таким чином, щоб з неї могли бути побудовані всі підсхеми за запитами користувачів або прикладних програм. Ні схема, ні підсхема не визначають методів фізичного зберігання даних. Схеми і підсхеми подають у вигляді діаграм, на яких зображують ти- пи елементів даних і зв’язки між ними. Розрізняють чотири види зв’язків: 1) необов’язковий зв’язок: існування об’єктів не залежить від зв’язку; 2) можливий зв’язок: існування одного з об’єктів залежить від зв’язку; 3) умовний зв’язок: частковий вид можливого зв’язку, коли задається умова існування (наприклад, зв’язок між об’єктами СТУДЕНТ, СТИПЕН- ДІЯ можливий за умови відповідної успішності); 397 4) обов’язковий зв’язок: існування обох об’єктів залежить від зв’язку. Односторонні зв’язки між парами елементів називаються асоціація- ми, а двосторонні – відображеннями. Між двома сутностями А і В можливі чотири типи зв’язків: 1) перший тип – зв’язок ОДИН-ДО-ОДНОГО (1:1): за допомогою такого відображення подають такий тип зв’язку, коли в кожний момент часу кожний екземпляр елемента, від якого спрямовано зв’язок, іденти- фікує один і тільки один екземпляр елемента, до якого спрямовано зв’язок, при цьому ця ідентифікація є унікальною в обох напрямках. Приклад відображення 1:1 наведено на рис. 12.5. Якщо відомо значення А, то однозначно визначається і значення В. І навпаки. Рис. 12.5. Приклади відображення 1:1 ("один-до-одного" ) 2)другий тип– зв’язок ОДИН ДО БАГАТЬОХ (1:Б): якщо екземпляр елемента даних, від якого спрямований зв’язок, ідентифікує певну кількість екземплярів елементів даних, до яких спрямовано зв’язок, причому ідентифікація в даному напрямку не обов’язково є унікальною, то таке відображення називається ОДИН ДО БАГАТЬОХ (1:Б). Прикладом такого відношення (рис. 12.6) може бути БУДИНОК – МЕШКАНЦІ. Будинок може пустувати, в ньому може жити один або декілька мешканців. 398 Рис. 12.6. Приклад відображення 1:Б ("один-до-багатьох") Оскільки між двома сутностями можливі зв’язки в обох напрямках, то існує ще два типи зв’язків: 3) БАГАТО ДО ОДНОГО (Б:1). Відображення Б:1 є аналогічним відображенням 1:Б; 4) БАГАТО ДО БАГАТЬОХ (Б:Б). Якщо екземпляр елемента даних, від якого спрямовано зв’язок, ідентифікує певну кількість екземплярів елементів даних, до яких спря- мовано зв’язок, і навпаки, тобто ідентифікація не є унікальною в обох на- прямках, то таке відображення називається БАГАТО ДО БАГАТЬОХ (Б:Б). Прикладом такого відношення (рис. 12.7) є відношення ВИКЛАДАЧІ – СТУДЕНТИ. Кожний студент "пов’язаний" з багатьма викладачами, і кожний викладач читає лекції різним групам студентів. Рис. 12.7. Приклад відображення Б:Б ("багато-до-багатьох") 399 Характер зв’язків між сутностями не обмежується переліченими. Існують і більш складні зв’язки: 1) множина зв’язків між одними й тими ж сутностями. Наприк- лад, пацієнт, маючи одного лікаря, що лікує, може мати також декілька лікарів-консультантів; лікар може бути лікарем, що лікує декількох пацієнтів, та може одночасно консультувати декількох інших пацієнтів; 2) тренарні зв’язки. Наприклад, лікар може призначити декільком пацієнтам декілька аналізів, аналіз може бути призначений декількома лікарями декільком пацієнтам, й пацієнту може бути призначено декілька аналізів декількома лікарями; 3) зв’язки більш високих порядків, семантика (зміст) яких іноді дуже складна. Існує три типи асоціацій: • асоціація типу 1 (проста); • асоціація типу М (складна); • асоціація типу С (умовна). В простій асоціації типу 1 (рис. 12.8) екземпляр елемента даних, від якого спрямовано зв’язок, ідентифікує один і лише один екземпляр еле- мента даних, до якого спрямовано зв’язок. Ця ідентифікація є унікальною й визначає функціональну залежність. Рис. 12.8. Приклад простої асоціації типу 1 У складній асоціації типу М (рис. 12.9) екземпляр елемента даних, від якого спрямовано зв’язок, ідентифікує деяке число екземплярів елементів даних, до яких спрямовано зв’язок. Ідентифікація є багатозначною залежністю і не обов’язково унікаль- ною. При цьому зв’язок у зворотному напрямку не розглядається. 400 Рис. 12.9. Приклад складної асоціації типу М В умовній асоціації типу С (рис. 12.10) для даного екземпляра еле- мента даних, від якого спрямовано зв’язок, може не існувати відповідного екземпляра елемента даних, до якого спрямовано зв’язок. Якщо він існує, то відноситься до єдиного екземпляра елемента даних. Наприклад, ПІБ РОБІТНИКА і ДАТА ЗВІЛЬНЕННЯ. Рис. 12.10. Приклад умовної асоціації типу С В ід д іл і нф орм аці ї В оронов М ик ит ен к о Д м ит р енк о К уз нє цов Ів ано в М ел ехов а П ав л ов а С та хов Ш иря ев а Я к ов л єв В ід д іл прог ра м ув ання В ід д іл роз роб к и те хнол ог іч них проце сі в Б орис ів К онс трук торс ьк ий в ід д іл С п ів р обі т н и к и В В ід д іл А 401 12.4. Реляційні операції Реляційна модель даних заснована на застосуванні реляційної алгебри Едгара Кодда. Реляційна алгебра – це теоретична мова операцій, яка дозволяє створювати на основі одного або декількох відношень інше відношен- ня без зміни самих вихідних відношень. Оскільки обидва, операнд і результат, є відношеннями, то результати однієї операції можуть засто- совуватись в іншій операції. Це дозволяє створювати вкладені вирази реляційної алгебри (за аналогією з тим, як створюються вкладені арифме- тичні вирази), але при будь-якій глибині вкладеності результатом є відношення. Така властивість називається замкнутістю. Вона підкрес- лює те, що застосування будь-якої кількості операцій реляційної алгебри до відношень не призводить до створення інших об’єктів, крім відношень, аналогічно тому, як результатами арифметичних операцій з числами є тільки числа. Реляційна алгебра є мовою послідовного використання відношень, у якому всі кортежі, навіть взяті з різних відношень, обробляються однією командою, без організації циклів. Для команд реляційної алгебри запропоновано декілька варіантів синтаксису. Існує декілька варіантів вибору операцій, які включаються в реля- ційну алгебру. Первісно Кодд запропонував вісім операцій, але згодом до них були додані ще декілька. П’ять основних операцій реляційної алгеб- ри, а саме вибірка (selection), проекція (projection), декартовий добуток (cartesian product), об’єднання (union) і різність множин (set difference), які виконують більшість дій з добування даних. На підставі п’яти основ- них операцій можна також винести додаткові операції, такі як операції з’єднання (join), перетинання (intersection) і ділення (division), які можуть бути виражені в термінах п’яти основних операцій (рис. 12.11, табл.12.1). Реляційна алгебра Кодда має декілька недоліків [91]: По-перше, вісім перерахованих операцій за охопленням своїх функ- цій, з одного боку, надлишкові, оскільки мінімально необхідний набір складають п’ять операцій: об’єднання, віднімання, твір, проекція і вибір- ка. Три інші операції (перетин, з’єднання і поділ) можна визначити через п’ять мінімально необхідних. Так, наприклад, з’єднання – це проекція вибірки. По-друге, вісім перерахованих операцій за охопленням своїх функ- цій, з одного боку, надлишкові, оскільки мінімально необхідний набір складають п’ять операцій: об’єднання, віднімання, добуток, проекція і вибірка. Три інші операції (перетин, з’єднання і ділення) можна визна- чити через п’ять мінімально необхідних. Так, наприклад, з’єднання – це проекція вибірки добутку. 402 Рис. 12.11. Найпростіші операції над множинами Таблиця 12.1 Основні операції над множинами Операція Позначення Сфера застосування 1 2 3 Вибірка ) (R предикат Визначає результуюче відношення, яке містить тільки ті кортежі (рядки) з відношення R, що задовольняють задану умову (предикат) a b 1 2 3 a a b b b 1 2 3 1 2 3 A B a b 1 2 B C 1 2 3 x y z A B a b 1 2 B 1 2 R S R*S R U S R ∩ S R - S R S R S R S A B a 1 A B a b c 1 1 2 C x y T U T U T b U T c U Залишок A B a a b b c 1 2 1 2 1 A B a b 1 2 R S R-S V V-W W а) Вибірка б) Проекція в) Декартів добуток г) Об’єднання ґ) Переріз д) Різниця множин е) Природнє з’єднання є) Напів- з’єднання ж) Ліве зовнішнє з’єднання з) Ділення (затемнена ділянка) 403 Продовження таблиці 12.1 1 2 3 Проекція ) ( ,..., , 2 1 R a a a n Визначає нове відношення, що містить вертикальну підмножину відношення R, яка створюється за допомогою витягання значень зазначених атрибутів і виключення з результату рядків- дублікатів Декартів добуток S R Визначає нове відношення, яке є результатом конкатенації (зчеплення) кожного кортежу з відношення R з кожним кортежем з відношення S Об’єднання S R Визначає нове відношення, що містить усі кортежі, що містились тільки в R, тільки в S, одночасно в R і S, причому всі дублікати кортежів виключені. При цьому відношення R і S повинні бути сумісними по об’єднанню Перетин S R Визначає відношення, що містить кортежі, які присутні як у відношенні R, так і в відношенні S. Відношення R і S повинні бути сумісними по об’єднанню Різність S R Різність двох відношень R і S складається з кортежів, які є у відношенні R, але відсутні у відношенні S. При цьому відношення R і S повинні бути сумісними по об’єднанню Тета-з’єднання S R F Визначає відношення, що містить кортежі з декартового добутку відношень R і S, які задовольняють предикат F З’єднання по еквівалентності Визначає відношення, яке містить кортежі з декартового добутку відношень R і S, що задовольняють предикат F (предикат повинен передбачати тільки порівняння на рівність) Природне з’єднання Природним з’єднанням називається з’єднання по еквівалентності двох відношень R і S, виконане по усіх загальних атрибутах х, з результатів якого виключається по одному екземпляру кожного загального атрибута 404 Продовження таблиці 12.1 1 2 3 (Ліве) зовнішнє з’єднання З’єднання, при якому кортежі відношення R, які не мають співпадінь значень в за- гальних стовпчиках відношення S, також включаються в результуюче відношення Напівз’єднання Визначає відношення, що містить ті кортежі відношення R, які входять у з’єднання відношень R і S Ділення Визначає відношення, що складається з множини кортежів відношення R, які визначені на атрибуті С, який відповідає комбінації всіх кортежів відношення S, де C – множина атрибутів, які є у відношенні R, проте відсутні у відношенні S По-друге, цих восьми операцій недостатньо для побудови реальної СКБД на принципах реляційної алгебри. Необхідні розширення, що вклю- чають операції: перейменування атрибутів, утворення нових атрибутів, що обчислюються, обчислення підсумкових функцій, побудова складних алгебраїчних виразів, присвоєння, порівняння тощо. Операції вибірки і проекції є унарними, оскільки працюють з одним відношенням. Інші операції працюють з парами відношень, і тому їх називають бінарними операціями. В наведених нижче визначеннях R і S це два відношення, що визначені на атрибутах ) ,... , ( 2 1 N a a a A і ) ,... , ( 2 1 M b b b B відповідно. За допомогою цих операцій можна будувати більш складні операції, які отримали назву об’єднань, що в мові структурованих запитів SQL реалізуються за допомогою інструкції SELECT. Результатом операції над відношенням є представлення, яке не зберігається в базі даних, протягом певного часу є доступним для читання. Перераховані вище реляційні операції окремо застосовуються рідко, однак їх комбінації дозволяють одержувати вибірки даних практично будь- якої складності. |