Модель «сутність-зв’язок» предметної області


Як ми вже з’ясували, базою даних є структурована сукупність даних, які відображують стан об’єктів певної предметної області та зв’язки між ними. Розробник бази даних повинен описати певну предметну область, змоделювати її для використання у вигляді бази даних. Така модель називається моделлю сутність-зв'язок, побудовою якої зараз і займемось.


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

Сутність - це множина об'єктів, які мають однаковий набір параметрів.



Об’єкти можуть перебувати у зв’язках з іншими об’єктами. Наприклад, учитель викладає у класі, учень вчиться у класі, а читач бере книгу в бібліотеці.


Опис сутностей та зв’язків предметної області називається моделлю сутність-зв'язок, і для графічного позначення моделі використовуються схеми, як показано на слайді.


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

Деякі з атрибутів є ключовими – вони дозволяють унікально ідентифікувати об’єкт сутності. Наприклад, у людей можуть повторюватись прізвище, ім’я, по батькові, проте не може повторюватись номер паспорту. І знаючи цей номер, ми можемо точно дізнатись, котрий саме Іваненко Тарас Михайлович відкрив рахунок у банку. Отже людину можна ідентифікувати за номером паспорта.


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


У різних базах даних це можуть бути різні коди та номери – наприклад, ідентифікаційний код для громадянина; індекс для поштових відділень. Проте наприклад за індексом дізнатись точну адресу неможливо. Як і за назвою вулиці, без уточнення міста. Квиток в кіно обов’язково містить ряд і місце, які разом з назвою фільму та часом початку сеансу ідентифікують перегляд його глядачем у певному кінотеатрі.

З сутностями, ніби, розібрались. Тепер зв’язки між ними. Передусім потрібно знати, що типів зв’язків є всього три: один до одного, один до багатьох і багато до багатьох.


Один до одного – це клас та класний керівник. В одного класу може бути лише один класний керівник, і вчитель може бути класним керівником лише одного класу. Тому – 1 до 1.

Один до багатьох – у класі вчиться багато учнів, але учень вчиться лише в одному класі. У школі багато класів, але конкретний клас  належить лише до однієї школи.

І багато до багатьох – вчитель викладає у багатьох класах, а у класі викладає багато вчителів. Актор знімається у багатьох фільмах, а у фільмі знімається багато акторів.

Більше ніяких типів зв’язків не буває, всіх їх можна віднести до одного з трьох типів.


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

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

Побудуємо модель у програмі Ворд.


Три сутності, і три зв’язки. Потрібно зауважити, що побудова зв’язку учитель навчає учня буде помилкою. Якщо вчитель навчає 11А клас, у якому навчається учень Іваненко, то факт навчання цього учня у цього вчителя випливає зі зв’язків «вчиться» і «навчає», і зберігання цього факту ще раз буде просто надлишковим. Але що гірше – це може внести суперечність у дані, порушуючи їхню цілісність. Наприклад, вчитель навчає лише 11А клас, і навчає учня Петренка, котрий вчиться в 11Б. У межах школи і усталеного розкладу уроків вчителів у класах – це неможливо, тож зв’язок вчитель навчає учня – є зайвим і не повинен з’являтися на схемі моделі сутність-зв'язок.



Завдання. Скласти модель сутність-зв'язок для предметної області Відеопрокат. У фільмах знімаються актори, виконуючи ролі. Про актора відомі прізвище, ім’я, рік народження, є фото та біографія. Про фільми відома інформація: назва, режисер, рік випуску, країна, жанр (фільм може належати до кількох жанрів), тривалість фільму, наявність нагород. Про клієнтів пункту відео прокату відомі прізвище, ім’я, рік народження, адреса проживання та телефон. Кожен з них може брати у прокат фільми, при цьому фіксується дата отримання та повернення фільму. Клієнт може брати кілька фільмів одночасно; всі фільми представлено в кількох екземплярах.

Остання зміна: п'ятниця 11 вересня 2020 11:50