Лекція 8. Проектування баз даних


 

Проектування баз даних проводиться, якщо використовується реляційна БД, при цьому стійкі класи об'єктної моделі відображаються у таблиці реляційної БД.

Основні поняття реляційної моделі:

База даних - довготривале самодокументоване сховище даних. Самодокументування = схема даних, яка зберігається в БД.

Система управління базами даних (СУБД) - ПЗ доступу до даних. Забезпечує:

Ø захист даних;

Ø ефективність;

Ø режим для багатьох користувачів;

Ø розділення даних між декількома застосуваннями;

Ø розподіленність даних;

Ø безпека.

Структура реляційних даних - сукупність таблиць. У будь-якій таблиці фіксована кількість стовпців і довільна - рядків. Сукупність значень комірок одного рядка - запис.

Оператор SQL - речення SQL для маніпуляції даними (вибирання, зміна, додавання, видалення).

Обмеження - умови, які є частиною схеми БД. Якщо який-небудь запис, який додається, порушує якесь обмеження, то він не буде доданий.

Види обмежень:

Можливий ключ (потенційний ключ) - поєднання стовпців, які унікально ідентифікують кожен запис у таблиці, таке що, всі стовпці необхідні для унікальної ідентифікації і ні в одному немає порожніх значень.

Основний (первинний) ключ - можливий ключ, якому потрібно віддавати перевагу при роботі з таблицею. Є у кожної таблиці.

Зовнішній ключ - посилання з іншої таблиці на можливий ключ.

Приклад:

persID Name SurName addr employer
Вася Пупкін Лондон

 

compID compName compAddr
ОАО «Еліта - Центр» Київ

 

Первинні ключі: persID у 1-ій таблиці, compID - в 2-ій. Зовнішній ключ - стовпець employer 1-ої таблиці.

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

Відображення класів

  1. Кожен клас переводиться в окрему таблицю, атрибути стають стовпцями таблиці. Операції на структуру таблиці не впливають.
  2. Унікальний ідентифікатор сутності перетворюється на первинний ключ таблиці. Якщо є декілька альтернативних унікальних ідентифікаторів, вибирається найбільш використовуваний. Якщо сутність не має власного ідентифікатора, то як первинний ключ додається стовпець ID - первинний ключ.

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

Ø «1 до 1-го» - загальна таблиця для 2-х класів. Стовпці - сукупність атрибутів. Первинний ключ - будь-який ID.

Ø «1 до 0..1» - зовнішній ключ додається до таблиці необов'язкового класу.

Ø «0..1 до 0..1» - окрема таблиця для зв'язку (див. нижче).

Ø «* до *» - для асоціації створюється окрема таблиця. Її стовпці - зовнішні ключі для таблиць класів, зв'язаних асоціацією. Основний ключ - комбінація цих стовпців.

Ø «1 до 1..*» або «1 до 0..*» - до таблиці другого класу додається стовпець - зовнішній ключ для таблиці класу у полюса «один».

Ø «0..1 до 1..*» або «0..1 до 0..*» - як «* до *», оскільки стовпець зовнішнього ключа не може містити порожніх значень.

Приклад:

 

 

Відображення класів зв'язаних N-арною асоціацією:

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

Відображення класів-асоціацій:

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

Відображення одиночного спадкоємства:

Ø або по 1 таблиці для суперкласу і кожного підкласу, загальні атрибути - стовпці у таблиці суперкласу + додатковий стовпець - тип, який вказує для кожного запису таблиці суперкласу на таблицю підкласу; записи відносяться до одного об'єкта мають однакові ID (значення первинного ключа) в обох таблицях (набори записів для підкласів отримуються у результаті виконання запитів, які об'єднують таблицю підтипу і супертипу);

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

Ø або одна велика таблиця, стовпці - сукупність всіх атрибутів + додатковий стовпець - тип (є частиною первинного ключа).

Який саме спосіб вибрати диктують міркування ефективності (швидкість в обмін на об'єм пам'яті).

Відображення множинного спадкоємства:

Ø класи, які не перекриваються (не ромб) - таблиця для суперкласів і по 1-ій таблиці для кожного підкласу;

Ø є перекриття - по 1-ій таблиці на кожен суперклас, на кожен підклас + окрема таблиця для узагальнення.

 

Література до лекції 8.

 

  1. Вендров А. М. Проектирование программного обеспечения экономических информационных систем. 2-е изд. – М.: Финансы и статистика, 2005. – Глава 4.
  2. Рамбо Дж., Блаха М. UML 2.0. Объектно-ориентированное моделирование и разработка. 2-е изд.: Пер. с англ. – СПб.: Питер, 2007. – Глава 19.