– 46 –
– в базу могут быть внесены неправильные данные, например, заказ, в кото-
ром указан не существующий товар;
– в результате изменения имеющихся данных им могут быть присвоены не-
корректные значения, например, назначение служащего в несуществующий офис;
– изменения, внесенные в базу данных, могут быть утеряны из-за системной
ошибки или сбоя в электропитании;
– изменения, внесенные в базу данных, могут быть внесены лишь частично,
например, заказ может быть добавлен без учета изменения количества товара,
имеющегося на складе.
2.3.1. У
СЛОВИЯ ЦЕЛОСТНОСТИ ДАННЫХ
Для сохранения непротиворечивости и правильности хранимой информа-
ции в реляционных СУБД устанавливается одно или несколько условий цело-
стности данных. Эти условия определяют, какие значения могут быть записаны
в базу данных в результате добавления или обновления данных. Как правило, в
реляционной базе данных можно использовать следующие условия целостно-
сти данных:
– Обязательное наличие данных. Некоторые столбцы в базе данных должны
содержать значения в каждой строке; строки в таких столбцах не могут включать
псевдозначения
NULL или не содержать никакого значения. Например, в учебной
базе данных для каждого заказа должен обязательно существовать клиент, сде-
лавший этот заказ. Поэтому столбец
ID_CLN в таблице ZAKAZY является обязатель-
ным. Для реализации этого условия необходимо указать СУБД, что запись значе-
ния
NULL в такие столбцы недопустима;
– Условие на значение. У каждого столбца в базе данных есть свой домен,
т. е. набор значений, которые допускается хранить в данном столбце. В учебной
базе данных заказы нумеруются, начиная с числа
100001, поэтому доменом столб-
ца
ID_ORD являются положительные целые числа, больше 100000. Аналогично,
идентификаторы служащих в столбце
ID_SLZH должны находиться в диапазоне от
101 до 999. Для реализации этого условия необходимо указать СУБД, что запись
значений, не входящих в заданный диапазон, недопустима;
– Целостность таблицы. Первичный ключ таблицы должен в каждой стро-
ке иметь уникальное значение, отличное от значений во всех остальных строках.
Например, каждая строка таблицы
TOVARY имеет уникальную комбинацию значе-
ний в столбцах
ID_MFR и ID_PRD, которая однозначно идентифицирует товар, пред-
ставляемый данной строкой. Повторяющиеся значения в этих строках недопусти-
мы, поскольку тогда база данных не сможет отличать один товар от другого. Со-
временные СУБД автоматически обеспечивают это условие для столбцов, объяв-
ленных первичными ключами;
– Ссылочная целостность. В реляционной базе данных каждая строка таб-
лицы-потомка с помощью внешнего ключа связана со строкой таблицы-предка,
содержащей первичный ключ, значение которого равно значению внешнего клю-
ча. Если это условие не соблюдается, то речь идет о нарушении ссылочной цело-
стности. Современные СУБД поддерживают ссылочную целостность автоматически.