Книга: Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
Ограничение FOREIGN KEY
Ограничение FOREIGN KEY
Внешний ключ - это столбец или набор столбцов в одной таблице, которые в точности соответствуют столбцу или набору столбцов, определенных как ограничение PRIMARY KEY или ONIQUE в другой таблице. В своей простейшей форме внешний ключ реализует необязательное отношение один-ко-многим.
! ! !
ПРИМЕЧАНИЕ. Необязательное отношение существует, когда отношение возможно в формальной структуре, но не является необходимым. То есть родитель- ский экземпляр может существовать без каких-либо ссылок на него со стороны дочернего элемента, но, если оба существуют, оба подчиняются ограничениям. В противоположность этому существуют обязательные отношения. Обязательные отношения обсуждаются позже в этой главе.
. ! .
Стандартная модель объект-отношение описывает простое отношение один-ко- многим, между двумя сущностями, как показано на рис. 17.1.
Рис. 17.1. Модель объект-отношение
Если мы реализуем такую модель между двумя таблицами PARENT и CHILD, то строки в таблице CHILD зависят от существования связанной строки из PARENT. Ограничение FOREIGN KEY в Firebird осуществляет это отношение следующими способами:
* требуется, чтобы значение столбца внешнего ключа в таблице CHILD (CHILD.PARENT ID) могло быть связано с соответствующим значением уникального ключа (в нашем случае, первичного ключа) в таблице PARENT (PARENT, ID);
* по умолчанию запрещено удаление строки PARENT или изменение значения уникального ключа, если существуют зависимые строки в CHILD;
* должно быть реализовано отношение, которое предполагалось во время создания ссылки или когда оно в последний раз изменялось[48];
* по умолчанию допускается пустое значение столбца внешнего ключа. Поскольку невозможно связать пустое значение с чем бы то ни было, такие строки являются зависшими - они не имеют родителя.
- Ограничение времени ожидания для транзакций (Lock timeout)
- Ограничение результатов выборки FIRST
- 3. Ограничение целостности по состоянию
- 1. Ограничение функциональной зависимости
- 3.2. Ключи типа key_t и функция ftok
- 4.11.5. Ограничение сети
- Ограничение сценариев
- 9.5.8. Ограничение канала
- Листинг 9.4. Ограничение скорости загрузки медиафайлов в рабочее время
- Using ssh-keygen to Enable Key-Based Logins
- Measuring Key Buffer Usage
- Ограничение действий конкурентов