Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Л17.doc
Скачиваний:
2
Добавлен:
11.09.2019
Размер:
203.26 Кб
Скачать

5. Зв'язок між таблицями

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

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

Для зв'язування таблиць використовуються поля зв'язку (іноді застосовується термін "співпадаючі поля"). Поля зв'язку обов'язково мають бути індексованими. У підлеглій таблиці для зв'язку з головною таблицею береться індекс, який також називається зовнішнім ключем. Склад полів цього індексу повинен повністю або частково співпадати із складом полів індексу головної таблиці.

Для таблиць Paradox як поля зв'язку головної таблиці повинні використовуватися поля ключа, а для підлеглої таблиці - поля індексу. Крім того, в підлеглій таблиці обов'язково має бути визначений ключ.

Зв'язок між таблицями визначає відношення підлеглості, при якому одна таблиця є головною (батьківською, або майстром - Master), а друга - підпорядкованою (дочірньою, або детальною - Detail). Сам зв'язок (відношення) називають зв'язок "головний-підпорядкований", "батьківсько-дочірній" або "мастер-детальный". Існують наступні види зв'язку :

  • відношення "один-до-одного";

  • відношення "один-до-багатьох";

  • відношення "багато-до-одного";

  • відношення "багато-до-багатьох".

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

Робота з пов'язаними таблицями має наступні особливості.

  • При зміні (редагуванні) поля зв'язку може порушитися зв'язок між записами двох таблиць. Тому при редагуванні поля зв'язку запису головної таблиці треба відповідно змінювати і значення поля зв'язку усіх підлеглих таблиць.

  • При видаленні запису головної таблиці треба видаляти і відповідні для неї записи в підлеглій таблиці (каскадне видалення).

  • При додаванні запису в підлеглу таблицю значення її поля зв'язку має бути встановлене рівним значенню поля зв'язку головної таблиці.

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

Обмеження, пов'язані з установкою, зміною значень полів, зв'язків і каскадним видаленням записів, можуть і не входити в структуру таблиці (таблиць), а реалізовуватися програмним способом. В цьому випадку програміст повинен забезпечити:

  • організацію зв'язку між таблицями;

  • установку значення поля зв'язку підлеглої таблиці (це може також виконуватися автоматично);

  • контроль (заборона) редагування полів зв'язку;

  • організацію (заборону) каскадного видалення записів.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]