Здавалка
Главная | Обратная связь

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



Поняття реляційний (англ. relation — співвідношення, зв’язок) пов'язане з розробками відомого американського фахівця в галузі систем баз даних Е. Кодда. У реляційній моделі даних об'єкти і взаємозв'язки між ними представляються за допомогою таблиць. Взаємозв'язки також подаються як об'єкти. Кожна таблиця представляє один об'єкт і складається з рядків і стовпців. Порядок розміщення рядків і стовпців у таблиці довільний; таблиця такого типу називається відношенням. У сучасній практиці для рядка використовується термін «запис», а для стовпця термін «поле».Таблиця повинна мати поле чи комбінацію полів, що єдиним способом ідентифікують кожний рядок у таблиці (ключове поле).

Таблиця має такі властивості:

- кожний елемент таблиці є одним елементом даних;

- усі стовпці в таблиці однорідні; це означає, що елементи стовпця мають однаковий тип;

- стовпцям присвоєні унікальні імена;

- у таблиці немає двох однакових рядків.

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

Оскільки реляційна структура концептуально проста, вона дозволяє реалізовувати невеликі і прості (і тому легкі для створення) бази даних, навіть персональні, сама можливість реалізації яких ніколи навіть і не розглядалася в системах з ієрархічною чи мережною моделлю. Недоліком реляційної моделі даних є надмірність полів, необхідних для створення зв'язків між різними об'єктами бази даних. Практично всі існуючі на сьогоднішній день комерційні бази даних і програмні продукти для їх створення використовують реляційну модель даних.

Розглянемо приклад, в якому розглядається таблиця з даними пацієнтів медичної клініки "МедСервіс".

 

Patients (Пацієнти)

PatientlD (Код пацієнта) Surname (Прізвище) Name (Ім’я) Address (Адреса) City (Місто)
Smith Julie 25 Oak Street Airport West
Wong Alan 1/47 Haines Avenue Box Hill
Arthur Michelle 357 North Road Yarraville

Patients (Пацієнти)

Власне ім'я таблиці - Patients (Пацієнти), деяка кількість стовпців, кожен з яких містить певного роду дані, а також рядки, в яких записані відомості про пацієнтів.

Стовпці

Кожен стовпець у таблиці має унікальне ім'я і містить різноманітні дані. Кожному стовбцю відповідає певний тип даних. Наприклад, у таблиці Patients, можна побачити, що стовпець PatientlD (Код_пацієнта) зберігає цілочисельну інформацію, а інші три стовбці – стрічкову (тобто текст і числа). Стовпці називають полями або атрибутами.

Рядки

Кожен рядок у таблиці являє собою інформацію про окремого пацієнта. Внаслідок використання табличного формату всі рядки мають одні й ті ж атрибути. Рядки називають записами або кортежами.

Значення

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

Поле, кожне значення якого однозначно визначає відповідний запис, називається ключовим.

Розрізняють первинні і вторинні (зовнішні) ключі.

Первинний ключ – це одне або декілька полів (стовпців), комбінація значень яких однозначно визначає кожний запис в таблиці. Первинний ключ не допускає значень Nullі завжди повинен мати унікальний індекс. Первинний ключ використовується для пов'язання таблиці із зовнішніми ключами в інших таблицях

Зовнішній (вторинний) ключ - це одне або декілька полів (стовпців) в таблиці, що містять посилання на поле або поля первинного ключа в іншій таблиці. Зовнішній ключ визначає спосіб об'єднання таблиць.

З двох логічно зв'язаних таблиць одну називають таблицею первинного ключа або головною таблицею, а іншу - таблицею вторинного (зовнішнього) ключа або підпорядкованою таблицею. СКБД дозволяють зіставити споріднені записи з обох таблиць і спільно вивести їх у формі, звіті або запиті.

Існує три типи первинних ключів: ключові поля лічильника (лічильник), простий ключ і складний ключ.

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

Простий ключ. Якщо поле містить унікальні значення, наприклад, код пацієнта, то це поле можна визначити як первинний ключ. Як ключ можна визначити будь-яке поле, що містить дані, якщо це поле не містить значення, що повторюються, або значення Null.

Складний ключ. У випадках, коли неможливо гарантувати унікальність значень кожного поля, існує можливість створити ключ, що складається з декількох полів. Найчастіше така ситуація виникає для таблиці, використовуваної для скріплення двох таблиць багато - до - багатьом.

Якщо виникають труднощі з вибором відповідного типа первинного ключа, то як ключ доцільно вибрати поле лічильника.

 

ПРИКЛАД:

Пацієнтів потрібно розрізняти. Зазвичай імена не дуже підходять для цього - якщо ваше ім'я досить поширене, думається, цілком зрозуміло, чому так складно відрізнити одного Сидорова Івана Петровича від інших Сидорових Іванів Петровичів. Взяти, наприклад, Julie Smith з таблиці Patients. Якщо відкрити телефонну книгу, то може виявитися, що такі ім'я та прізвище зустрічаються у ній дуже часто.

Існує кілька способів відрізнити Julie Smith від інших. Наприклад, найімовірніше, вона - єдина Julie Smith, проживає за даною адресою. Однак рядок "Julie Smith, яка мешкає за адресою 25, Oak Street, Airport West" занадто довга і звучить надто офіційно. До того ж подібний спосіб ідентифікації передбачає використання декількох стовпців таблиці.

Стовпець ідентифікації в таблиці називається первинним ключем (primary key). Ключ може складатися з декількох стовпців. Наприклад, якщо б ми вирішили ідентифікувати Julie Smith по рядку "Julie Smith, of 25 Oak Street, Airport West", то ключ складався б із стовпців Name, Address і City. При цьому не можна було б гарантувати його унікальність.

Зазвичай бази даних складаються з декількох таблиць, для яких ключ служить сполучною ланкою. На рис.3 показано базу даних, в яку додана друга таблиця. У ній розміщуються відомості про візити, зроблені пацієнтами. Кожна стрічка в таблиці Visits (Візити) представляє собою один візит, зроблений одним пацієнтом. Пацієнта можна ідентифікувати за Кодом пацієнта (PatientlD), що зберігається в таблиці.

 

PatientlD (Код пацієнта) Surname (Прізвище) Name (Ім’я) Address (Адреса) City (Місто)
Smith Julie 25 Oak Street Airport West
Wong Alan 1/47 Haines Avenue Box Hill
Arthur Michelle 357 North Road Yarraville

Visits (Візити

VisitlD (N візиту) PatientlD (Код пацієнта) Doctor (Лікар)
Smith
Morgan

 

Рис. 3. Кожен Візит в таблиці Visits відповідає пацієнту з таблиці Patients

 

Наприклад, якщо подивитись на Візити з VisitID, рівним 2, видно, що його зробив пацієнт з PatientlD, рівним 1. Потім, звернувшись до таблиці Patients, можна з'ясувати, що PatientlD = 1 присвоєно пацієнту Julie Smith.

У відповідність з термінологією реляційних баз даних такий взаємозв'язок називається зовнішнім ключем (foreign key).

PatientlD - первинний ключ у таблиці Patients, проте коли він з'являється в іншій таблиці, наприклад. Visits, його називають зовнішнім ключем.

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

2.3 Види логічного зв'язку.

 

Зв'язок встановлюється між двома загальними полями (стовпцями) двох таблиць.

Існують зв'язки з відношенням «один-до-багато», «один-до-одного» і «багато-до-багатьох».

Зв'язки, які можуть існувати між записами двох таблиць:

· один – до – одного, кожному запису з однієї таблиці відповідає один запис в іншій таблиці ( зв’язок “один-до-одного” допускає зв’язок між двома об’єктами, представленими у вигляді таблиць, наприклад, “ПАЦІЄНТ” і “СТАН ОРГАНІЗМУ ПАЦІЄНТА” (кожному пацієнту відповідає конкретний стан організму);

· один – до – багатьох, кожному запису з однієї таблиці відповідає декілька записів іншої таблиці (зв’язок “один-до-багатьох” допускає зв’язок з одним об’єктом кількох інших, наприклад, “ПАЦІЄНТ” і “ЛІКАР” (кожному лікарю відповідає кілька пацієнтів);

· багато – до – одного, безлічі записів з одній таблиці відповідає один запис в іншій таблиці (зв’язок “багато-до-одного” допускає зв’язок кількох об’єктів з одним об’єктом, наприклад, “ЛІКАР” і “ПАЦІЄНТ” і (пацієнти можуть обслуговуватись в одного лікаря);

· багато – до – багатьох, безлічі записів з однієї таблиці відповідає декілька записів в іншій таблиці (зв’язок “багато-до-багатьох” допускає зв’язок кількох об’єктів з кількома іншими, наприклад, “ПАЦІЄНТ” і “ЛІКУВАЛЬНИЙ ЗАКЛАД” (пацієнти можуть обслуговуватися в різних лікувальних закладах) ).

 







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.