Ссылочная целостность — это свойство данных, указывающее, что все ссылки на них действительны. В контексте реляционных баз данных требуется, чтобы если значение одного атрибута (столбца) отношения ( таблицы) ссылалось на значение другого атрибута (в том же или другом отношении), то указанное значение должно существовать. [1]
Для обеспечения ссылочной целостности в реляционной базе данных любой столбец базовой таблицы , объявленный внешним ключом , может содержать только нулевые значения или значения из первичного ключа родительской таблицы или ключа-кандидата . [2] Другими словами, когда используется значение внешнего ключа, оно должно ссылаться на действительный существующий первичный ключ в родительской таблице. Например, удаление записи, содержащей значение, на которое ссылается внешний ключ в другой таблице, нарушит ссылочную целостность. Некоторые системы управления реляционными базами данных (СУБД) могут обеспечивать ссылочную целостность, обычно либо путем удаления строк внешнего ключа для поддержания целостности, либо путем возврата ошибки и не выполнения удаления. Какой метод используется, может определяться ограничением ссылочной целостности, определенным в словаре данных .
Прилагательное «ссылочный» описывает действие, которое выполняет внешний ключ , «ссылаясь» на связанный столбец в другой таблице. Проще говоря, «ссылочная целостность» гарантирует, что цель, на которую «ссылаются», будет найдена. Отсутствие ссылочной целостности в базе данных может привести к тому, что реляционные базы данных будут возвращать неполные данные, обычно без каких-либо признаков ошибки.
Зависимость включения двух (возможно, идентичных) предикатов и от схемы записывается , где , — это отдельные атрибуты (имена столбцов) и . Это означает, что кортежи значений, появляющиеся в столбцах для фактов, также должны появляться как кортежи значений в столбцах для некоторого факта .
Такое ограничение представляет собой особую форму зависимости, порождающей кортежи (TGD), где в обеих частях правила имеется только один реляционный атом. [3] В логике первого порядка это выражается как , где – вектор (размер которого равен ) переменных, общих для и , и ни одна переменная не появляется несколько раз ни в теле TGD, ни в его голове.
Логическое следствие между зависимостями включения может быть аксиоматизировано с помощью правил вывода [4] : 193 и может быть определено с помощью алгоритма PSPACE . Можно показать, что проблема является PSPACE-полной путем редукции от проблемы приемки для линейного ограниченного автомата . [4] : 196 Однако логическое следствие между зависимостями, которые могут быть зависимостями включения или функциональными зависимостями, неразрешимо путем сокращения от слова «проблема для моноидов ». [4] : 199
Декларативная ссылочная целостность (DRI) — это один из методов языка программирования баз данных SQL , обеспечивающий целостность данных.
Таблица (называемая ссылочной таблицей) может ссылаться на столбец (или группу столбцов) в другой таблице (таблице, на которую ссылаются) с помощью внешнего ключа . Столбцы, на которые ссылаются, в указанной таблице должны иметь ограничение уникальности, например первичный ключ . Также возможны ссылки на самих себя (хотя они не полностью реализованы в MS SQL Server [5] ). При вставке новой строки в ссылочную таблицу система управления реляционными базами данных (СУБД) проверяет, существует ли введенное значение ключа в ссылочной таблице. В противном случае вставка невозможна. Также можно указать действия DRI для UPDATE и DELETE , такие как CASCADE (пересылает изменение/удаление в ссылочной таблице в ссылающиеся таблицы), NO ACTION (если ссылка на конкретную строку, изменение ключа не разрешено) или SET NULL/SET DEFAULT (изменение/удаление ключа в ссылочной таблице приводит к установке ссылочных значений на NULL или на значение DEFAULT, если оно указано). [6]
В Microsoft SQL Server термин DRI также применяется к назначению пользователям разрешений на объект базы данных. Предоставление разрешения DRI пользователю базы данных позволяет ему добавлять ограничения внешнего ключа в таблицу. [7]
Определение : Ссылочная целостность — это концепция базы данных, которая гарантирует, что отношения между таблицами остаются согласованными. Когда одна таблица имеет внешний ключ к другой таблице, концепция ссылочной целостности гласит, что вы не можете добавлять в таблицу запись, содержащую внешний ключ, если в связанной таблице нет соответствующей записи.