Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Локальное правило сущности
Объявление сущности определяет область ее экземпляров. В нее входят все экземпляры сущности, то есть все возможные наборы значений атрибутов сущности. По умолчанию они являются корректными, что не всегда соответствует нашим потребностям. Например, для сущности, выражающей самолет, не корректно наличие в области экземпляров двух самолетов с одинаковыми бортовыми номерами. Или, допустим, следует исключить из этой области все самолеты, имеющие год выпуска до указанного. Приведенные примеры устанавливают ограни чения на область экземпляров сущности, делая некоторые наборы значений атрибутов (экземпляры сущности) некорректными. Указанные ограничения на область экземпляров определяются с помощью локальных правил сущности. Локальные правила сущности касаются значений их атрибутов и определяют те значения или их комбинации, которые требуются для корректности экземпляра сущности. Экземпляр считается корректным, когда им соблюдены все локальные правила сущности. В EXPRESS есть два вида локальных правил: правила уникальности и правила области значений. ляры сущности.На представленном справа примере показана сущность «citizen» (гражданин), имеющая атрибуты «name» (имя), «passport_id» (номер паспорта) и «age» (возраст). Необходимо, чтобы номер паспорта был уникален для всех граждан. В таком случае следует определить правило уникальности, касающееся атрибута «passport_id». Оно задано в конструкции «UNIQUE» и имеет необязательную метку. В нем указан атрибут, значения которого должны быть уникальными для всех экземпляров сущности. Если в правиле уникальности заданы сразу несколько атрибутов, то это значит, что комбинации значений всех экземпляров сущности уникальны. Правила уникальности устанавливают ограничения на значения атрибутов для всех экземпляров сущности сразу, при этом значения атрибутов для отдельного экземпляра не важны. Правила области значений Другим видом ограничений на область экземпляров сущности может быть сокращение возможных значений атрибутов отдельного экземпляра. Подобные ограничения, затрагивающие конкретные экземпляры, задаются в EXPRESS с помощью правил области значений сущности. По своим характеристикам эти правила аналогичны правилам области значений определяемых типов данных. Названные правила выражают условия вхождения некоторого экземпляра в область экземпляров сущности. В рамках сущности могут задаваться несколько таких правил, каждое из которых представляет собой одно из условий. Условием выполнения правила является присутствующее в нем выражение, определяющее либо значение логического типа данных (например FALSE (ложь), TRUE (истина) или UNKNOWN (неопределенность)), либо неопределенное значение «? ». Правило не нарушается, если выражение дало в результате любое значение, кроме FALSE. В выражении обязательно должны присутствовать ссылки на ключевое слово SELF, обозначающее проверяемый экземпляр сущности, и/или ссылки на атрибуты сущности. Экземпляр входит в область экземпляров сущности, если не нарушено ни одно из правил области значений. 78 УПРАВЛЕНИЕ ЖИЗНЕННЫМ ЦИКЛОМ ПРОДУКЦИИ Все правила области значений сущности задаются в единой конструкции «WHERE». На приведенном примере у сущности «citizen» определено правило области значений, имеющее условие, по которому значения атрибута «age» для всех экземпляров сущности должны быть больше либо равны 16. Правило содержит необязательную метку «wrl», а также выражение для проверки: «age Мб». Правило области значений может одновременно затрагивать несколько атрибутов сущности.
Наследование В языке EXPRESS сущность определяется как класс объектов реального мира с общими характеристиками. Таким классом, например, могут быть люди, причем каждый человек имеет имя, фамилию и неотрицательный возраст. Кроме того, существуют подклассы, где объекты помимо характеристик класса обладают еще некоторым набором характеристик, принадлежащих только данному подклассу. Например, для сущности «человек» может существовать подкласс «работник», который является человеком и обладает всеми свойствами человека, но имеет и специфические свойства, скажем, должность. Должность есть не у каждого человека, а только у тех, кто работает. Таким образом, экземпляры сущности «работник» составляют подмножество экземпляров сущности «человек». Поскольку «человек» и «работник» обладают частично совпадающими свойствами, то в информационной модели при их объявлении по отдельности пришлось бы дублировать все обозначения свойств их сущностей. Для того чтобы избежать этого, в EXPRESS введено отношение наследования. Оно устанавли- вает связь между сущностями, при которой области экземпляров одних сущностей, называемых потомками, становятся подмножествами областей экземпляров других сущностей (предков). Другими словами, потомки являются специализа циями предков. Тогда «работник» будет потомком сущности «человек». Это позволяет объявлять свойства только один раз: все общие свойства для человека и работника определяются в сущности «человек», а специфические для работника — в сущности «работник». В приведенном примере присутствуют две сущности: «person» (человек) и «employee» (работник). Между ними установлено отношение наследования, то есть область экземпляров сущности «employee» (потомка) является подмножеством области экземпляров сущности «person» (предка). Предок имеет три атрибута: «firstjiame» (имя), «last_name» (фамилия) и «age» (возраст), а также одно ограничение, определяющее, что значение «age» неотрицательное. Потомки получают (наследуют) все свойства (атрибуты и ограничения) предков. В данном случае сущность «employee» наследует три атрибута и одно ограничение сущности «person». Кроме того, потомки могут переопределять некоторые унаследованные свойства, а также добавлять к ним новые. Сущность «employee» не переопределяет никаких родительских свойств, но добавляет два новых: атрибут «title» (должность) и ограничение, обозначающее, что значение атрибута «age» должно быть не меньше 16. При этом потомок все равно остается подмножеством предка, а экземпляр потомка (работник) всегда будет являться и экземпляром предка (человеком). Существуют два способа задания отношения наследования: путем спецификации потомков в объявлении предка или путем спецификации предков в объявлении потомка. В данном случае применяется второй способ: в объявлении потомка (сущности «employee») используется конструкция SUBTYPE OF, предназначенная для спецификации предка. После нее в скобках перечисляются все предки данной сущности (здесь только сущность «person»). Помимо простого наследования, показанного на примере, язык EXPRESS допускает множественное наследование, в котором участвуют более двух сущностей. Интерфейс между схемами Как уже говорилось, одним из преимуществ EXPRESS является способность задавать большие и сложные информационные модели, сохраняя, тем не менее, возможность их восприятия человеком. Для достижения этого EXPRESS позволяет разбивать крупные модели на более мелкие (каждая из них выражается отдельной схемой). Целостность большой модели сохраняется, так как в EXPRESS существует инструмент для задания связей между схемами, с помощью которого можно «соединять» несколько схем в единую информационную модель. Связь двух схем задается путем спецификации интерфейса между ними. Ин терфейс между схемами предназначен для того, чтобы строительные блоки одной схемы были видимы в другой и могли использоваться в качестве ее строительных блоков. Кроме интерфейса для целой схемы можно создать интерфейс для ее отдельных блоков, в этом случае во второй схеме будут видимы только 80 УПРАВЛЕНИЕ ЖИЗНЕННЫМ ЦИКЛОМ ПРОДУКЦИИ
Рис. 33. Пример реализации интерфейса между схемами в языке EXPRESS. отдельные блоки первой. Та схема, чьи строительные блоки заимствуются, обозначается как «чужая схема» по отношению к данной. Есть два типа интерфейсов между схемами: использование (USE) и ссылка (REFERENCE). Рассмотрим приведенный выше рис. 33. Пусть существуют схема «people» (люди), содержащая сущность «person» (человек), а также два варианта схемы «футбол», включающие сущность «player» (игрок). В первом варианте («football_use») объявлен интерфейс использования «people». Это дает возможность использовать строительные блоки схемы «people» в «footballuse» и объявить сущность «player» в качестве потомка сущности «person». Во втором случае («football_ reference») назван интерфейс ссылки, представляющий собой ограниченный вариант интерфейса использования. Основная разница между двумя типами интерфейсов состоит в возможности применения сущностей чужой схемы. При интерфейсе использования такие сущности являются полноправными членами данной схемы и могут участвовать, например, в отношениях наследования (сущность «person»). Интерфейс ссылки задействует сущности чужой схемы только в качестве представления атрибутов сущностей данной схемы. В нашем примере сущность «person» схемы «people» используется в объявлении атрибута «who_is». Интерфейс между схемами задается с помощью ключевых слов USE или REFERENCE, после которых следует ключевое слово FROM, а за ним — имя и, если необходимо специфицировать интерфейс не ко всей схеме, а к отдельным ее компонентам, перечень компонентов чужой схемы. Пример информационной модели Далее рассмотрен пример небольшой информационной модели, задающей предметную область библиотеки. Данная модель состоит из двух схем: «people» (люди) и «library» (библиотека). 82 ENTITY author; firstname: STRING; middle_name: OPTIONAL STRING; lastname: STRING; UNIQUE url: first_name, last_name; END_ENTITY; END_SCHEMA; SCHEMA library; USE FROM people; — This schema uses another schema to represent a library CONSTANT start_year: INTEGER: = 1950; now: INTEGER: = 2002; ENDCONSTANT; TYPE months = ENUMERATION OF (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec); ENDJTYPE; TYPE journalnumber = INTEGER; WHERE positive: SELF > 0; END_TYPE; TYPE issuevariants = SELECT (months, joumalnumber); END_TYPE; ENTITY issue; name: STRING; year: INTEGER; pages: INTEGER; value: INTEGER; DERIVE price: REAL ': = pages*value; WHERE wrl: (year > = start_year) AND (year < = now); wr2: pages > 0; ENDENTITY; ENTITY book SUBTYPE OF (issue); bookauthors: SET [1:? ] OF author; END_ENTITY; ENTITY journal SUBTYPE OF (issue); journalissue: issuevariants; END_ENTITY; ENDSCHEMA. 83 УПРАВЛЕНИЕ ЖИЗНЕННЫМ ЦИКЛОМ ПРОДУКЦИИ В схеме «people» определена единственная сущность «author» (автор), которая используется для построения схемы «library». «AuthoD> имеет три явных атрибута: «firstname» (имя), «middle_name» (отчество) и «lastname» (фамилия); все они представлены строковым типом «STRING», а атрибут «middle_name» объявлен как необязательный (OPTIONAL). На область экземпляров сущности «author» наложено ограничение в виде правила уникальности «url», требующего, чтобы комбинации значений обоих атрибутов сущности были уникальными для всех экземпляров. Схема «library» использует строительные блоки схемы «people» через конструкцию «USE FROM». В «library» задано три сущности: «issue» (издание), «book» (книга) и «journal» (журнал), причем две последние являются потомками первой и наследуют все ее свойства. Сущность «issue» содержит четыре явных атрибута: «name» (название), «year» (год выпусках «pages» (количество страниц) и «value» (ценность издания; не путать с ценой). Кроме того, у нее есть один вычисляемый атрибут «price» (цена в денежном эквиваленте), значение которого выражено произведением значений атрибутов «pages» и «value». На область экземпляров сущности «issue» наложены два ограничения в виде правил области значений (WHERE-правил). Одно из них — «wr2» — требует, чтобы значение атрибута «pages» было больше нуля для каждого экземпляра сущности. Другое — «wrl» — чтобы атрибут «year» не был меньше минимального значения, определенного константой «start_year» (начальный год), но и не превышал максимального значения, выраженного константой «now» (текущий год). Последнее ограничение означает, что в библиотеке должны быть книги, выпущенные в определенный промежуток времени: в данном случае не ранее 1950 г., но и не позже 2002 г. Сущность «book» наследует все атрибуты и ограничения сущности «issue» и дополнительно определяет атрибут «bookauthors» (авторы книги), имеющий в качестве своей области значений множество экземпляров сущности «author». Это множество не допускает повторений, содержит по крайней мере один элемент и не ограничено сверху. Сущность «journal» наследует все атрибуты и ограничения сущности «issue» и дополнительно определяет атрибут «journal_issue» (выпуск журнала). Для задания области значений этого атрибута в схеме определены сразу три поименованных типа. Предполагается, что выпуск журнала может быть указан либо порядковым номером, либо месяцем. Для представления данных вариантов в схеме обозначены два поименованных типа: соответственно «journal_numbeD> (номер журнала; объявлен на основе простого типа «INTEGER» с дополнительным требованием неотрицательности значений) и «months» (месяцы; определен на основе составного типа «перечисление» (ENUMERATION), содержащего обозначения всех двенадцати месяцев года). Кроме того, задан тип «issuevariants» (варианты обозначения выпуска), который как раз и представляет область значений атрибута «journalissue» и выражен составным типом «выбор» (SELECT) на основе типов «joumal_number» и «months». В информационной модели также присутствуют комментарии: встроенный находится в схеме «people», а хвостовой приведен в схеме «library». 84 Помимо основной текстовой формы язык EXPRESS имеет и графическое пред ставление. Оно называется EXPRESS - G и определено в том же самом разделе STEP, что и сам язык — ISO 10303-11. EXPRESS-G поддерживает не все компоненты языка EXPRESS, а лишь некоторое их подмножество, в которое включены типы данных, сущности, связи между сущностями (в том числе и отношение наследования) и интерфейсы между схемами. EXPRESS-G не обладает возможностями для представления ограничений на области значений типов и области экземпляров сущностей, а также не поддерживает спецификацию алгоритмов EXPRESS (то есть функций и процедур) и глобальных правил. Графическое представление EXPRESS-G состоит из знаков, с помощью которых выражается информационная модель. В EXPRESS-G существует три типа знаков: > знаки определения; ^ знаки связи; ^ знаки композиции. Знаки определения Знаки определения EXPRESS-G используются для обозначения поддерживаемых понятий языка EXPRESS: простых, составных и определяемых типов данных, сущностей и схем. Простые типы языка EXPRESS указываются прямоугольниками, у которых правая сторона представлена двойной линией. Внутри прямоугольника находится имя простого типа. Составные типы языка EXPRESS обозначаются пунктирными прямоугольниками, у которых боковые стороны ^левая для типа «SELECT» и правая для «ENUMERATION») выражены двойной линией. Внутри прямоугольника написано имя типа. EXPRESS-G не содержит средств для представления элементов типа «ENUMERATION», а элементы типа «SELECT» показываются путем обозначения связи между ними и типами или сущностями, участвующими в их формировании. Определяемые типы языка EXPRESS показаны пунктирным прямоугольником, содержащим внутри имя типа. Представление сущности в EXPRESS-G аналогично представлению определяемого типа, однако прямоугольник обозначается обычными линиями. УПРАВЛЕНИЕ ЖИЗНЕННЫМ ЦИКЛОМ ПРОДУКЦИИ Наконец, EXPRESS -схема обозначается прямоугольником, который разделен на две части. В верхней находится имя схемы, а нижняя часть остается пустой. Знаки связи Знаки связи EXPRESS-G предназначены для обозначения различных типов связей между строительными блоками EXPRESS-схемы. Они представлены линиями, соединяющими знаки определения. Вид линии задает конкретный тип связи:
Пунктирная линия обозначает связи между сущностью и ее необязательным атрибутом, а также интерфейс типа «ссылка» (REFERENCE) между двумя схемами. Жирная линия показывает связи между сущностями в рамках отношения наследования. Она соединяет сущности-предков с сущностями-потомками. Простая линия демонстрирует в EXPRESS-G все остальные типы связи. Каждая связь в информационной модели двунаправленная, но одно из направлений является основным и обозначается кружком на конце линии. Например, если сущность А имеет в качестве представления своего атрибута сущность В, то основным будет направление от А к В. Таким образом, кружок находится на стороне сущности В. В отношении наследования главным является направление от предка к потомку. Поскольку EXPRESS-схемы бывают достаточно большими, то и представляющие их диаграммы на языке EXPRESS-G могут занимать много места и не умещаться на одной странице. В этом случае связанные между собой строительные блоки модели часто оказываются на различных страницах. Знаки композиции используются для задания ссылок между страницами в EXPRESS-G-модели и для спецификации интерфейса между двумя EXPRESS-схемами. В ссылках между страницами знаки связи, которые должны соединять строительные блоки на различных страницах, заканчиваются скругленными прямоугольниками. Такие знаки композиции присутствуют на обеих страницах. Рассмотрим пример диаграммы, занимающей две страницы. Рис. 35. Пример диаграммы с использованием знаков композиции в языке EXPRESS. При спецификации интерфейса между схемами в качестве знака композиции выступает скругленный прямоугольник, заключенный в обычный прямоугольник. Для интерфейса типа USE внешний прямоугольник задается обычной линией, а для интерфейса типа REFERENCE — пунктирной. Внутри скругленного прямоугольника находятся имя чужой схемы и имя строительного блока, с которым устанавливается интерфейс. Данный знак композиции используется, когда какая-либо сущность данной схемы имеет в качестве представления своего атрибута сущность чужой схемы (например, сущность «line» и ее атрибут «start» на рис. 35). 86 УПРАВЛЕНИЕ ЖИЗНЕННЫМ ЦИКЛОМ ПРОДУКЦИИ Диаграмма уровня сущности Диаграммы уровня сущности предназначены для спецификации отдельной EXPRESS -схемы. Они содержат строительные блоки, присутствующие в схеме, то есть типы данных и сущности, а также связи между ними. На рис. 36 представлена EXPRESS-G-диаграмма уже рассмотренной (только в текстовом виде) схемы «library». Три сущности, объявленные в схеме «library», показаны соответствующими знаками определения. Отношение наследования между ними обозначено жирной линией, направленной от сущности «issue» (предок) к сущностям «book» и «journal» (потомки). Наличие атрибутов у сущностей схемы выражено соответствующими знаками (простыми линиями), связывающими сущность и тип, представляющий область значений ее атрибута. Знак связи имеет метку, описывающую имя атрибута. У вычисляемого атрибута «price» сущности «issue» есть дополнительная метка «DER». Ограничений на область экземпляров нет. Область значений атрибута «book_authors» сущности «book» определена в другой схеме, что отмечено соответствующим знаком композиции, обозначающим имя схемы «people» и имя сущности «author». Факт, что сам атрибут представлен множеством, указан меткой знака связи «S[ 1:? ]»(S—от слова SET, то есть множество). Обозначения других агрегированных типов: массив — A (ARRAY); список — L (LIST); мультимножество — В (BAG). Атрибут «journal_issue» сущности «journal» представлен определяемым типом «issue_variants», заданным на другой странице модели, что показано соответствующим знаком композиции. Тип «issue_variants» возник на основе составного типа «SELECT» (это отмечено пунктирным прямоугольником с двойным левым краем), в область значений которого входят составной тип «ENUMERATION» (представлен определяемым типом «months») и определяемый тип «journalnumber», заданный на основе простого типа «INTEGER». Диаграмма уровня схемы Диаграммы уровня схемы используются для представления нескольких EXPRESS-схем и связей между ними. Они состоят только из самих схем, а также интерфейсов между схемами и не включают содержимое схем (сущности, типы и т. д.). Связи между схемами представлены знаками связи EXPRESS-G, причем тип «USE» обозначается обычной линией, a «REFERENCE»—пунктирной. Основным является направление связи между схемами от использующей схемы к используемой. Если интерфейс определен не для всех строительных блоков схемы, а лишь для некоторых из них, то их имена пишутся около стрелки, указывающей на связь. Ея рис. 37 дан пример, содержащий три схемы: «geometry», «top» и «bottom». Две последних имеют интерфейс с первой. Схема «top» определяет интерфейс типа «использование» со всей схемой «geometry», а схема «bottom» — для сущностей «curve» и «point», объявленных в схеме «geometry», а также интерфейс ссылки для сущности «surface». Рис. 37. Пример диаграммы уровня схемы. |
Последнее изменение этой страницы: 2019-03-29; Просмотров: 402; Нарушение авторского права страницы