Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Проектирование реляционных баз данных с использ...doc
Скачиваний:
7
Добавлен:
13.11.2019
Размер:
185.34 Кб
Скачать

Ограничения целостности и язык ocl

Как уже отмечалось, в диаграммах классов могут указываться ограничения целостности, которые должны поддерживаться в проектируемой БД. В UML допускаются два способа определения ограничений: на естественном языке и на языке OCL. На рис. 10.13 показана простая диаграмма классов Студент и Университет с ограничением, выраженным на естественном языке.

Рис. 10.13.  Ограничение, выраженное на естественном языке

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

Общая характеристика языка ocl

Более точный и лаконичный способ формулировки ограничений обеспечивает язык OCL (Object Constraints Language). Вот общая характеристика этого языка.

Из языка UML 1) в OCL заимствованы, в первую очередь, следующие концепции:

  • класс, атрибут, операция ;

  • объект (экземпляр класса );

  • ассоциация ;

  • тип данных (включая набор предопределенных типов Boolean, Integer, Real и String);

  • значение (экземпляр типа данных).

Для понимания языка OCL существенны определяемые в UML традиционные для объектных моделей данных различия между объектом некоторого класса и значением некоторого типа:

  • объект обладает уникальным идентификатором и может сравниваться с другими объектами только по значению идентификатора; следствием этого является возможность определения операций над множествами объектов в терминах их идентификаторов 2) ;

  • объект может быть ассоциирован через бинарную связь 3) с другими объектами, что позволяет определить в OCL операцию перехода от данного объекта к связанным с ним объектам;

  • в то же время значение является "чистым значением" в том смысле, что:

    • при сравнении двух значений проверяются сами эти значения;

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

В дополнение к скалярным типам данных, заимствованным из UML, в OCL предопределены структурные типы, которые являются разновидностями типов коллекций (collection):

  • математическое множество (set), неупорядоченная коллекция, не содержащая одинаковых элементов;

  • мультимножество (bag), неупорядоченная коллекция, которая может содержать повторяющиеся элементы-дубликаты;

  • последовательность (sequence), упорядоченная коллекция, которая может содержать элементы-дубликаты. 4)

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

Язык OCL предназначен, главным образом, для определения ограничений целостности данных, соответствующих модели, которая представлена в терминах диаграммы классов UML. OCL может применяться для определения ограничений, описывающих пред- и постусловия операций классов, и ограничений, представляющих собой инварианты классов. При проектировании реляционных баз данных возможность определения пред- и постусловий операций вряд ли может оказаться существенной 5). С точки зрения определения ограничений целостности баз данных более важны средства определения инвариантов классов.