Комплексное определение для информационного моделирования (IDEF1X), страница 43

Поле DomainRule может быть пропущено.  Если упомянуто, оно должно быть списком значений member( [ v1, v2, ..., vn ], R )

или предлагать минимальное значение

lowValue ² R,

или максимальное

R ² highValue

или набор

lowValue ² R, R ² highValue.

Домен-потомок

D2. Домен, который является подтипом другого домена, называется потомком. Для каждого домена-потомка, d, где d подтип домена t, выполняется следующее

D2.1. Описываем связь наследования

d isa t

d isa t верно в том случае, когда каждая сущность d одновременно является сущностью t.

D2.2.  Добавим ещё одно правило

( for all * ) ( exists d: R ifdef   exists t: R, DomainRule )

exists d: R верно, если d: R – сущность домена d.

Как и с доменом-предком, поле DomainRule может отсутствовать.

Пример

Для  TcCo, результирующее правило будет включать следующее

exists name: R ifdef not R = null, character( R ).

exists part_name: R ifdef exists name: R.

exists make_part_name: R ifdef exists part_name: R.

exists part_type: R ifdef not R = null, character( R ), [ m, b ] has member: R.

exists quantity: R ifdef not R = null, numeric( R ), 0 ² R.

part_name isa name.

make_part_name isa part_name.

В соответствие с правилами для TcCo, следующее верно для примеров. 

exists part_type: m.

exists name: top.

exists part_name: top.

make_part_name: top → part_name: top.

make_part_name: top → name: top.

not exists part_type: s.

not name: top → part_name: top.

not qty_on_hand: 3 = standard_price: 3.

B.4.2.4 Атрибут

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

A1.  For Для каждого представления v, и каждой сущности e, в v, где у e есть атрибуты a1, a2, ..., an, выполняется следующее для 1 =< i =< n.

A1.1  Декларируется сущность

viewEntityAttribute( ( v: e ): ai )

A1.2.  Добавляется свойство ai

( for all * ) ( ( v: e ): I has ai: ( ai: Ai ) ifdef

  v_e( I, A1, A2, ..., An ),

  not Ai = null )

Выражение v: e – специфичная сущность, ( v: e ): I – экземпляр специфичной сущности, ai атрибут экземпляра специфичной сущности, и ai: Ai - домен.  Выражение( v:e): I has ai: ( ai: Ai ) означает, что у экземпляра специфичной сущности ( v: e ): I есть атрибут ai со значением ai: Ai.  Отметим, что null не рассматривается как значение, он рассматривается как отсутствие любого значения. Если выражению v_e сопоставлено значение null поля “value”  атрибута ai для сущности I, тогда ( v: e ): I has ai: X ложно для всех X.

Предикат v_e это значение, не сущность, в отличие от обычного способа показать пример сущности таблицы. Правило для описания свойств создает экземпляры доменов из домена ai и значения Ai. Атрибут домена точно показывает, что результат ai: Ai – это действительно экземпляр домена.

A1.3.  Если ai не допускает пустого значения, добавим следующее правило

( for all * ) ( if exists ( v: e ): I

then ( for some A ) ( ( v: e ): I has ai: A ) )

A2.  Добавим правило для того, чтобы экземпляр сущности мог быть 1:1 с составным значением других позиций

( for all * ) ( if exists ( v: e ): I1, exists ( v: e ): I2

 then       I1 =I2   

iff

( ( v: e ): I1 has a1: A iff ( v: e ): I2 has a1: A ),

( ( v: e ): I1 has a2: A iff ( v: e ): I2 has a2: A ),

...

( ( v: e ): I1 has an: A iff ( v: e ): I2 has an: A ) )

Правило 1:1 схватывает идею моделирования, когда две сущности считаются разными только тогда, когда они отличаются хотя бы одном атрибутом.

Пример

Для  TcCo, результирующее правило будет включать следующее

viewEntityAttribute( ( production: part ): part_name ).

( for all * ) ( ( production: part ): I has part_name: ( part_name: A1 ) ifdef

production_ part( I, A1, A2, A3, A4, A5 ),  

not A1 = null )

( for all * ) ( if exists ( production: part ): I

then ( for some A ) ( ( production: part ): I has part_name: A ) ).

В соответствие с правилами для TcCo, следующее верно для примеров. 

( for some PN ) ( ( production: part ): i2 has part_name: PN, 

PN has value: top ).

not ( for some BP ) ( ( production: part ): i1 has backup_price: BP ).

Б.4.2.5 Идентифицирующие отношения связи

В IDEF1X сущность имеет связи только внутри представления. Представление представлено графически в виде диаграммы, показывающей сущности в представлении и их связи. Если имеется множество представлений (например, множество диаграмм), следующая процедура создает правила в теории, которые соотносятся с идентифицирующими связями в представлении.

С1. Для каждого представления v в множестве представлений и каждой сущности е1 и сущности е2 (не обязательно различающихся) в v с идентифицирующей связью между е1 и е2, где:

е1 – родитель

е2 – потомок

n1 – имя связи от е1 к е2 (называется так же, как е2, если имя не указано)

n2 – имя связи от е2 к е1 (называется так же, как е1, если имя не указано)

сделайте следующее.

С1.1. Добавьте правила ограничения домена для предиката связи

   (для всех *) ( если v_e1_n1_n2_e2 (I,J)

                           тогда существует (v: e1): I, существует (v;e2): J)

к теории. Правило ограничивает первое положение отношения в экземпляре родителя и ограничивает второе положение в экземпляре ребенка.

С1.2. Объявите участвующие свойства сущностей путем добавления правил

участвует в представлении сущности ((v: e1): n1)

и

участвует в представлении сущности ((v: e2): n2)

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

С1.3. Добавьте правила на свойства участников

   (для всех *) (v: e1): I имеет n1: J, если определено v_e1_n1_n2_e2(I,J)).

и

   (для всех *) (v: e2): J имеет n2: I, если определено v_e1_n1_n2_e2(I,J)).

к теории. В данной интерпретации, (v: e1): I имеет n1: J истинно, если экземпляр представления сущности (v: e1): I имеет в качестве свойства участника значения n1 идентификатор J другого участника.

С1.4. Ограничьте каждого потомка одним родителем, добавив правило