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