Ссылочная целостность - это свойство данных, указывающее, что все ссылки на них действительны. В контексте реляционных баз данных требуется, чтобы если значение одного атрибута (столбца) отношения (таблицы) ссылалось на значение другого атрибута (либо в том же, либо в другом отношении), то указанное значение должно существовать. [1]
Для сохранения ссылочной целостности в реляционной базе данных любой столбец базовой таблицы , объявленный внешним ключом, может содержать только значения NULL или значения из первичного ключа родительской таблицы или ключа-кандидата . [2] Другими словами, когда используется значение внешнего ключа, оно должно ссылаться на действительный существующий первичный ключ в родительской таблице. Например, удаление записи, содержащей значение, на которое ссылается внешний ключ в другой таблице, нарушит ссылочную целостность. Некоторые системы управления реляционными базами данных (СУБД) могут обеспечивать ссылочную целостность, обычно либо путем удаления строк внешнего ключа, а также для поддержания целостности, либо путем возврата ошибки и отказа от удаления. Какой метод используется, может определяться ограничением ссылочной целостности, определенным в словаре данных .
Прилагательное «ссылочный» описывает действие, которое внешний ключ выполняет, «ссылаясь» на связанный столбец в другой таблице. Проще говоря, «ссылочная целостность» гарантирует, что цель, на которую «ссылаются», будет найдена. Отсутствие ссылочной целостности в базе данных может привести к тому, что реляционные базы данных будут возвращать неполные данные, обычно без указания на ошибку.
Формализация
Зависимость включения более двух идентичных (возможно) предикатов а также из схемы написано , где , являются отдельными атрибутами (названиями столбцов) а также . Это означает, что кортежи значений, появляющиеся в столбцах для фактов также должен отображаться как набор значений в столбцах для некоторого факта .
Логическая импликация между зависимостями включения может быть аксиоматизирована с помощью правил вывода [3] : 193 и может быть определена с помощью алгоритма PSPACE . Можно показать, что задача PSPACE-полна , сводя ее к задаче приемки для линейно ограниченного автомата . [3] : 196 Однако логическое следствие между зависимостями, которые могут быть зависимостями включения или функциональными зависимостями , неразрешимо сокращением от слова проблема для моноидов . [3] : 199
Декларативная ссылочная целостность
Декларативная ссылочная целостность (DRI) - это один из методов в языке программирования баз данных SQL для обеспечения целостности данных.
Значение в SQL (язык структурированных запросов)
Таблица (называемая ссылочной таблицей) может ссылаться на столбец (или группу столбцов) в другой таблице (ссылочная таблица) с помощью внешнего ключа . Столбцы, на которые указывает ссылка, в таблице, на которую указывает ссылка, должны иметь уникальное ограничение, такое как первичный ключ . Также возможны ссылки на себя (хотя они не полностью реализованы в MS SQL Server [4] ). При вставке новой строки в ссылочную таблицу система управления реляционными базами данных (RDBMS) проверяет, существует ли введенное значение ключа в ссылочной таблице. В противном случае вставка невозможна. Также можно указать действия DRI для UPDATE и DELETE , такие как CASCADE (пересылает изменение / удаление в указанной таблице ссылочным таблицам), NO ACTION (если указана конкретная строка, изменение ключа не допускается) или SET NULL / SET DEFAULT (измененный / удаленный ключ в указанной таблице приводит к установке ссылочных значений на NULL или на значение DEFAULT, если оно указано).
ANSI / ISO / IEC 9075-1: 2003, Информационные технологии - Языки баз данных - SQL - Часть 1: Framework (SQL / Framework) ANSI / ISO / IEC 9075-2: 2003, Информационные технологии - Языки баз данных - SQL - Часть 2: Фонд (SQL / Foundation)
Конкретное значение продукта
В Microsoft SQL Server термин DRI также применяется к назначению разрешений пользователям на объект базы данных. Предоставление разрешения DRI пользователю базы данных позволяет ему добавлять ограничения внешнего ключа в таблицу. [5]
Смотрите также
Рекомендации
- ^ Чаппл, Майк. «Ссылочная целостность» . About.com . Проверено 20 марта 2011 .
Определение : ссылочная целостность - это концепция базы данных, которая гарантирует, что отношения между таблицами остаются согласованными. Когда одна таблица имеет внешний ключ для другой таблицы, концепция ссылочной целостности гласит, что вы не можете добавлять запись в таблицу, содержащую внешний ключ, если в связанной таблице нет соответствующей записи.
- ^ Coronel et al. (2013). Системы баз данных 10-е изд. Cengage Learning, ISBN 978-1-111-96960-8
- ^ а б в Абитебул, Серж ; Халл, Ричард Б.; Виану, Виктор (1994). «9. Зависимость от включения». Основы баз данных . Эддисон-Уэсли. С. 192–199.
- ^ Служба поддержки Microsoft (11 февраля 2007 г.). «Сообщение об ошибке 1785 возникает при создании ограничения FOREIGN KEY, которое может вызвать несколько каскадных путей» . microsoft.com . Проверено 24 января 2009 .
- ^ Чигрик, Александр (13.08.2003). «Управление разрешениями пользователей на SQL Server» . Журнал базы данных . Проверено 17 декабря 2006 .
Внешние ссылки
- DRI против триггеров (в архиве )