logo
Підручник МЕДИЧНА ІНФОРМАТИКА

Реляційна модель даних.

Поняття реляційний (англ. relation – відношення) зв’язано з розробками відомого американського фахівця в області систем баз даних Е.Ф. Кодда. Ці моделі характеризуються простотою структури даних, зручною для користувача формою подання у вигляді таблиць і можливістю використання апарата алгебри відносин і реляційного обчислення для обробки даних.

На мові математики відношення визначається таким чином. Нехай задано n множин D1,D2, …,Dn. Тоді R є відношення над цими множинами, якщо R є множиною впорядкованих наборів вигляду <d1,d2,…,dn>, де d1 – елемент з D1 , d2 – елемент з D2 , … , dn – елемент з Dn. При цьому набори вигляду <d1,d2,…,dn> називаються кортежами, а множини D1D2, …,Dn – доменами. Кожен кортеж складається з елементів, що вибираються із своїх доменів. Ці елементи називаються атрибутами, а їхні значення – значеннями атрибутів.

Отже, реляційна модель орієнтована на організацію даних у вигляді двовимірних таблиць, кожна з яких має наступні властивості:

У вигляді таблиці можна представити інформацію про студентів, що навчаються у ВНЗ. Наприклад,

Таблиця 7. Інформація про студентів

№ особистої справи

Прізвище, ім’я, по-батькові

Дата народження

Курс

Група

16493

Нікулін Петро Михайлович

01.01.76

2

11

16593

Петренко Ганна Володимирівна

15.03.75

2

12

16693

Анохін Андрій Борисович

14.04.76

2

11

Такі таблиці мають рядки, які відповідають записам (або кортежам), а стовпці – атрибутам відношень (доменам, полям).

Наступні терміни є еквівалентними:

Реляційна БД є сукупністю відношень, що містять усю необхідну інформацію та об’єднані різними зв’язками.

БД вважається нормалізованою, якщо виконуються наступні умови:

Для успішної роботи з багато табличними БД, як правило, треба встановити між ними зв’язки. При цьому користуються термінами «базова таблиця» і «підлегла таблиця». Організація зв’язку між елементами різних таблиць можлива, якщо одна таблиця містить первинний ключ іншої. Це поле тоді має назву зовнішній ключ.

Зв’язок між таблицями утворюється завдяки парі полів, одне з яких знаходиться в базовій таблиці, а друге – в підлеглій. Ці поля можуть мати значення, що повторюються. Коли значення в зв’язаному полі запису базової таблиці і в полі підлеглої співпадають, то ці записи називаються зв’язаними.

Якщо зв’язане поле підлеглої таблиці містить тільки унікальне значення, то створюється зв’язок «один-до-одного». Якщо це поле може містити значення, що повторюються, то створюється зв’язок – «один-до-багатьох».

Деякі СУБД можуть зв’язувати дві таблиці тільки якщо вони мають спільні поля (поля з однаковою назвою і типом).

Розрізняють такі види взаємозв’язків між відношеннями:

Зв’язок «один-до-одного» допускає зв’язок між двома об’єктами, представленими у вигляді таблиць, наприклад, «ПАЦІЄНТ» і «СТАН ОРГАНІЗМУ ПАЦІЄНТА» (кожному пацієнту відповідає конкретний стан організму); «ПОСАДА» і «ОКЛАД».

Він є найпростішим видом зв’язку даних, коли первинний ключ таблиці є водночас зовнішнім ключем, що посилається на первинний ключ іншої таблиці.

Зв’язок «один-до-багатьох» допускає зв’язок з одним об’єктом кількох інших, наприклад, «ПАЦІЄНТ» і «ЛІКАР» (кожному лікарю відповідає кілька пацієнтів); «СТУДЕНТ» і «ВИКЛАДАЧ»; «ГРУПА» і «ВИКЛАДАЧ» (в кожній групі викладає певний викладач, а викладач може проводити заняття в різних групах).

Цей зв’язок реалізується вже описаною парою «зовнішній ключ – первинний ключ». Саме цей зв’язок описує механізм класифікаторів, коли існує довідкова таблиця що містить назви, імена і деякі коди (первинним ключем є код), в інформаційній таблиці визначається зовнішній ключ, що посилається на первинний ключ класифікатора.

Зв’язок «багато-до-багатьох» в явному вигляді в реляційних БД не підтримується, однак є способи непрямої реалізації такого зв’язку. Він допускає зв’язок кількох об’єктів з кількома іншими, наприклад, «ПАЦІЄНТ» і «ЛІКУВАЛЬНИЙ ЗАКЛАД» (пацієнти можуть обслуговуватися в різних лікувальних закладах) або зв’язок ПАЦІЄНТИ ХІМІОПРЕПАРАТИ (один пацієнт може використовувати під час лікування різні хімічні препарати, водночас як кожен хіміопрепарат може вживатися різними пацієнтами); «ВИКЛАДАЧ» і «ПРЕДМЕТ» (одну навчальну дисципліну можуть викладати різні викладачі, а один викладач може викладати різні предмети).

Для організації останнього типу взаємозв’язку можна використовувати два зв’язки «один-до-багатьох» через додаткову проміжну таблицю (рядки якої складаються із зовнішніх ключів, що посилаються на первинні ключі обох таблиць).

Таблиця 8. «ПАЦІЄНТИ»

№ особистої справи пацієнта

Прізвище

Ім’я

По-батькові

Дата народження

Курс

Група

16493

Нікулін

Петро

Михайлович

01.01.76

2

11

16593

Петренко

Ганна

Володимирівна

15.03.75

2

12

16693

Анохін

Андрій

Борисович

14.04.76

2

11

Таблиця 9. «ХІМІОПРЕПАРАТИ»

№ хім. препарату

Назва

Хімічна формула

1

2

3

Таблиця 10. «ХІМІОПРЕПАРАТИ-ПАЦІЄНТИ»

№ особистої справи

№ хім. препарату

16493

1

16493

2

16593

1

16593

3

Атрибут (або набір атрибутів), що може бути використаний для однозначної ідентифікації конкретного кортежу, називається первинним ключем. Якщо з первинного ключа виключити довільний атрибут, решти їх буде недостатньо для однозначної ідентифікації окремих кортежів. Для прискорення доступу за первинним ключем у всіх СУБД є механізм індексування. Індекс – це інвертований деревоподібний список, що вказує на дійсне місцезнаходження запису для кожного первинного ключа.

Можливе індексування відношення з використанням атрибутів, відмінних від первинного ключа. Даний тип індексу називається вторинним і застосовується з метою зменшення часу доступу під час пошуку даних у відношенні, а також для сортування.

Для підтримки цілісності даних у багатьох СУБД є механізм зовнішніх ключів, коли деякому атрибуту (або групі атрибутів) одного відношення призначають посилання на первинний ключ іншого, тим самим закріплюються зв’язки підлеглості між ними. При цьому відношення, на первинний ключ якого посилається зовнішній ключ іншого, називається головним (master-relation), а відношення, від якого виходить посилання, називають другорядним (detail-relation).

Поле, кожне значення якого однозначно визначає відповідний запис, називається простим ключем (ключовим полем). Якщо записи однозначно визначаються значеннями декількох полів, то така таблиця бази даних має складений ключ. У прикладі, показаному в таблиці вище, простим ключовим полем таблиці є атрибут «№ особистої справи».

Щоб зв’язати дві таблиці, необхідно або ключ-атрибут першої таблиці ввести до складу ключа-атрибут другої таблиці (можливий збіг ключів); або ввести в структуру першої таблиці зовнішній ключ – ключ другої таблиці.

На рис. 16 показаний приклад реляційної моделі, побудованої на основі об’єктів: СТУДЕНТ, СЕСІЯ, СТИПЕНДІЯ:

Таблиці СТУДЕНТ і СЕСІЯ мають співпадаючі ключі «Код_Сесії», що дає можливість легко організувати зв’язок між ними. Таблиця СЕСІЯ має первинний ключ «Код_Сесії» і містить зовнішній ключ «Результат», що забезпечує її зв’язок з таблицею СТИПЕНДІЯ.

Код_студента

Табл .СЕСІЯ

Код_Сесії

Код_Сесії

Прізвище, ім’я, по батькові

Оцінка 1

Стать

Оцінка 2

Дата народження.

Оцінка 3

Факультет

Оцінка 4

Табл. СТИПЕНДІЯ

Курс

Результат (cередній бал)

Результат

Потік

Відсоток

Група

Рис. 9. Реляційна модель, побудована на основі об’єктів: СТУДЕНТ, СЕСІЯ, СТИПЕНДІЯ