3. Встановлення зв’язків між таблицями
Всі поля таблиці та створені теги структурного індексного файлу відображуються у вікні конструктора проекту та у вікні конструктора БД. Зверніть увагу, що різні типи індексів воводаться порізному.
БД може об’єднувати багато таблиць, зв’язок між якими зазвичай встановлюється за допомогою однакових полів (зовнішні ключі)..
Для того, щоб встановити зв’язки між таблицями повині виконуватися наступні умови:
поля, по яким буде встановлюватися зв’язок повинні бути одного типу та однакової довжини;
повинні існувати індекси на поля, по яким буде встановлено зв’язок між таблицями Всі типи індексів можуть приймати участь у створення зв’язків між таблицями.
Типи зв’язків між таблицями
Зв’язок один-до-одного (1:1) значить, що кожному запису однієї таблиці відповідає тільки один запису у другій таблиці.
Зв’язок один-до-багатьох (1:n) значить, що запису однієї таблиці відповідає декілька записів іншої таблиці, а запису другої таблиці відповідає тільки один запис першої таблиці.
Зв’язок багато-до-одного (n:1) навпаки значить, що декільком записам однієї таблиці відповідає один запис іншої таблиці.
Зв’язок багато-до-багатьох (n:m) виникає між таблицями якщо одному запису з першої таблиці відповідає декілька записів з другої таблиці і одному запису з другої таблиці відповідає декілька записів з першої таблиці.
Встановлення постійних зв’язків між таблицями
У VFoxPro можна встановлювати постійні та тимчасові зв’язки між таблицями.
Розглянемо встановлення постійного зв’язку візуальним способом між таблицями Student (Студент) та Spec (Довідник спеціальностей). Для встановлення зв’язку потрібнно створити первиний індекс по полю Шифр_спеціальності у таблиці Довідник_спеціальностей та регулярний індекс по полю Шифр_спеціальності у таблиці Студент.
Далі потрібно відкрити вікно конструктора БД і за допомогою миші вибрати первинний індекс Шифр_спеціальності у таблиці Довідник_спеціальностей та утримуючи його клавішою мишки протягти це поле до індекса Шифр_спеціальності у таблиці Студент. У результаті у вікні конструктора БД з’явиться зв’язок типу один-до-багатьох. Аналогічно можна встановити зв’язки між іншими таблицями (рис.9).
Рис. 9
У VFoxPro можна встановлювати зв’язки між полями однієї і тієї ж таблиці.
Розірвати постійний зв’язок можна так: виділити мишкою лінію зв’язку та натиснути клавішу Delete.
Встановити та видалити постійні зв’язки між таблицями можна також за допомогою команд :
ALTER TABLE <ім’я дочірньої таблиці> ADD FOREIGN KEY <ключ> TAG <ключ>
REFERENCES < ім’я батьківської таблиці>
та
ALTER TABLE <<ім’я таблиці> DROP FOREIGN KEY TAG <ключ> SAVE
Ці команди будуть розглядатися у наступних розділах предмету.
Визначення умов цілісності даних
Встановлені зв’язки можна використати для визначення умов цілісності даних.
Для цього потрібно відкрити БД у віккні конструктора БД, у системному меню FoxPro вибрати опцію DataBase та виконати команду Clean Up Database. Після цього вибрати мишкою любий постійний зв’язок та зробити подвійний клік мишкою.
Відкривається діалогове вікно Edit Relationship (Редагування зв’язку) (рис. 10), в якому зліва приведене найменування батьківської таблиці і розташований випадаючий список індексів таблиці, а праворуч розміщена аналогічна інформація про дочірню таблицю. Використовуючи списки індексів можна змінювати індекси, по яких зв'язуються таблиці. У цьому діалоговому вікні вказаний також тип встановленого зв’язку.
Рис.10
При виборі кнопки Referential Integrityt можна встановити правила зсилочної цілісності даних (рис.11).
Рис. 11
Ці правила також спррацьовують при видаленні, доповненні та редагуванні даних у зв’яз аних таблицях.
Так, наприклад прии редагуванні ключового значення у батьківській таблиці можна примінювати наступні правила:
Cascade (послідовно виконати) – автоматично поновлюються всі “дочірні” записи відповідно до нового значення ключа у батьківській таблиці.
Restrict (обмежити) – заборонити змінювати значення батьківського ключа, якщо у дочірній таблиці є зв’язані записи
Ignore (ігнорувати) – не наккладає ніякких правил на зміну даних.
Аналогічно працюють правила редегування та вставки даних.
Всі ці та інші правила зберігаються у спеціальних прцедурах, які можна переглянути у опції Stored Procedures у вікні дизайнера проекту.
(134,175)
