Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 700276.doc
Скачиваний:
11
Добавлен:
01.05.2022
Размер:
1.94 Mб
Скачать

3.2. Целостность данных

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

Каждое отношение обладает хотя бы одним возможным ключом. Один из них принимается за первичный ключ. При выборе первичного ключа следует отдавать предпочтение несоставным ключам или ключам, составленным из минимального числа атрибутов. Нежелательно также использовать ключи с длинными текстовыми значениями (предпочтительнее использовать целочисленные атрибуты). Так, для идентификации работника можно использовать либо уникальный табельный номер или номер паспорта, либо набор из фамилии, имени, отчества и номера отдела.

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

Теперь поговорим о внешних ключах. Стоит иметь в виду, что если отношение С связывает отношения А и В, то оно должно включать внешние ключи, соответствующие первичным ключам отношений А и В, что представлено на рис. 3.7. Таким образом, при рассмотрении проблемы выбора способа связи отношений в БД возникает вопрос о том, каковы же должны быть внешние ключи. При этом для каждого внешнего ключа необходимо решить проблему, связанную с возможностью (или невозможностью) появления во внешних ключах неопределенных значений (NULL-значений - значений атрибута для отсутствующей информации). Другими словами, может ли существовать некоторый кортеж в отношении, для которого неизвестен кортеж в связанном с ним отношении.

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

- операция каскадируется - то есть удаление кортежей в отношении приводит к удалению соответствующих кортежей в связанном отношении. Например, удаление информации о фамилии, имени и т. п. сотрудника в одном отношении приводит к удалению информации о его заработной плате в другом;

Рис. 3.7. Внешние ключи

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

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

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

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

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