Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка 2 Проектирования и создание БД.doc
Скачиваний:
2
Добавлен:
20.08.2019
Размер:
1.03 Mб
Скачать

2.3.5.Визначення зв'язків між таблицями

У Visual FoxPro ви можете встановлювати постійні зв'язки між двома таблицями, що будуть підтримуватися при створенні форм, звітів і запитів. При визначенні відносин одна з таблиць є батьківської, а інша — дочірньої. Для батьківської таблиці повинний бути визначений первинний ключ чи ключ-кандидат, а для дочірньої — індекс для зв'язку з батьківською таблицею. Наприклад, при завданні зв'язку між двома таблицями Student (Студенти) і Group (Групи), для таблиці Group визначений первинний ключ iGroup, а таблиця Student містить індекс, що не є унікальним iGroup, індексне вираження якого складається з коду групи, по якому здійснюється зв'язок між таблицями.

Для визначення зв'язку між таблицями відкрийте вікно конструктора бази даних і виконаєте наступні дії:

  1. Виберіть батьківську таблицю (Group).

  2. Установите курсор миші на первинний ключ таблиці (iGroup).

  3. Натисніть кнопку миші і, не відпускаючи6 її, перемістите курсор миші на індекс дочірньої таблиці, по якому встановлюється зв'язок (iGroup).

  4. Відпустите кнопку миші. У вікні конструктора бази даних між таблицями з'явилася лінія (Рис. 2 .10), що відображає створений зв'язок між таблицями.

  5. Рис. 2.10. Відображення зв’язків між таблицями у конструкторі баз даних.

    Установіть курсор миші на лінію, що з'єднує таблиці, і натисніть двічі курсор миші. На екрані відкриється вікно діалогу “Edit Relationship” (Рис. 2 .11), у якому ліворуч приведені найменування і список індексів, що розкривається, батьківської таблиці, а праворуч аналогічна інформація про дочірню таблицю. У цьому ж вікні діалогу приведений тип відносин між таблицями. Для збереження відносини натисніть кнопку ОК, а для відмовлення — кнопку Cancel.

Рис. 2.11. Вікно діалогу “Edit Relationship”

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

2.3.6.Визначення умов цілісності даних

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

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

Для визначення умови цілісності даних у вікні конструктора бази даних двічі натисніть на лінії зв’язку між таблицями і в вікні діалогу “Edit Relationship” (Рис. 2 .11) натисніть на кнопку Referential Integrity. У результаті відкриється вікно конструктора умов цілісності даних “Referential Integrity Builder” (Рис. 2 .12), що містить перелік усіх установлених зв'язків між таблицями. При цьому автоматично створюються відповідні вбудовані процедури для бази даних. Для наступного редагування умов цілісності даних у вікні конструктора бази даних виберіть команду контекстного меню Edit Referentіal Integrity чи відповідну їй кнопку панелі інструментів “Database Designer”. Таблиця опису умов містить найменування батьківської і дочірньої таблиць, найменування індексів які використовуються для зв'язку, а також типи дій що виконуються при модифікації даних, додаванні і видаленні записів.

Рис. 2.12. Вікно діалогу “Referential Integrity Builder” для визначення умови цілісності даних.

У верхній частині вікна діалогу відображається коротка довідка про можливий вибір дій і три перемикачі, призначених для установки типу виконуваної дії. Крім того, ви можете вибрати тип дії зі списку, що розкривається, безпосередньо в полях Update, Delete і Insert. При зміні значення первинного ключа чи ключа-кандидата в батьківській таблиці можливі варіанти дій наведені у Таблиця 2 .9.

Таблиця 2.9. Варіанти дій при зміні значення первинного ключа в батьківській таблиці.

Найменування

Опис

Cascade

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

Restrict

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

Ignore

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

При видаленні запису в батьківській таблиці можливі варіанти дій наведені у Таблиця 2 .10.

Таблиця 2.10. Варіанти дій при видаленні запису в батьківській таблиці.

Найменування

Опис

Cascade

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

Restrict

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

Ignore

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

При додаванні нового запису в дочірню таблицю чи редагуванні в ній існуючого запису можливі варіанти дій наведені у Таблиця 2 .11.

Таблиця 2.11. Варіанти дій при додаванні нового запису в дочірню таблицю чи редагуванні в ній існуючого запису.

Найменування

Опис

Restrict

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

Ignore

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

Після завершення визначення умов цілісності даних натисніть кнопку ОК. У результаті уся уведена вами інформація буде збережена в словнику бази даних у вигляді вбудованих процедур (Рис. 2 .13). Тепер незалежно від додатків при зміні, додаванні і видаленні записів будуть виконуватися зазначені дії, що забезпечують цілісність даних.

Рис. 2.13. Вбудовані процедури що сгенеровані конструктором цілісності даних.