В створену базу даних додамо 4 таблиці:
1. Таблиця epohi має поля: kod (код епохи), name (назва епохи живопису), period (історичний період), cherti (коротка характеристика епохи), predstaviteli (найвідоміші представники епохи);
2. Таблиця hudogniki має поля: num (номер), fio (прізвище, ім’я та по-батькові художника), date_birth (дата народження художника), date_death (дата смерті художника), epoha (спрямування в історії живопису), count_kartin (кількість картин, що написав художник), best_kartin (найкращі картини художника);
3. Таблиця kartini має поля: num (номер), name (назва картини), fio (прізвище, ім’я та по-батькові художника), date (дата написання картини), epoha (епоха, в яку була створена картина), razmer (розмір картини), material (матеріал, з якого було створено картину), museum (музей, в якому картина зберігаться);
4. Таблиця museums має поля: kod (код музею), name (зава музею), place (місце розташування), opisanie (короткий опис музею).
Для того, щоб створити кожну з таблиць, натискаємо на хрестик поруч з базою даних та зі списку обираємо пункт Tables. Натискаємо Create… →New table та обираємо ім’я таблиці і місце зберігання – каталог Data. Після цього відкривається вікно табличного редактора першої таблиці epohi (рис. 2.4), у якому вводимо імена та псевдоніми для полів таблиці, типи даних цих полів. На вкладці Індекси створюємо необхідні для роботи індекси (рис. 2.5).
Рис. 2.4 – Створення полів таблиці epohi
Рис. 2.5 – Створення індексів таблиці epohi
Після створення усіх полів та індексів відкриваємо таблицю для введення даних, натиснувши кнопку Browse. Для створення нового запису необхідно натиснути комбінацію клавіш Ctrl+Y. Заповнена таблиця epohi показана на рис. 2.6.
Рис. 2.6 – Заповнена даними таблиця epohi
Аналогічно створюємо заповнюємо і інші 3 таблиці:
1) створення полів таблиць hudogniki, kartini, museums відповідно показано на рис. 2.7, 2.10 та 2.13;
2) створення індексів таблиць hudogniki, kartini, museums відповідно показано на рис. 2.8, 2.11 та 2.14;
3) заповнення даними таблиць hudogniki, kartini, museums відповідно показано на рис. 2.9, 2.12 та 2.15.
Рис. 2.7 – Створення полів таблиці hudogniki
Рис. 2.8 – Створення індексів таблиці hudogniki
Рис. 2.9 – Заповнена даними таблиця hudogniki
Рис. 2.10 – Створення полів таблиці kartini
Рис. 2.11 – Створення індексів таблиці kartini
Рис. 2.12 – Заповнена даними таблиця kartini
Рис. 2.13 – Створення полів таблиці museums
Рис. 2.14 – Створення індексів таблиці museums
Рис. 2.15 – Заповнена даними таблиця museums
У вікні Database designer відкриваємо створені раніше таблиці та встановлюємо необхідні для роботи зв’язки, використовуючи створені на попередньому етапі індекси. Схема зв’язків між таблицями показана на рис. 2.16.
Рис. 2.16 – Схема зв’язків між таблицями бази Dovidnik_Givopis
Установлені відносини між таблицями можуть бути використані для завдання умов цілісності даних. Цілісність даних є одним з найважливіших вимог до баз даних.
Перевірка цілісності даних може здійснюватися програмними засобами. Однак більш правильним є визначення умови цілісності даних на рівні бази даних, тому що в цьому випадку жодний додаток не може порушити цілісність даних.
Встановити умови цілісності даних можна за допомогою вікна “REFERENTIAL INTEGRITY BUILDER”. Їх встановлення показано нижче на рис. 2.17.
Рис. 2.17 – Визначення умов цілісності даних бази
Як бачимо в полі UPDATE усіх зв’язків між таблицями стоїть опція CASCADE, яка означає наступне: при зміні значень полів первинного ключа чи ключа-кандидата в батьківській таблиці автоматично здійснюється каскадна зміна усіх відповідних значень у дочірній таблиці. Наприклад, якщо це правило застосувати до відношення між таблицями hudogniki і kartini, то при зміні коду диска в таблиці hudogniki автоматично будуть змінені коди диска й у таблиці kartini.
Для поля DELETE також встановлена опція CASCADE, але тут вона означає дещо інше: при видаленні запису в батьківській таблиці автоматично здійснюється каскадне видалення всіх записів з дочірньої таблиці, зв'язаних із записом, що видаляється.
Для поля INSERT встановлена опція IGNORE, що означає наступне: при введенні даних у дочірню таблицю не аналізується значення індексного вираження. Цілісність даних при цьому не підтримується.
При визначенні умов цілісності даних VISUAL FOX PRO створює службові тригери, текст яких можна переглянути у вкладці STORED PROCEDURES.
В Visual FoxPro для перегляду, введення і редагування даних, що зберігаються в таблицях, використовуються форми, що є найбільш наочним засобом представлення інформації. Наприклад, додаток, призначений для роботи з бухгалтерськими документами, які мають стандартний вигляд. Природно, що форми, призначені для введення документів, повинні виглядати на екрані монітора точно так, як і стандартні бланки цих документів. Іншою важливою перевагою форм є те, що вони дозволяють працювати не з однією, а з декількома зв'язаними таблицями, що, у свою чергу, також збільшує наочність.
Користувачу додатку немає необхідності знати, що таке Visual FoxPro, які команди використовуються для додавання або видалення записів в таблицях. Він може навіть взагалі не знати, з використанням яких програмних засобів створювався додаток. Для нього головним є переміщення по таблиці, додавання нових записів, редагування і видалення старих. Всі ці можливості є у формах.
За допомогою майстра форм створимо 4 форми:
1) Форма artists – є звичайною однотабличною формою, що відображає дані з таблиці hudogniki. Загальний вид цієї форми представлений нижче на рис. 2.18.
Рис. 2.18 – Загальний вигляд форми artists
В цій формі виводяться такі дані як прізвище, ім’я та по-батькові художника, дата народження і смерті, епоха, кількість картин, створених художником та найбільш відомі його картини.
2) Форма pictures – також однотаблична форма, що відображає дані з таблиці kartini. Загальний вид цієї форми представлений нижче на рис. 2.19.
Рис. 2.19 – Загальний вигляд форми kartini
В цій формі виводяться такі дані як назва картини, художник, яку цю карти ну написав, дата створення, епоха, розмір та матеріал картини, а також музей, в якому ця картина зберігається.
3) Форма epoch – це багатотаблична форма, що відображає дані з 2 таблиць: epohi та hudogniki. Загальний вид цієї форми представлений нижче на рис. 2.20.
Рис. 2.20 – Загальний вигляд форми epoch
В цій формі виводяться такі дані як назва епохи живопису, історичний період, коротка характеристика епохи, найвідоміші представники епохи. Нижче в таблиці описано художників, які належать до вказаної епохи. При цьому описані такі дані як прізвище, ім’я та по-батькові художника, дата народження і смерті, кількість картин, які він написав та найкращі картини художника.
4) Форма museums – це також багатотаблична форма, що відображає дані з 2 таблиць: museums та kartini. Загальний вид цієї форми представлений нижче на рис. 2.21.
Рис. 2.21 – Загальний вигляд форми museums
В цій формі виводяться такі дані як назва музею, місце розташування музею, короткий опис музею. Нижче в таблиці описано картини, які зберігаються у вказаному музею. При цьому описані такі дані як назва картини, ім’я та по-батькові художника, дата створення картини, епоха, в яку картина була написана.
Запит – це засіб швидкого пошуку інформації в базах даних за визначеними критеріями. При створенні запиту необхідно вказати поля результуючої таблиці, критерії відбору даних. Також дані можна впорядкувати та згрупувати по одному або декількох полях.
Створимо 2 запити до бази даних:
1) Запит, що виводить на екран усіх художників-передвижників, які написали більше ніж 10 картин. Створення 1 запиту в режимі конструктора показано на рис. 2.22, а результат виконання запиту – на рис. 2.23.