Целостность базы данных

Поделись знанием:
Перейти к: навигация, поиск
К:Википедия:Страницы на КУ (тип: не указан)

Це́лостность ба́зы да́нных (database integrity) — соответствие имеющейся в базе данных информации её внутренней логике, структуре и всем явно заданным правилам. Каждое правило, налагающее некоторое ограничение на возможное состояние базы данных, называется ограничением целостности (integrity constraint). Примеры правил: вес детали должен быть положительным; количество знаков в телефонном номере не должно превышать 25; возраст родителей не может быть меньше возраста их биологического ребёнка и т. д.

Понятие согласованности, или целостности данных является ключевым понятием баз данных.

Кузнецов С. Д.[1]:30

Очевидно, что ограничения должны быть формально объявлены для СУБД, после чего СУБД должна предписывать их выполнение. Объявление ограничений сводится просто к использованию соответствующих средств языка базы данных, а соблюдение ограничений осуществляется с помощью контроля со стороны СУБД над операциями обновления, которые могут нарушить эти ограничения, и запрещения тех операций, которые их действительно нарушают. При первоначальном объявлении ограничения система должна проверить, удовлетворяет ли ему в настоящий момент база данных. Если это условие не соблюдается, ограничение должно быть отвергнуто; в противном случае оно принимается (т.е. записывается в каталог системы) и начиная с этого момента соблюдается[2]:338.

Задача аналитика и проектировщика базы данных — возможно более полно выявить все имеющиеся ограничения целостности и задать их в базе данных.

Механизмы обеспечения целостности являются одной из составляющих концепции модели данных[3][4].





Классификация ограничений целостности

В теории реляционных баз данных принято выделять четыре типа ограничений целостности[2]:353:

  • Ограничением базы данных называется ограничение на значения, которые разрешено принимать указанной базе данных.
  • Ограничением переменной отношения называется ограничение на значения, которые разрешено принимать указанной переменной отношения.
  • Ограничением атрибута называется ограничение на значения, которые разрешено принимать указанному атрибуту.
  • Ограничение типа представляет собой не что иное, как определение множества значений, из которых состоит данный тип.

Примером распространённого ограничения уровня переменной отношения является потенциальный ключ; примером распространённого ограничения уровня базы данных является внешний ключ.

Целостность и истинность данных в БД

Целостность БД не гарантирует достоверности (истинности) содержащейся в ней информации, но обеспечивает по крайней мере правдоподобность этой информации, отвергая заведомо невероятные, невозможные значения. Таким образом, не следует путать целостность (непротиворечивость) БД с истинностью БД. Истинность и непротиворечивость — не одно и то же[2]:351.

Достоверность (или истинность) есть соответствие фактов, хранящихся в базе данных, реальному миру. Очевидно, что для определения достоверности БД требуется обладание полными знаниями как о содержимом БД, так и о реальном мире. Для определения целостности БД требуется лишь обладание знаниями о содержимом БД и о заданных для неё правилах. Поэтому СУБД не может гарантировать наличие в базе данных только истинных высказываний; все, что она может сделать, — это гарантировать отсутствие каких-либо данных, вызывающих нарушение ограничений целостности (то есть гарантировать то, что она не содержит каких-либо данных, не совместимых с этими ограничениями)[2]:351.

Из того, что данные являются правильными, следует, что они непротиворечивы (но не обратное), а из того, что данные не являются непротиворечивыми, следует, что они неправильны (но не обратное). Здесь под словом «правильные» подразумевается, что в базе данных содержатся правильные данные тогда и только тогда, когда она полностью отражает истинное состояние дел в реальном мире[2]:351.

Контроль истинности данных может быть возложен только на человека, да и то в ограниченных масштабах, поскольку в ряде случаев люди тоже не обладают полнотой знаний о реальном мире.

См. также

Напишите отзыв о статье "Целостность базы данных"

Примечания

  1. Кузнецов С. Д. Основы баз данных. — 2-е изд. — М.: Интернет-университет информационных технологий; БИНОМ. Лаборатория знаний, 2007. — 484 с. — ISBN 978-5-94774-736-2.
  2. 1 2 3 4 5 Дейт К. Дж. Введение в системы баз данных = Introduction to Database Systems. — 8-е изд. — М.: Вильямс, 2005. — 1328 с. — ISBN 5-8459-0788-8 (рус.) 0-321-19784-4 (англ.).
  3. Codd, E.F. "Data Models in Database Management. Proc. Workshop in Data Abstraction, Databases, and Conceptual Modelling (Michael L. Brodie and Stephen N. Zilles, eds.), Pingree Park, Colo. (June 1980): ACM SIGART Newsletter No. 74 (January 1981); ACM SIGMOD Record 11(2), February 1981; ACM SIGPLAN Notices 16(1), January 1981
  4. Дейт К. Дж. [citforum.ru/database/digest/codd_3.shtml Реляционная модель выдержит испытание временем] (пер. с Date, C.J. The relational model will stand the test of time // Intelligent Enterprise, June 1, 1999, Volume 2, Number 8)


К:Википедия:Статьи без источников (тип: не указан)

Отрывок, характеризующий Целостность базы данных

Князь Андрей всегда особенно оживлялся, когда ему приходилось руководить молодого человека и помогать ему в светском успехе. Под предлогом этой помощи другому, которую он по гордости никогда не принял бы для себя, он находился вблизи той среды, которая давала успех и которая притягивала его к себе. Он весьма охотно взялся за Бориса и пошел с ним к князю Долгорукову.
Было уже поздно вечером, когда они взошли в Ольмюцкий дворец, занимаемый императорами и их приближенными.
В этот самый день был военный совет, на котором участвовали все члены гофкригсрата и оба императора. На совете, в противность мнения стариков – Кутузова и князя Шварцернберга, было решено немедленно наступать и дать генеральное сражение Бонапарту. Военный совет только что кончился, когда князь Андрей, сопутствуемый Борисом, пришел во дворец отыскивать князя Долгорукова. Еще все лица главной квартиры находились под обаянием сегодняшнего, победоносного для партии молодых, военного совета. Голоса медлителей, советовавших ожидать еще чего то не наступая, так единодушно были заглушены и доводы их опровергнуты несомненными доказательствами выгод наступления, что то, о чем толковалось в совете, будущее сражение и, без сомнения, победа, казались уже не будущим, а прошедшим. Все выгоды были на нашей стороне. Огромные силы, без сомнения, превосходившие силы Наполеона, были стянуты в одно место; войска были одушевлены присутствием императоров и рвались в дело; стратегический пункт, на котором приходилось действовать, был до малейших подробностей известен австрийскому генералу Вейротеру, руководившему войска (как бы счастливая случайность сделала то, что австрийские войска в прошлом году были на маневрах именно на тех полях, на которых теперь предстояло сразиться с французом); до малейших подробностей была известна и передана на картах предлежащая местность, и Бонапарте, видимо, ослабленный, ничего не предпринимал.
Долгоруков, один из самых горячих сторонников наступления, только что вернулся из совета, усталый, измученный, но оживленный и гордый одержанной победой. Князь Андрей представил покровительствуемого им офицера, но князь Долгоруков, учтиво и крепко пожав ему руку, ничего не сказал Борису и, очевидно не в силах удержаться от высказывания тех мыслей, которые сильнее всего занимали его в эту минуту, по французски обратился к князю Андрею.
– Ну, мой милый, какое мы выдержали сражение! Дай Бог только, чтобы то, которое будет следствием его, было бы столь же победоносно. Однако, мой милый, – говорил он отрывочно и оживленно, – я должен признать свою вину перед австрийцами и в особенности перед Вейротером. Что за точность, что за подробность, что за знание местности, что за предвидение всех возможностей, всех условий, всех малейших подробностей! Нет, мой милый, выгодней тех условий, в которых мы находимся, нельзя ничего нарочно выдумать. Соединение австрийской отчетливости с русской храбростию – чего ж вы хотите еще?
– Так наступление окончательно решено? – сказал Болконский.
– И знаете ли, мой милый, мне кажется, что решительно Буонапарте потерял свою латынь. Вы знаете, что нынче получено от него письмо к императору. – Долгоруков улыбнулся значительно.
– Вот как! Что ж он пишет? – спросил Болконский.
– Что он может писать? Традиридира и т. п., всё только с целью выиграть время. Я вам говорю, что он у нас в руках; это верно! Но что забавнее всего, – сказал он, вдруг добродушно засмеявшись, – это то, что никак не могли придумать, как ему адресовать ответ? Ежели не консулу, само собою разумеется не императору, то генералу Буонапарту, как мне казалось.
– Но между тем, чтобы не признавать императором, и тем, чтобы называть генералом Буонапарте, есть разница, – сказал Болконский.
– В том то и дело, – смеясь и перебивая, быстро говорил Долгоруков. – Вы знаете Билибина, он очень умный человек, он предлагал адресовать: «узурпатору и врагу человеческого рода».
Долгоруков весело захохотал.
– Не более того? – заметил Болконский.
– Но всё таки Билибин нашел серьезный титул адреса. И остроумный и умный человек.
– Как же?
– Главе французского правительства, au chef du gouverienement francais, – серьезно и с удовольствием сказал князь Долгоруков. – Не правда ли, что хорошо?
– Хорошо, но очень не понравится ему, – заметил Болконский.
– О, и очень! Мой брат знает его: он не раз обедал у него, у теперешнего императора, в Париже и говорил мне, что он не видал более утонченного и хитрого дипломата: знаете, соединение французской ловкости и итальянского актерства? Вы знаете его анекдоты с графом Марковым? Только один граф Марков умел с ним обращаться. Вы знаете историю платка? Это прелесть!
И словоохотливый Долгоруков, обращаясь то к Борису, то к князю Андрею, рассказал, как Бонапарт, желая испытать Маркова, нашего посланника, нарочно уронил перед ним платок и остановился, глядя на него, ожидая, вероятно, услуги от Маркова и как, Марков тотчас же уронил рядом свой платок и поднял свой, не поднимая платка Бонапарта.
– Charmant, [Очаровательно,] – сказал Болконский, – но вот что, князь, я пришел к вам просителем за этого молодого человека. Видите ли что?…