Ссылочная целостность - Referential integrity

Пример базы данных, в которой не применяется ссылочная целостность. В этом примере есть внешний ключ (artist_id) значение в таблице альбома, которое ссылается на несуществующего исполнителя - другими словами, есть иностранный ключ значение без соответствующего первичный ключ значение в указанной таблице. Здесь произошло то, что был художник по имени "Aerosmith ", с artist_id из 4, который был удален из таблицы исполнителей. Однако альбом "Ешьте богатых "относится к этому художнику. При соблюдении ссылочной целостности это было бы невозможно.

Ссылочная целостность - это свойство данных, указывающее, что все ссылки на него действительны. В контексте реляционные базы данных, требуется, чтобы если значение одного атрибута (столбца) связь (таблица) ссылается на значение другого атрибута (в том же или другом отношении), тогда указанное значение должно существовать.[1]

Для сохранения ссылочной целостности в реляционной базе данных любой столбец в базе стол это объявлено иностранный ключ может содержать только значения NULL или значения из родительской таблицы первичный ключ или кандидат ключ.[2] Другими словами, когда используется значение внешнего ключа, оно должно ссылаться на действительный существующий первичный ключ в родительской таблице. Например, удаление записи, содержащей значение, на которое ссылается внешний ключ в другой таблице, нарушит ссылочную целостность. Немного системы управления реляционными базами данных (RDBMS) может обеспечить ссылочную целостность, обычно либо путем удаления строк внешнего ключа, а также для поддержания целостности, либо путем возврата ошибки и отказа от удаления. Какой метод используется, может быть определено ограничением ссылочной целостности, определенным в словарь с данными.

Прилагательное «референциальный» описывает действие, которое иностранный ключ выполняет «ссылку» на связанный столбец в другой таблице. Проще говоря, «ссылочная целостность» гарантирует, что цель, на которую «ссылаются», будет найдена. Отсутствие ссылочной целостности в базе данных может привести к тому, что реляционные базы данных будут возвращать неполные данные, обычно без указания на ошибку.

Формализация

An зависимость включения более двух (возможно, идентичных) предикатов и из схемы написано , где , являются отдельными атрибутами (названиями столбцов) и . Это означает, что кортежи значений, появляющиеся в столбцах для фактов также должен отображаться как набор значений в столбцах для некоторого факта .

Логическое следствие между зависимостями включения можно аксиоматизировать с помощью правил вывода.[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]

Смотрите также

Рекомендации

  1. ^ Чаппл, Майк. "Ссылочная целостность". About.com. Получено 2011-03-20. Определение: Ссылочная целостность - это концепция базы данных, которая гарантирует, что отношения между таблицами остаются согласованными. Когда одна таблица имеет внешний ключ для другой таблицы, концепция ссылочной целостности гласит, что вы не можете добавлять запись в таблицу, содержащую внешний ключ, если в связанной таблице нет соответствующей записи.
  2. ^ Coronel et al. (2013). Системы баз данных 10-е изд. Cengage Learning, ISBN  978-1-111-96960-8
  3. ^ а б c Абитебул, Серж; Халл, Ричард Б.; Виану, Виктор (1994). «9. Зависимость от включения». Основы баз данных. Эддисон-Уэсли. С. 192–199.
  4. ^ Служба поддержки Microsoft (11 февраля 2007 г.). «Сообщение об ошибке 1785 возникает, когда вы создаете ограничение FOREIGN KEY, которое может вызвать несколько каскадных путей». microsoft.com. Получено 2009-01-24.
  5. ^ Чигрик, Александр (13.08.2003). «Управление разрешениями пользователей на SQL Server». Журнал базы данных. Получено 2006-12-17.

внешняя ссылка