Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
uch_pos.docx
Скачиваний:
213
Добавлен:
20.03.2016
Размер:
423.96 Кб
Скачать

4.1.11. Моделирование ограничений

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

Ключи

В ODL ключ класса – это такое множество атрибутов А, что при наличии в данном классе двух различных объектов 01 и 02 они не могут иметь идентичных значений для любого атрибута в ключе К.

В ODL один или несколько атрибутов описываются как ключи класса с помощью ключевого слова key или keys (любого из них), за которым указываются атрибуты, формирующие ключ. Если в ключе больше одного атрибута, список атрибутов заключается в круглые скобки. Описание ключа должно стоять непосредственно за описанием интерфейса, перед открывающей фигурной скобкой или любыми атрибутами либо связями. Само описание ключа заключается в круглые скобки.

Пример 4.11. Чтобы показать, что множество, состоящее из атрибутов фамилия, имя, отчество является ключом для класса Мастер, строка 7 в примере 4.4 заменяется на:

interface Мастер

(key (фамилия, имя, отчество)) { };

Вместо key можно применять keys даже если описывается только один ключ.

Возможно, что ключами являются несколько множеств атрибутов. Тогда за словом keys можно поместить несколько ключей, разделенных запятыми. Обычно в ключах, имеющих множество атрибутов, список атрибутов должен быть заключен в круглые скобки, поэтому один ключ с несколькими атрибутами можно отличить от нескольких ключей, содержащих по одному атрибуту.

Пример 4.12. Чтобы проиллюстрировать ситуацию, в которой уместно иметь более одного ключа, рассмотрим класс Сотрудник. He будем описывать здесь все множество его атрибутов и связей, но предположим, что его атрибутами являются empID – идентификатор сотрудника и ssNo – номер страхового полиса. Тогда эти атрибуты можно описать как ключ:

(key empID, ssNo).

Поскольку список атрибутов здесь не заключен в скобки, в ODL это означает, что каждый из атрибутов сам является ключом. Если заключить в скобки пару (empID, ssNo), в ODL считается, что эти два атрибута вместе формируют один ключ. Из записи

(key (empID, ssNo))

следует именно то, что никакие два сотрудника не могут иметь один и тот же ID и один и тот же номер страхового полиса, хотя два сотрудника могут совпадать по одному из этих атрибутов.

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

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

Рассмотрим связь выполняется_в между Изделие и Цех в строке 6 примера 4.4. Разве такое возможно: объект класса Цех является значением выполняется_в, а самого этого объекта не существует? Ответ заключается в том, что в реализации ODL связь выполняется_в представлена указателем или ссылкой на данный объект и в какой-то момент времени этот объект удаляется из класса Цех. Тогда указатель становится висящим и больше не указывает на реальный объект.

Согласно ограничению ссылочной целостности объект, на который есть ссылка, должен существовать. Это ограничение можно ввести по-разному.

  1. Можно запретить удаление объекта, на который есть ссылка (в приведенном выше примере – цеха).

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

В дополнение к упомянутым условиям удаления требуется, чтобы при создании объекта "изделие" существующий объект "цех" был задан в качестве значения связи выполняется_в. При изменении этого значения новое значение также должно быть существующим объектом. Использование таких методов обеспечения ссылочной целостности связи – вопрос реализации БД, и в настоящем пособии мы не будем его обсуждать.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]