длинными текстовыми значениями (предпочтительнее использовать
целочисленные атрибуты). Так, для идентификации студента можно
использовать либо уникальный номер зачетной книжки, либо набор из
фамилии, имени, отчества, номера группы и, может быть, дополнительных
атрибутов, так как не исключено появление в группе двух студентов с
одинаковыми фамилиями, именами и отчествами. Не допускается, чтобы
первичный ключ отношения (любой атрибут, участвующий в первичном
ключе) принимал неопределенное значение (Null-значение). Иначе возникнет
противоречивая ситуация: появится не обладающий индивидуальностью
кортеж отношения (экземпляр сущности). По тем же причинам необходимо
обеспечить уникальность первичного ключа.
Сейчас можно сформулировать условия необходимости выбора внешних
ключей:
1. Если сущность С связывает сущности А и В, то она должна включать
внешние ключи, соответствующие первичным ключам сущностей А и В.
2. Если сущность В обозначает сущность А, то она должна включать внешний
ключ, соответствующий первичному ключу сущности А.
С понятием внешнего ключа реляционная модель связывает правило
целостности по ссылкам: База данных не должна содержать несогласованных
значений внешних ключей. Другими словами, правило утверждает, что если В
ссылается на А, то А должно существовать.
Правило целостности по ссылкам позволяет поддерживать базу данных в
корректном состоянии. Чтобы такое состояние сохранилось, надо либо
запретить любые операции, приводящие к некорректному состоянию, либо
разрешить такие операции, но выполнить некоторые компенсирующие
действия. Для каждого внешнего ключа необходимо ответить на два вопроса:
1. Что должно случиться при попытке удалить объект ссылки внешнего ключа
(например, отдел, в котором числятся сотрудники)?
2. Что должно случиться при попытке обновить потенциальный ключ, на
который ссылается внешний ключ (например, изменить номер отдела)?
В общем случае существует по меньшей мере две возможности: