Книга: Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
Обязательные отношения
Обязательные отношения
Обязательное отношение - это отношение, которое требует существования как минимум одной дочерней строки для каждой родительской строки. Например, структура накладной (заголовок с информацией о покупателе и адресом поставки) будет нелогичной, если будет разрешено существование заголовочной строки без детальных строк.
Общей ошибкой начинающих является предположение, что ограничение NOT NULL в дочерней таблице сделает отношение один-ко-многим обязательным. Этого не будет, потому что ограничение внешнего ключа действует только в контексте конкретной зависимости. В случае отсутствия строки, ссылающейся на родительскую таблицу, допустимость пустого значения для внешнего ключа не решает проблему.
Обязательное отношение - это одно из тех мест, где определенные пользователем триггеры должны быть использованы для поддержания ссылочной целостности. SQL в Firebird не поддерживает "обязательных" ограничений. Он может использовать некоторую логику на клиенте и на сервере для гарантирования правильной последовательности событий, которая бы соответствовала и ссылочному ограничению, и требованиям обязательности. Он будет использовать триггеры как для добавления, так и для удаления данных, поскольку эта логика должна поддерживать правило "минимально один потомок" не только во время создания, но и при удалении дочерних строк.
Подробности написания триггеров, а также пример триггера для поддержания обязательного отношения см. в главе 31.
- Отношения типа один-к-одному
- 3.4. Отношения между классами
- 5. Отношения. Типы отношений
- 2. Пример создания базового отношения в записи на псевдокоде
- Отношения типа многие-ко-многим
- Отношения типа один-ко-многим
- Операции отношения
- Необязательные аргументы
- 2.1.1. Обязательные блоки
- Агрегационные отношения
- 1.1. Пример программы: родственные отношения
- Обязательные требования