Мішенін_Теорія економічних ІС_Практикум - Стор 11

Xi є частиною Xj і Fj[Xi\ є підмножиною Fi. Післядня умова має той самий сенс, що й синтаксичне включення відносин у реляційній моделі даних. Тут передбачається, що ключ основного файлу міститься у залежному файлі. Граф аналогічний графу сполук для реляційної БД.

Мережева база даних DBA називається ациклічною, якщо між будь-якими двома вершинами на графі В існує не більше одного шляху. Двохрівневі мережі завжди ациклічні.

Для безлічі файлів F ациклічної бази даних DBA цілком застосовна операція

m(DBA) = Л & F& . & Fi & . & Fn,

звана максимальним перетином. Її аналогом може служити послідовність з'єднань у реляційній базі даних.

Розглянемо алгоритм формування структури дворівневої мережної бази даних на основі відомої безлічі реквізитів і функціональних залежностей.

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

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

Число співробітників у відділі

Дата початку теми

Дата закінчення теми

Обсяг фінансування теми замовником

Код роботи у темі

ПІБ виконавця роботи

Алгоритм отримання дворівневої структури мережі

Вихідні дані - список реквізитів і функціональних залежностей у базі даних.

У нашому прикладі будуть створені такі файли (ключі позначені знаком #):

F1(HHH#, Директор, Адреса), ^^2(Отдел #, НДІ, Ксотр),

/*3(Тема #, Датанач, Датакон, Пріор), F4(OHO #, Відділ),

^5(Тема #, Робота #, ПІБ #, Прод), 7^6(Тема #, Замовлення #, Обфін).

Крок 2. У всіх пар файлів, отриманих на кроці 1, перевіряється умова для ключів (Ki є частиною Kj). Якщо воно дотримується, то з відповідних файлів створюється віялове відношення Wij

Крок 3. Якщо на кроці 2 будуть отримані два віялові відношення Wij і Wjk, то всі реквізити файлу Fi передаються у файл Fj і Fi разом з Wij знищуються.

У прикладі таких віялових відносин немає.

Крок 4. Реквізити, що не увійшли до складу віялових відношень на кроці 2, додаються в ті файли Fn (точніше, в F віялові відносини), де вони будуть неключовими. За наявності кількох відповідних файлів перевага надається основним файлам. Якщо необхідні Fn відсутні, створюється новий файл з реквізитів первинного ключа, і повторюються кроки 2, 3, 4.

У нашому прикладі F4 розширюється реквізитами НДІ, Директор, Адреса, Ксотр.

На рис. 2.4 показана структура відповідної дворівневої мережної бази даних.

Мал. 2.4. Інформаційна база НДІ (Тема)

Структури основних відносин показані у верхній частині рис. 2.4, а структури залежних відносин – у нижній частині.

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

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

2. Застосування мови програмування, що включає. Включає мова - це звичайна мова програмування (наприклад, Паскаль), в якій звернення до бази даних реалізуються здопомогою підпрограм. Серед параметрів, що передаються підпрограмі, вказуються назва операції, імена оброблюваних відносин та ін. Включає мова використовується практично у всіх відомих мережевих СУБД. Це пояснюється принципом доступу до даних у мережній базі даних, який може бути названий навігаційним.

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

Розглянемо операції вибірки для дворівневої бази даних. Для того щоб не користуватися синтаксисом вклю чаючої мови, умовимося записувати лише назву операції та умову вибірки. Приклади вибірки відносяться до мережевої структури, зображеної на рис. 2.5.

Зарплата (Прізвище#, Дата#, Сума)

Мал. 2.5. Мережа база даних «Співробітник-Зарплата»

У цій базі даних здебільшого Співробітник і за висімом - Зарплата встановлено два віялові відносини: Осн - основна зарплата і Дон - додаткова зарплата.

1. Операція OBTNM - отримати запис в основному відношенні.

OBTNM (Співробітник = "Іванов").

Після виконання зазначеної вибірки щодо Співробітник як поточний буде встановлений запис зі значенням пер-

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

2. Операція OBTNF - отримати запис узалежному відношенні.

OBTNF (Cурядник = «Іванов», Зарпл * Осн).

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

OBTNM (Співробітник = "Іванов"); ОВТКР (Співробітник = "Іванов", Зарпл * Осн).

за умови, що звернення до відношення Зарпл раніше не проводилися, будуть отримані відомості про першу (з моменту надходження на роботу) основну зарплату Іванова.

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

OBTNM (Співробітник = «Іванов»)

Ml: ОВТИР(Співробітник = «Іванов», Зарпл*Осн) print Зарпл

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

Майже в мережевих СУБД кількість операцій вибірки досить велика. Ми розглянули мінімально необхідну кількість варіантів вибірки. Інші варіанти вибірки створюютьбільш зручні для прикладного програміста можливості реалізації запитів.

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

Поняття «відношення» та «віяльове ставлення» в ієрархічній моделі даних не змінюються.

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

1. Існує єдине відношення, зване кореневим, яке не є залежним у жодному віяловому відношенні.

2. Всі інші відносини (за винятком кореневого) є залежними відносинами тільки в одному віяловому відношенні.

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

На рис. 2.6 зображено структуру ієрархічної бази даних, що представляє студентів і викладачів вузу, і задовольняє всі обмеження, зазначені у визначенні.

У графічних ілюстраціях структури ієрархічної бази даних наводяться назви відповідних відносин.

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

Мал. 2.6. Ієрархічна база даних «ВНЗ-Кафедра»