logo search
Конспект лекцій з дисципліни

9.1. Структури даних

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

Наведемо декілька найбільш поширених визначень бази даних (БД).

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

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

Сховище даних – це аґреґований інформаційний ресурс, що містить консолідовану інформацію з усієї проблемної області та використовується для підтримки прийняття рішень.

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

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

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

Як бази даних, так і сховища даних, можуть будуватись на основі певної системи керування базами даних (СКБД) (реляційна, постреляційна тощо). СКБД забезпечує загальний репозиторій для зберігання і опрацювання структурованих даних. СКБД підтримує набір взаємозв’язаних послуг і дозволяє розробникам зосередитись на специфічних проблемах їх застосувань, а не на завданнях, які виникають при потребі в узгодженому й ефективному керуванні великими обсягами даних. Проте СКБД вимагають, щоб всі дані знаходилися під єдиним адміністративним керуванням і відповідали єдиній схемі. У відповідь на задоволення цих обмежень СКБД можуть забезпечити розвинені засоби маніпулювання даними та опрацювання запитів зі зрозумілою і строгою семантикою, а також строгі транзакційні ґарантії оновлень, паралельного доступу і довготривалого зберігання (так звані властивості ACID).

Враховуючи специфіку, cховище даних має такі особливості проектування та побудови:

Сховища даних краще пристосовані до зберігання та аналітичного опрацювання великих обсягів даних і, в основному, є інтеґрацією реляційної та багатовимірної моделей. На сьогодні є такі архітектури побудови сховищ даних: корпоративна інформаційна фабрика Білла Інмона, шина Ральфа Кімбола, зведення даних корпорації TDAN. Вони мають розвинені засоби інтеґрації даних з різних джерел та дозволяють працювати як з деталізованою, так і аґреґованою інформацією.

Термін "база даних" почав застосовуватися з 1963р. і записувався англійською як data base. З розвитком обчислювальної техніки ці два слова були з’єднані (database). Один із розробників теорії баз даних, Інгліс, у 1972р. дав таке визначення: база даних - сукупність збережених операційних даних, що використовуються прикладними системами деякого підприємства.

Інший класик теорії баз даних К. Дейт у своїх працях навів більш точне визначення бази даних як сукупності даних, що зберігаються у вторинній пам’яті (на дисках). База даних (БД) - це пойменована сукупність даних, організованих за певними правилами, що передбачають загальні принципи опису, зберігання і маніпулювання даними, не залежно від прикладних програм.

Як і у випадку будь-якого файла даних, БД складається із записів; записи діляться на поля. Запис є найменшою одиницею обміну даними між оперативною й зовнішньою пам’яттю, поле - найменшою одиницею обробки даних.

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

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

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

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

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

Ієрархічна й мережна моделі даних стали застосовуватися в СУБД на початку 60-х років.

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

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

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

Системи управління базами даних у наш час знаходять застосування практично в усіх галузях економіки, науки та виробництва. Кількість таких програм дуже велика. Досить поширеними у нашій країні були такі: СКБД для ПК dBASEIII-plus, FoxBASE, Clipper-5, Clipper-87, FoxPro, а також MICROSOFT ACCESS.

Нижче розглянемо СКБД FoxPro для операційної системи MS DOS ієрархічної і мережної моделей.

ЗАПУСК FOXPRO здійснюється за допомогою файла foxprol.exe (може бути foxpro.exe).

Для завершення роботи слід ввести команду QUIT.

Всі дані та інша інформація СКБД зберігаються в файлах на дисках. У СКБД FoxPro БД це сукупність файлів спеціальної організації. Для файла БД слід розрізняти структуру та дані. Розглянемо ці поняття на прикладі телефонного довідника.

Ім’я Рік народження Телефон

Дмитренко І.І. 1985 245-09-29

Структура

Дані

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

Основні терміни та їх визначення

У наведеному прикладі ім`я, рік народження та телефон - це поля, які разом складають запис.

Поле (1985)

частина інформації.

Ім’я поля (Рік народження)

частина структури.

Запис

сукупність всіх полів.

Файл БД

сукупність всіх записів.

Більшу наглядність файл БД має у табличній формі, де рядок таблиці - це його запис, а заголовок визначає його структуру.

База даних

ІМ`Я

РІК НАРОДЖЕННЯ

ТЕЛЕФОН

Кузьменко

1982

175-08-91

Дмитрено

1983

245-09-29

Бурденко

1988

413-45-55

Перед тим як створювати файл БД треба знати відповіді на питання, які визначають його структуру:

Які знадобляться поля?

Які імена присвоїти цим полям?

Якого типу інформацію вони будуть містити?

Розглянемо створення файлу БД на прикладі реєстрації витрат деякої фірми. Нехай ми маємо таку структуру файлу БД:

дата виплати (коли сплачено);

ім’я постачальника (кому сплачено);

назва товару (за що);

сума, що сплачена (скільки);

характеристика товару (пояснення).

Для створення структури бази треба ввести команду

CREATE <повне ім’я файлу>

Наприклад:

Create D:\WORK\RS\EXPENSE

У відповідь СКБД виведе на екран форму для введення даних, у якій для кожного поля, що задається слід ввести такі дані: ім’я (Name), тип (Type), довжину (Width), та для числового поля - число дробових позицій (Dec). Дані можуть бути таких типів (вибирається натисненням першої літери у момент, коли курсор знаходиться у колонці TYPE, або натисненням комбінації клавіш Space-Enter у меню):

C

Сharacter

символьний тип;

N

Numeric

числовий тип;

F

Float

числовий тип з плаваючою крапкою;

D

Date

дата (ММ/ДД/РР);

L

Logical

логічний тип;

M

Memo

поле приміток;

P

Picture

графічний.

Щоб створити структуру бази для нашого прикладу можна ввести такі дані:

1

DATA

D

8

довжина визначається автоматично

2

NAME

C

40

3

TOVAR

C

40

4

SUMA

N

7

2

5

HAR

M

10

довжина визначається автоматично

Після закінчення формування структури файла вона повинна бути збережена на диску. Це здійснюється одночасним натисненням клавіш Ctrl-End або Ctrl-W. Натиснення клавіші Esc викличе відмову від збереження структури. Такий самий результат може бути досягнений натисненням Enter після переміщення курсора в позицію <OK> або <Cancel> відповідно.

У відповідь FoxPro виведе запит на введення даних:

Input dat a records now?<Yes> <No>

Відповімо No.

Якщо далі виявиться, що структура бази даних нас не влаштовує, її можна змінити за допомогою команди модифікації структури :

MODIFY STRUCTURE

При цьому ми опиняємось у вікні, яке ідентичне вікну команди CREATE, де побачимо структуру файлу, що модифікується. Тут можна знищувати, перейменовувати та вводити нові поля бази даних, а також змінювати їх параметри. Якщо у файлі бази даних вже є дані, вони будуть (якщо це можливо) збережені. При модифікації бази даних старі структури зберігаються на диску з розширеннями імен .BAK для DBF-файлів та .TBK для FPT-файлів. Файл, що модифікується, повинен бути відкритим (дивись далі). Для того, щоб помістити нове поле у вже існуючу структуру, треба встановити курсор на початок того поля, перед яким буде розташоване нове поле і натиснути Ctrl-N. На екрані з’явиться новий рядок, в якому потрібно ввести інформацію про нове поле.

Для знищення якогось поля треба встановити на нього курсор і натиснути Ctrl-U. Відмова від внесених змін - Ctrl-Q, вихід із режиму модифікації зі збереженням внесених змін - Ctrl-W або Ctrl-END.

Для модифікації структури можна застосовувати команди Insert та DELETE. Переглянути структуру бази даних можна за допомогою команди

LIST STRUCTURE

або DISPLAY STRUCTURE (кл. F5)

Структуру файлу можна вивести на друкуючий пристрій:

LIST STRUCTURE TO PRINT

або

DISPLAY STRUCTURE TO PRINT

Для зручної орієнтації у середовищі FoxPro можна задати відображення на екрані статус-рядка командою

SET STATUS ON

Цей рядок буде містити корисну для користувача, іноді і для програміста інформацію: ім’я програми, що виконується (якщо є), поточний диск, ім’я відкритої бази, номер поточного запису, загальне число записів у базі даних (ці параметри відображаються у вигляді дробу як чисельник і знаменник), ознака позначки поточного запису до знищення (слово Del), стан клавіш Num Luck та Caps Lock (Num та Caps).

З екрана статус-рядок прибирається командою SET STATUS OFF (ця установка діє за умовчанням). Статус-рядок корисний при навчанні та відлагодженні, але у готових програмах він, звичайно, не потрібен.