Ієрархічні, мережеві та реляційні моделі даних
Бази даних.
Лекція №12.
Бази даних(БД) – це дані, організовані як набору записів певної структури і які у файлах, де, крім самих даних, міститься опис їх структури.
Система управління базами даних(СУБД) – система, що забезпечує введення даних у БД, їх зберігання та відновлення у разі збоїв, маніпулювання даними, пошук та виведення даних на запит користувача.
За моделями представлення, бази даних поділяються на:
Ієрархічні бази даних- це найперша модель представлення даних, в якій всі записи бази даних представлені у вигляді дерева, із співвідношенням предок-нащадок (рис. 30).
Фактично дані відносини реалізуються як покажчиків на предків і нащадків, які у самій записи. Така модель представлення даних пов'язана з тим, що на ранніх етапах, бази даних часто використовувалися для планування виробничого процесу: кожен виріб складається з вузлів, кожен вузол з деталей і т.д.
Щоб знати скільки деталей кожного виду треба замовити, будувалося дерево. Оскільки список складових частин виробу був деревом, то для його зберігання в базі даних найкраще підходила ієрархічна модель організації даних.

Мал. 30. Ієрархічна база даних.
Проте ієрархічна модель перестав бути оптимальної. Припустимо, що той самий тип болтів використовується в автомобілі 300 разів у різних вузлах. При використанні ієрархічної моделі даний тип болтів фігуруватиме в базі даних 1 раз, а 300 разів (у кожному вузлі - окремо). В даному випадку буде простежуватися дублювання інформації. Щоб усунути цейНедолік була введена мережева модель представлення даних.
Мережева база даних– це база даних, у якій один запис може брати участь у кількох відносинах предок-нащадок (рис. 31). Тобто. Власне, база даних є не дерево, а граф.

Мал. 31. Мережева база даних.
Фізично дана модель також реалізується за рахунок покажчиків, що зберігаються всередині самого запису на інші записи, тільки, на відміну від ієрархічної моделі, число цих покажчиків може бути довільним.
Ієрархічна і мережева моделі досить прості, проте вони мають загальний недолік: для того, щоб отримати відповідь навіть на просте запитання, програміст повинен був написати програму, яка переглядала базу даних, рухаючись за вказівниками від одного запису до іншого. Написання програми займало деякий час, і часто до того моменту, коли така програма була написана, необхідність отримання даних вже не була потрібна. Тому в середині 80-х років 20 століття відбувся практично повсюдний перехід до реляційних баз даних.
Уреляційній базі данихвся інформація подається у вигляді таблиць, і будь-які операції над даними - це операції над таблицями. Таблиці будують із рядків та стовпців.Рядки- це записи, астовпціє структурою запису (кожен стовпець має певний тип даних і довжину даних). Рядки в таблиці не впорядковані – не існує першого чи десятого рядка. Однак, оскільки на рядки необхідно якось посилатися, то вводиться поняття «первинний ключ».
Первинний ключ– це стовпець, значення якого у всіх рядках різні. Використовуючи первинний ключ, можна однозначно посилатися будь-який рядок таблиці. Первинний ключ може складатися і з кількох стовпців (складовийпервинний ключ).
Зовнішній ключ- це стовпець таблиці, значення якого збігаються зі значеннями первинного ключа деякої іншої таблиці.
Приміром, на рис. 32 стовпець "Відповідальний" таблиці "Заходи" є зовнішнім ключем для таблиці "Співробітники" (первинний ключ - стовпець "Прізвище").

Мал. 32. Відносини предок-нащадків у реляційних базах даних.
Важливим моментом є використання значення NULL в таблицях реляційної базі даних. NULL - це відсутнє значення, відсутність інформації щодо даної позиції. Не допускається використання 0 або пропуску замість NULL: зрозуміло, що «нульовий» обсяг продажів – це не те саме, що «невідомий» обсяг продажів. З цієї причини, жодне значення NULL не дорівнює іншому значенням NULL. У реляційній базі даних, при запитах, угрупованні, порівняннях, тощо, значення NULL обробляються особливим чином.
Об'єктно-реляційні бази данихз'явилися останнім часом у значної кількості виробників СУБД (Oracle, Informix, PostgreSQL) і поєднують у собі реляційну модель даних з концепціями об'єктно-орієнтованого програмування (поліморфізм, інкапсуляція, успадкування).