Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lectures_Module_3.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
1.11 Mб
Скачать

Тема 14. Обмеження та тригери в sql Активні елементи

Одна з серйозних проблем розробників доданків БД: при оновленні інформації (частіше під час „ручного” введення ) певні елементи інформації стають невірними або входять у протиріччя з іншими елементами.

Погане (дороге) рішення: покласти піклування про коректність даних на прикладну програму, виходячи з того, що кожній операції зміни БД має передувати відповідна перевірка.

Рис.14.1. Контроль припустимості змін БД прикладною програмою

Недоліки такого рішення:

  • Візьмемо до уваги велику кількість звернень прикладної програми до БД.

  • Головне – умови цілісності БД в більшості випадків випливають зі структури БД. Ті ж умови, що не випливають безпосередньо з відносно простих структур БД, дійсно доводиться програмувати прикладним програмістам.

Розглянемо так звані „активні” елементи.

Активний елемент (active element) – вираз або команда, які збережені в БД та виконуються по мірі необхідності в певні моменти часу та у зв’язку настанням подій, таких, як вставка кортежу у певне відношення або зміна стану БД, при яких певна умова набуває значення TRUE.

До таких активних елементів відносимо:

  • Первинні (власні) ключі,

  • Зовнішні ключі,

  • Тригери.

Рис.14.2. Контроль припустимості змін БД зі сторони СУБД

Ключі відношень Види ключів і обмеження

Якщо підмножина S атрибутів є ключем відношення R, будь-які два кортежі R повинні різнитися у значеннях компонентів хоч би одного з атрибутів S. Як наслідок, якщо схема відношення R містить оголошення ключа, R не може містити записи, що дублюються.

Обмеження ключа, як і багато інших обмежень, формулюються в контексті команди CREATE TABLE. Для кожного відношення можуть бути визначені:

  • Лише один первинний ключ - парою службових слів PRIMARY KEY,

  • Будь-яка кількість „просто унікальних” ключів - службовим словом UNIQUE.

Обмеження посилальної цілісності вимагає, що якщо певні значення існують у певних компонентах одного відношення, вони повинні існувати і в компонентах первинного ключа іншого відношення. Встановлення такого зв’язку передбачається в команді CREATE TABLE службовими словами REFERENCES або FOREIGN KEY.

Оголошення первинного ключа

Оголошення певних компонентів у складі первинного ключа означає для них:

  • Ні у яких двох кортежів цього відношення не можуть співпадати кожні пари ключових компонентів одночасно. Спроба вставки такого кортежу буде відторгнута системою.

  • Компоненти ключових атрибутів не можуть містити NULL.

Рис.14.3. Зміст атрибутів первинного ключа і неключових

Приклад 14.1. Нехай треба створити відношення MovieStar (актори) з первинним ключем name.

Рис.14.4. Варіант 1 оголошення первинного ключа шляхом надання атрибуту відповідного статусу

Рис.14.5. Варіант 2 оголошення первинного ключа у вигляді окремого речення

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

У синтаксисі CREATE TABLE треба просто замінити PRIMARY KEY на UNIQUE. Нагадаємо про 2 відмінності UNIQUE від PRIMARY KEY:

  • UNIQUE індексів може бути кілька для відношення;

  • Можливо, що всі компоненти UNIQUE індекса одного кортежу містять NULL. Вимога унікальності в цьому сенсі порушується.

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