русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Правила внешних ключей


Дата добавления: 2013-12-24; просмотров: 2007; Нарушение авторских прав


Внешние ключи

 

Пусть R2 – отношение. Тогда внешний ключ FK в отношении R2 – это подмножество множества атрибутов R2 такое, что:

1) существует базовое отношение R1 с потенциальным ключом CK;

2) каждое значение FK в текущем значении R2 всегда совпадает со значением CK некоторого кортежа в текущем значении R1.

 

Из данного определения можно вывести такие следствия:

1) по определению каждое значение внешнего ключа должно являться значением соответствующего потенциального ключа, но обратное не требуется, т.е. потенциальный ключ может содержать значения, которые в данный момент не являются значением внешнего ключа;

2) данный внешний ключ будет составным тогда и только тогда, когда соответствующий потенциальный ключ тоже составной;

3) каждый атрибут, входящий в данный внешний ключ, должен быть определён на том же домене, что и соответствующий атрибут потенциального ключа;

4) R1 и R2 не обязательно различны.

 

Рассмотрим отношение Students:

 

StudentID Name GroupID BirthDate
Казаков Петр 23.04.1990
Васильев Иван 11.05.1991
Шишкина Дарья 23.09.1991

 

Атрибут GroupID будет являться внешним ключом, т.к. к нему проведена связь от таблицы Groups.

В связи с внешними ключами вводится ещё ряд терминов. Говорят, что значение внешнего ключа представлено ссылкой к кортежу, содержащему соответствующее значение потенциального ключа. Этот кортеж называется ссылочным, или целевым.

Отношение, которое содержит ссылочный ключ, называется ссылающимся отношением, а отношение, которое содержит соответствующий ключ, называется ссылочным, или целевым (target relation).

Существует правило ссылочной целостности: БД не должна содержать несогласованных значений внешних ключей. Несогласованное значение – это такое значение, для которого нет потенциального ключа в ссылочном отношении. Это правило эквивалентно определению внешнего ключа.



 

 

Правило целостности связано с состоянием БД в конкретный момент времени. Следовательно, необходим механизм, позволяющий поддерживать БД целостной. Для этого требуется определить операции, которые могут нарушить целостность, и либо запретить их, либо ввести дополнительные компенсирующие операции, которые будут исправлять временное нарушение целостности БД.

Например, нам необходимо удалить группу ПМ-51 из отношения Groups. Если мы просто удалим соответствующий кортеж из таблицы Groups, мы нарушим целостность, т.к. в таблице Students останутся студенты, принадлежащие уже несуществующей группе. Именно для таких случаев разрабатываются компенсирующие операции.

Таким образом, для БД необходимо предусмотреть компенсирующие операции для двух моментов:

1) удаление объекта ссылки внешнего ключа, т.е. ссылочного кортежа;

2) изменение (обновление) потенциального ключа, на который имеется ссылка.

Для компенсации этих операций существуют как минимум две возможности:

1. Ограничить выполнение операции. Для операции удаления – не удалять кортеж, пока не удалят все ссылающиеся кортежи, т.е. отложить удаление;

2. Каскадировать. Здесь возможно несколько вариантов, например при удалении:

· удалить сам кортеж и все соответствующие ссылающиеся кортежи;

· удалить сам кортеж, а для всех ссылающихся кортежей исправить значение на правильное, например, установить NULL-значение для данного атрибута.



<== предыдущая лекция | следующая лекция ==>
Первичные и альтернативные ключи | NULL-значение


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.607 сек.