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

Целостность сущностей

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

Термин целостность используется для описания корректности и непротиворечивости хранимых в БД данных.

Целостность сущностей ограничивает набор значений первичных ключей базовых отношений: кортеж не может быть записан в БД до тех пор, пока значения его ключевых атрибутов не будут полностью определены. Т.е. никакой ключевой атрибут любого кортежа отношения не может содержать отсутствующего значения, обозначаемого определителем NULL.

Данное правило касается только первичного ключа. Если в отношении присутствуют другие потенциальные ключи, то им разрешается полностью или частично принимать значение NULL

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

Правило ссылочной целостности требует, чтобы каждое определенное (не NULL) значение атрибута внешнего ключа существовало также в отношении, для которого данный атрибут является первичным ключом.

Пример.

БД включает два взаимосвязанных отношения:

STUD (Ном_зач_книжки, ФИО, Адрес);

SES (Ном_зач_книжки, Предмет, Дата, Оценка)

При удалении записи, содержащeй сведения о студенте из отношения stud, в отношении ses появятся записи, не связанные ни с одним студентом – происходит нарушение целостности базы данных.

Поддержка ссылочной целостности также требует, чтобы система предотвращала любые попытки создать кортеж в отношении SES, содержащий сведения о сдаче сессии студентом с атрибутом Ном_зач_кн до тех пор, пока в отношении STUD не будет создан кортеж, содержащий сведения об этом студенте. С другой стороны отношение stud может содержать кортежи со сведениями о студентах, которые еще не сдали сессию.

Как правило, определение условия целостности данных осуществляется при установлении взаимосвязи между главным и подчиненным отношениями:

Возможны следующие стратегии:

1. Запрещение. Согласно данной стратегии, налагается запрет на все изменения первичного ключа, если существуют ссылающиеся на него внешние ключи.

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

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

Связывание таблиц реляционной базы данных

При проектировании реальных БД информацию обычно размещают в нескольких таблицах. Связывание данных различных таблиц друг с другом осуществляется с помощью значений атрибутов. В реляционных СУБД для указания связей таблиц производят операцию их связывания.

Многие СУБД при связывании таблиц автоматически выполняют контроль целостности вводимых в базу данных в соответствии с установленными связями. В конечном итоге это повышает достоверность хранимой в БД информации.

Между двумя таблицами в общем случае могут устанавливаться следующие связи.

- один-к-одному (1:1);

- один-ко-многим (1:М).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: