1. Для каждой сущности необходимо указать первичные ключи и неключевые атрибуты. Кроме того, для некоторых, возможно, понадобится задание альтернативных ключей и инверсных входов.
Полезным источником информации в этом случае может стать перечень требований к хранимой информации, приведенный в задании. Рассмотрим по очереди каждую из сущностей.
1.1. Сведения об агенте должны включать фамилию, инициалы и учетный номер агента – они и будут атрибутами сущности АГЕНТ. Будем считать, что учетный номер личного дела агента содержит только цифры, т.е. он не будет слишком большим и его можно использовать в качестве первичного ключа.
1.2. Сведения о клиенте должны состоять из его фамилии, имени, отчества и номера его паспорта. Очевидно, что они и будут атрибутами сущности КЛИЕНТ. Первичным ключом можно было бы выбрать номер паспорта, поскольку он однозначно идентифицирует любой из экземпляров этой сущности. Однако номер паспорта не является числом, т. к., кроме цифр, содержит и буквы, и, следовательно, для его хранения будет использоваться строка минимум из 13 символов, что не совсем удобно. Поэтому введет для каждого КЛИЕНТА уникальный номер: Код Клиента(CodClient, Number), который и будет первичным ключом. Атрибут Паспорт (номер паспорта клиента) можно сделать альтернативным ключом, чтобы обеспечить возможность быстрого поиска информации о договорах по его значениям, согласно заданию.
1.3. По тем же соображениям сущность ИМУЩЕСТВО будет содержать дополнительный атрибут – Код имущества (CodProp, Number),, который и будет первичным ключом.
1.4. Что касается сущности СТРАХОВОЙ ДОГОВОР, то часть атрибутов она унаследует от родительских сущностей и остается лишь добавить следующие: «Дата страхования», «Страховая сумма». Очевидно, что первичным ключом следует выбрать уникальный атрибут «Код договора» (Cod Number). Поскольку в задании сказано, что создаваемая система должна позволять вычислить денежный оборот за один или несколько дней, то полезно было бы сделать атрибут «дата сделки» инверсным входом, т. к. он довольно часто будет использоваться для доступа к данным.
1.5. Для сущностей СТРАХОВОЙ ФАКТОР, СТРАХОВАЯ УСЛУГА необходимо также добавить дополнительные атрибуты, Код фактора (CodFact, Number), Код услуги (CodServ, Number), которые и будут играть роль первичных ключей.
Для задания первичных ключей и атрибутов используется редактор атрибутов. Перейти в него можно, воспользовавшись всплывающим меню.
Для неидентифицирующей связи атрибуты первичного ключа родительской сущности мигрируют в состав неключевых компонентов родительской сущности.
Для задания альтернативных ключей следует воспользоваться редактором ключей. Переход в него осуществляется так же, как и в редактор атрибутов, но с помощью команды Key Group Editor. Общий вид этого редактора показан на рис. 2.1.
Рис. 2.1. Панель диалога редактора ключей
2. Для задания первичного ключа выделите строку Primary Key и с помощью стрелок переместите в окно Key Group Member соответствующий атрибут.
3. Для задания альтернативных ключей требуется добавить строки альтернативного ключей в окне Key Group. Для этого нажмите на кнопку New и выберите в открывшемся окне альтернативный ключ.
На этом процесс создания второго уровня логической модели завершается, а сама модель приобретает вид, представленный на рис 2.2.
Рис.2.2. Логическая модель с атрибутами
Контрольные вопросы
1. Что называется первичным ключом?
2. Назовите принципы, согласно которым формируется первичный ключ.
3. Что называется альтернативным ключом?
4. Что называется инверсионным входом?
5. В каком случае образуются внешние ключи?
6. Что такое модель данных, основанная на ключах?
7. В чем цель модели данных, основанной на ключах?
8. Назовите правила ссылочной целостности?
9. Что такое триггеры?