- •Віртуальні таблиці (візії) Визначення візії
- •Перейменування атрибутів візії
- •Модифікація змісту візій
- •Тема 14. Обмеження та тригери в sql Активні елементи
- •Ключі відношень Види ключів і обмеження
- •Оголошення первинного ключа
- •Ключі та індекси
- •Оголошення зовнішнього ключа
- •Стратегії забезпечення посилальної цілісності
- •Обмеження рівня атрибутів та кортежів
- •Обмеження not null
- •Обмеження check рівня атрибуту
- •Обмеження check рівня кортежу
- •Модифікація обмежень
- •Тригери в sql Тригери як правила „подія-умова-дія”
- •Тригери instead of
- •Тригери у Transact sql
- •Безпека
- •Категорії збережених процедур Системні збережені процедури
- •Локальні збережені процедури
- •Тимчасові збережені процедури
- •Розширені збережені процедури
- •Основи програмування у Transact-sql
- •Блоки операторів
- •Умовне виконання
- •Використання збережених процедур Виклик збереженої процедури
- •Створення збереженої процедури
- •Безпека даних
- •1.2. Реєстрація користувачів
- •Керування правами доступу
- •Кому надаються права доступу
- •Умови надання прав доступу
- •1.3.3. Об’єкти, на які поширюються права доступу
- •Операції, щодо яких специфікуються права доступу
- •Можливість передавання прав доступу іншим особам
- •Специфікація повноважень
- •Обов’язкові методи захисту
- •Ведення журналів доступу
- •Обхід системи захисту
- •Використання представлень для фільтрації повноважень
- •Хто може створювати представлення?
Тема 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. Вимога унікальності в цьому сенсі порушується.
