- •1.Проектування бази даних
- •1.1.Угоди по іменуванню полів таблиць
- •1.2.Проектування нормалізованих баз даних
- •1.2.1.Перша нормальна форма таблиці
- •1.2.2.Друга нормальна форма таблиці
- •1.2.3.Третя нормальна форма таблиці
- •2.Створення бази даних
- •2.1.Створення бази даних у конструкторі проектів
- •2.2.Створення бази даних поза конструктором проектів
- •2.3.Створення таблиць
- •2.3.1.Створення таблиці за допомогою конструктора таблиць
- •Найменування поля.
- •Текстові поля.
- •Числові поля
- •Логічні поля
- •Поля дат
- •Поля дат і часу.
- •Поля грошового типу.
- •Текстові поля довільної довжини.
- •Поля типу General.
- •2.3.2.Властивості полів
- •Установка опції null
- •Додавання і видалення полів таблиці.
- •2.3.3.Властивості таблиці
- •2.3.4.Сортування таблиць
- •2.3.4.1.Індекси
- •2.3.5.Визначення зв'язків між таблицями
- •2.3.6.Визначення умов цілісності даних
- •3.Література
2.3.5.Визначення зв'язків між таблицями
У Visual FoxPro ви можете встановлювати постійні зв'язки між двома таблицями, що будуть підтримуватися при створенні форм, звітів і запитів. При визначенні відносин одна з таблиць є батьківської, а інша — дочірньої. Для батьківської таблиці повинний бути визначений первинний ключ чи ключ-кандидат, а для дочірньої — індекс для зв'язку з батьківською таблицею. Наприклад, при завданні зв'язку між двома таблицями Student (Студенти) і Group (Групи), для таблиці Group визначений первинний ключ iGroup, а таблиця Student містить індекс, що не є унікальним iGroup, індексне вираження якого складається з коду групи, по якому здійснюється зв'язок між таблицями.
Для визначення зв'язку між таблицями відкрийте вікно конструктора бази даних і виконаєте наступні дії:
Виберіть батьківську таблицю (Group).
Установите курсор миші на первинний ключ таблиці (iGroup).
Натисніть кнопку миші і, не відпускаючи6 її, перемістите курсор миші на індекс дочірньої таблиці, по якому встановлюється зв'язок (iGroup).
Відпустите кнопку миші. У вікні конструктора бази даних між таблицями з'явилася лінія (Рис. 2 .10), що відображає створений зв'язок між таблицями.
Рис. 2.10. Відображення зв’язків між таблицями у конструкторі баз даних.
Установіть курсор миші на лінію, що з'єднує таблиці, і натисніть двічі курсор миші. На екрані відкриється вікно діалогу “Edit Relationship” (Рис. 2 .11), у якому ліворуч приведені найменування і список індексів, що розкривається, батьківської таблиці, а праворуч аналогічна інформація про дочірню таблицю. У цьому ж вікні діалогу приведений тип відносин між таблицями. Для збереження відносини натисніть кнопку ОК, а для відмовлення — кнопку Cancel.
Рис.
2.11.
Вікно діалогу “Edit
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”
для визначення умови цілісності даних.
Таблиця 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.
Вбудовані процедури що сгенеровані
конструктором цілісності даних.