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. ^ Чаппл, Майк. "Ссылочная целостность". About.com . Получено 2011-03-20 . Определение : Ссылочная целостность — это концепция базы данных, которая гарантирует, что отношения между таблицами остаются согласованными. Когда одна таблица имеет внешний ключ к другой таблице, концепция ссылочной целостности гласит, что вы не можете добавить запись в таблицу, содержащую внешний ключ, если в связанной таблице нет соответствующей записи.
  2. ^ Коронел и др. (2013). Системы баз данных 10-е изд. Cengage Learning, ISBN 978-1-111-96960-8 
  3. ^ Колайтис, Фокион Г. «Учебное пособие по зависимостям баз данных» (PDF) . Калифорнийский университет в Санта-Крус и IBM Research — Альмаден . Проверено 10 декабря 2021 г.
  4. ^ abc Abiteboul, Serge ; Hull, Richard B.; Vianu, Victor (1994). "9. Зависимость включения". Основы баз данных. Addison-Wesley. С. 192–199.
  5. ^ Служба поддержки Microsoft (2007-02-11). "Сообщение об ошибке 1785 возникает при создании ограничения FOREIGN KEY, которое может привести к появлению нескольких каскадных путей". microsoft.com . Получено 2009-01-24 .
  6. ^ ANSI/ISO/IEC 9075-1:2003, Информационные технологии — Языки баз данных — SQL
    • Часть 1: Фреймворк (SQL/Фреймворк)
    • Часть 2: Основы (SQL/Основы)
  7. ^ Чигрик, Александр (2003-08-13). "Управление разрешениями пользователей на SQL Server". Database Journal . Получено 2006-12-17 .

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