Ссылочная целостность - это свойство данных, указывающее, что все ссылки на них действительны. В контексте реляционных баз данных это требует, чтобы если значение одного атрибута (столбца) отношения (таблицы) ссылалось на значение другого атрибута (либо в том же, либо в другом отношении), то указанное значение должно существовать. [1]
Для сохранения ссылочной целостности в реляционной базе данных любой столбец в базовой таблице , объявленный внешним ключом, может содержать только значения NULL или значения из первичного ключа родительской таблицы или ключа-кандидата . [2] Другими словами, когда используется значение внешнего ключа, оно должно ссылаться на действительный существующий первичный ключ в родительской таблице. Например, удаление записи, содержащей значение, на которое ссылается внешний ключ в другой таблице, нарушит ссылочную целостность. Некоторые системы управления реляционными базами данных(RDBMS) может обеспечить ссылочную целостность, обычно либо путем удаления строк внешнего ключа, а также для поддержания целостности, либо путем возврата ошибки и отказа от удаления. Какой метод используется, может определяться ограничением ссылочной целостности, определенным в словаре данных .
Прилагательное «ссылочный» описывает действие, которое внешний ключ выполняет, «ссылаясь» на связанный столбец в другой таблице. Проще говоря, «ссылочная целостность» гарантирует, что цель, на которую «ссылаются», будет найдена. Отсутствие ссылочной целостности в базе данных может привести к тому, что реляционные базы данных будут возвращать неполные данные, обычно без указания на ошибку.
Формализация [ править ]
Зависимость включения в течение двух (возможно , одинаковых) предикатов и из схемы написана , где , являются различными атрибутами (имена столбцов) из и . Это означает, что кортежи значений, появляющиеся в столбцах для фактов, также должны отображаться как кортежи значений в столбцах для некоторого факта .
Логическая импликация между зависимостями включения может быть аксиоматизирована с помощью правил вывода [3] : 193 и может быть определена с помощью алгоритма PSPACE . Можно показать, что задача PSPACE-полна , сводя ее к задаче приемки для линейно ограниченного автомата . [3] : 196 Однако, логическое следствие между зависимостями, которые могут быть зависимостями включения или функциональными зависимостями , неразрешимо сокращением от слова проблема для моноидов . [3] : 199
Декларативная ссылочная целостность [ править ]
Декларативная ссылочная целостность (DRI) - это один из методов в языке программирования баз данных SQL для обеспечения целостности данных.
Значение в SQL [ править ]
Таблица (называемая ссылочной таблицей) может ссылаться на столбец (или группу столбцов) в другой таблице (ссылочная таблица) с помощью внешнего ключа . Столбцы, на которые указывает ссылка, в таблице, на которую указывает ссылка, должны иметь уникальное ограничение, такое как первичный ключ . Также возможны ссылки на себя (хотя они не полностью реализованы в MS SQL Server [4] ). При вставке новой строки в ссылочную таблицу система управления реляционными базами данных (RDBMS) проверяет, существует ли введенное значение ключа в ссылочной таблице. В противном случае вставка невозможна. Также можно указать действия DRI на ОБНОВЛЕНИЕ и УДАЛЕНИЕ, например 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
- ^ a b c Абитебул, Серж ; Халл, Ричард Б.; Виану, Виктор (1994). «9. Зависимость от включения». Основы баз данных . Эддисон-Уэсли. С. 192–199.
- ^ Служба поддержки Microsoft (11 февраля 2007 г.). «Сообщение об ошибке 1785 возникает, когда вы создаете ограничение FOREIGN KEY, которое может вызвать несколько каскадных путей» . microsoft.com . Проверено 24 января 2009 .
- ^ Chigrik Александр (2003-08-13). «Управление разрешениями пользователей на SQL Server» . Журнал базы данных . Проверено 17 декабря 2006 .
Внешние ссылки [ править ]
- DRI против триггеров (в архиве )