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

Пример

производство: изготовленная_деталь является производство: деталь.

производство: купленная_деталь является производство: деталь.

(для всех *)

(если существует (производство: изготовленная_деталь): I

тогда существует (производство: деталь): I).

(для всех *)

(если существует (производство: купленная_деталь): I

тогда существует (производство: деталь): I).

(для всех *)

(не (существует (производство: изготовленная_деталь): I,

существует (производство: купленная_деталь): I)).

(для всех *)

(если существует (производство: деталь): I

тогда     существует (производство: изготовленная_деталь): I

или существует (производство: купленная_деталь): I).

(для всех *)

(если      представитель ([изготовленная_деталь, купленная_деталь], E),

существует (производство: E): I1,

существует (производство: E): I2

тогда (для некоторых D)

((производство: деталь): I1 имеет тип_детали: D,

(производство: деталь): I2 имеет тип_детали: D)).

(для всех *)

(если      (производство: деталь): I1 имеет тип_детали: D,

(производство: деталь): I2 имеет тип_детали: D,

представитель ([изготовленная_деталь, купленная_деталь], E),

существует (производство: E): I1

тогда существует (производство: E ): I2).

Б.4.2.8 Первичный и альтернативный ключ

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

Ч1. Для каждого представления, v, в множестве представлений, и для каждой сущности, e, в v, где e имеет атрибуты первичного ключа p1, p2, ..., pn и альтернативных ключей от 1 до m, состоящих из атрибутов

a11, a12, ..., a1n1

a21, a22, ..., a2n2

...

am1, am2, ..., amnm

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

Ч1.1. Добавьте для первичного ключа правило уникальности

(для всех *)

(если      ( v: e ): I1 имеет p1: P1,

( v: e ): I1 имеет p2: P2,

...

( v: e ): I1 имеет pn: Pn,

( v: e ): I2 имеет p1: P1,

( v: e ): I2 имеет p2: P2,

...

( v: e ): I2 имеет pn: Pn

тогда     I1 = I2 )

к теории. (Правило о том, что первичные ключи не могут быть нулевыми, объявлено, как правило метамодели).

Ч1.2. Добавьте правило уникальности для каждого альтернативного ключа. Для 1≤i≤m, добавьте правило

(для всех *)

(если      ( v: e ): I1 имеет ai1: A1,

( v: e ): I1 имеет ai2: A2,

...

( v: e ): I1 имеет aini: Ani,

( v: e ): I2 имеет ai1: A1,

( v: e ): I2 имеет ai2: A2,

...

( v: e ): I2 имеет aini: Ani

тогда     I1 = I2 )

к теории.

Пример

Для компании Телекоммуникаций сущность покупная_деталь является результатом следующих аксиом.

(для всех *)

(если      ( производство: покупная_деталь): I1 имеет имя_покупной_детали: P1,

(производство: покупная_деталь): I2 имеет имя_покупной_детали: P1,

тогда     I1 = I2).

(для всех *)

 (если     (производство: покупная_деталь): I1 имеет стандартный_№_производителя: A1,

(производство: покупная_деталь): I1 имеет id_производителя_детали: A2,

(производство: покупная_деталь): I2 имеет стандартный_№_производителя: A1,

(производство: покупная_деталь): I2 имеет id_производителя_детали: A2,

тогда     I1 = I2).

Б.4.2.9 Внешний ключ

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

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

е1 – родитель

е2 – потомок

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

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

p1, p2, ..., pn – атрибуты первичного ключа e1

f1, f2, ..., fn – атрибуты внешнего ключа e2

и для 1≤ i≤n, fi является pi или ролевым именем для pi, сделайте следующее.

В1.1. Добавьте правило о том, что потомок имеет значения атрибутов внешнего ключа тогда и только тогда, когда потомок соотносится с родителем.

(для всех *) ( (для некоторых I ) ( ( v: e2 ): J имеет n2: I )

если

(для некоторых F1, F2, ..., Fn )

( ( v: e2 ): J имеет f1: F1,

( v: e2 ): J имеет f2: F2,

...

( v: e2 ): J имеет fn: Fn ) )

к теории.

В1.2. Добавьте правило о том, что если потомок имеет значения для всех внешних ключей и имеет родителя, тогда имеет значения первичного ключа и значения внешнего ключа соотносятся со значениями первичного ключа:

(для всех * ) ( если ( v: e2 ): J имеет n2: I,

( v: e2 ): J имеет f1: F1,

( v: e2 ): J имеет f2: F2,

...

( v: e2 ): J имеет fn: Fn

тогда ( для некоторых P1, P2, ..., Pn )

( ( v: e1 ): I имеет p1: P1,

F1 → P1,

( ( v: e1 ): I имеет p2: P2,

F2 → P2,

...

( ( v: e1 ): I имеет pn: Pn,

Fn → Pn ) )

к теории.

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

е1 – родовая сущность

е2 – категория е1

p1, p2, ..., pn – атрибуты первичного ключа e1

f1, f2, ..., fn – атрибуты первичного ключа e2

и для 1≤ i≤n, fi является pi или ролевым именем для pi, добавьте правило

(для всех *) ( если существует          ( v: e2 ): I,

( v: e2 ): I имеет f1: F1,

( v: e1 ): I имеет p1: P1,

( v: e2 ): I имеет f2: F2,

( v: e1 ): I имеет p2: P2,

...

( v: e2 ): I имеет fn: Fn,

( v: e1 ): I имеет pn: Pn

тогда

F1 → P1,