Jump to content

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

(Перенаправлено из зависимости включения )
Пример базы данных, в которой не реализована ссылочная целостность . В этом примере существует внешний ключ ( artist_id) значение в таблице альбомов, которое ссылается на несуществующего исполнителя — другими словами, существует значение внешнего ключа без соответствующего значения первичного ключа в ссылочной таблице. Здесь произошло следующее: жил художник по имени « Аэросмит », с 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-е изд. Обучение, ISBN   978-1-111-96960-8
  3. ^ Колайтис, Фокион Г. «Учебное пособие по зависимостям баз данных» (PDF) . Калифорнийский университет в Санта-Крус и исследовательский центр IBM — Альмаден Получено 1 декабря 2021 г.
  4. ^ Перейти обратно: а б с Абитбул, Серж ; Халл, Ричард Б.; Виану, Виктор (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 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 494de46147f68e7da1f1e52aa0593267__1711262520
URL1:https://arc.ask3.ru/arc/aa/49/67/494de46147f68e7da1f1e52aa0593267.html
Заголовок, (Title) документа по адресу, URL1:
Referential integrity - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)