stringtranslate.com

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

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

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

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

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

  1. ^ Чаппл, Майк. "Ссылочная целостность". О сайте.com . Проверено 20 марта 2011 г. Определение : Ссылочная целостность — это концепция базы данных, которая гарантирует, что отношения между таблицами остаются согласованными. Когда одна таблица имеет внешний ключ к другой таблице, концепция ссылочной целостности гласит, что вы не можете добавлять в таблицу запись, содержащую внешний ключ, если в связанной таблице нет соответствующей записи.
  2. ^ Коронель и др. (2013). Системы баз данных 10-е изд. Обучение Cengage, ISBN 978-1-111-96960-8 
  3. ^ Колайтис, Фокион Г. «Учебное пособие по зависимостям баз данных» (PDF) . Калифорнийский университет в Санта-Крус и IBM Research — Альмаден . Проверено 10 декабря 2021 г.
  4. ^ abc Абитебул, Серж ; Халл, Ричард Б.; Виану, Виктор (1994). «9. Зависимость от включения». Основы баз данных. Аддисон-Уэсли. стр. 192–199.
  5. ^ Служба поддержки Microsoft (11 февраля 2007 г.). «Сообщение об ошибке 1785 возникает при создании ограничения FOREIGN KEY, которое может вызвать несколько каскадных путей». microsoft.com . Проверено 24 января 2009 г.
  6. ^ ANSI/ISO/IEC 9075-1:2003, Информационные технологии. Языки баз данных. SQL.
    • Часть 1: Фреймворк (SQL/Framework)
    • Часть 2. Фонд (SQL/Foundation)
  7. ^ Чигрик, Александр (13 августа 2003 г.). «Управление разрешениями пользователей на SQL Server». Журнал базы данных . Проверено 17 декабря 2006 г.

Внешние ссылки