Нотация Entity Relation в тексте - PullRequest
2 голосов
/ 07 октября 2009

Существует ли стандартная (неграфическая) запись для отношений сущностей?

сейчас я использую свою собственную неряшливую запись:

  • Пользователь >> Фото, (1-много)
  • Пользователь> Профиль, (1-1 hasOne)
  • Профиль <Пользователь, (1-1 принадлежит) </li>
  • Фото << Пользователь, (много-1 принадлежит) </li>
  • Фото <> тег, (много-много)

Ответы [ 2 ]

5 голосов
/ 07 октября 2009

Почему бы не использовать то же, что в ER-диаграммах:

  • Пользователь 1-н фотографии
  • Пользователь 1-1 Профиль
  • Фотография n-1 User

и так далее. Но я никогда не слышал об официальном стандарте открытого текста.

4 голосов
/ 15 мая 2018

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

Во-первых, общий термин для описания мощности отношений между объектами - это «множественность».

Эта ассоциативная связь указывает, что (по крайней мере) один из двух связанных классов ссылается на другой. Это отношение обычно описывается как «А имеет В» (у кота-матери есть котята, у котят есть кота-матери).

Хотя в значительном числе источников также используется термин «количество элементов». Есть несколько хороших ответов о разнице в этом вопросе о Множественность против кардинальности . Я нашел это довольно кратким:

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

Кратность записи UML

UML кратность записи хорошо работает в тексте.

+--------------+--------+-----------------------------------------+
| Multiplicity | Option |               Cardinality               |
+--------------+--------+-----------------------------------------+
| 0..0         | 0      | Collection must be empty                |
| 0..1         |        | No instances or one instance            |
| 1..1         | 1      | Exactly one instance                    |
| 0..*         | *      | Zero or more instances                  |
| 1..*         |        | At least one instance                   |
| 5..5         | 5      | Exactly 5 instances                     |
| m..n         |        | At least m but no more than n instances |
+--------------+--------+-----------------------------------------+

Кажется, есть несколько вариантов этого:

  • Microsoft Реляционная запись

    +---------------------------------+---------------------+
    |          Multiplicity           |     Cardinality     |
    +---------------------------------+---------------------+
    | *                               | One to zero or more |
    | 1..*                            | One to one or more  |
    | 0..1                            | One to zero or one  |
    | 1                               | Exactly one         |
    | Two numbers separated by a dash | a range             |
    +---------------------------------+---------------------+
    
  • IBM в

    +------+--------------------+-------------------------------+
    | Rose | Software Architect |          Description          |
    +------+--------------------+-------------------------------+
    | n    | *                  | Unlimited number of instances |
    | 1    | 1                  | Exactly 1 instance            |
    | 0..n | *                  | 0 or more instances           |
    | 1..n | 1,,*               | 1 or more instances           |
    | 0..1 | 0..1               | 0 or 1 instances              |
    +------+--------------------+-------------------------------+
    
  • Smartdraw's Martin Style

Чэнь Стиль

Из то, что я прочитал Стиль Чена - это «оригинальный формат». Я обычно вижу это в тексте как:

+----------+--------------+
| Notation | Description  |
+----------+--------------+
| 1:1      | One to One   |
| 1:N      | One to Many  |
| N:1      | Many to One  |
| M:N      | Many to Many |
+----------+--------------+

IDEF1X и другие

Есть IDEF1x (стандарт NIST):

IDEF1X - это метод проектирования реляционных баз данных с синтаксисом, предназначенным для поддержки семантических конструкций, необходимых для разработки концептуальной схемы.

Это похоже на описание Min-Max / ISO (ссылка на английском языке в настоящее время не работает, но вот немецкая статья ), на которую ссылается статья Модель сущности-отношения в Википедии , который также перечисляет несколько других стилей графических обозначений, некоторые из которых удобны для текста.

enter image description here

Статья на немецком языке в (мин, макс) нотации также содержит полезную таблицу, сравнивающую UML, Chen, (мин, макс) и MC (модифицированный Chen) :

+----------------------+-----------------+---------------------------------+-------------+-----------------+----------------------+
| (min,max) [Entity 1] | [UML, Entity 1] |          Chen-Notation          | MC-Notation | [UML, Entity 2] | (min,max) [Entity 2] |
+----------------------+-----------------+---------------------------------+-------------+-----------------+----------------------+
| (0,1)                | 0..1            | 1:1                             | c:c         | 0..1            | (0,1)                |
| (0,N)                | 0..1            | 1:N                             | c:mc        | 0..*            | (0,1)                |
| (0,N)                | 1..1            | 1:N + total participation       | 1:mc        | 0..*            | (1,1)                |
| (0,N)                | 0..*            | M:N                             | mc:mc       | 0..*            | (0,N)                |
| (1,1)                | 0..1            | total participation + 1:1       | c:1         | 1..1            | (0,1)                |
| (1,N)                | 0..1            | total participation + 1:N       | c:m         | 1..*            | (0,1)                |
| (1,1)                | 1..1            | total part. + 1:1 + total part. | 1:1         | 1..1            | (1,1)                |
| (1,N)                | 1..1            | total part. + 1:N + total part. | 1:m         | 1..*            | (1,1)                |
| (1,N)                | 0..*            | total participation + M:N       | mc:m        | 1..*            | (0,N)                |
| (1,N)                | 1..*            | total part. + M:N + total part. | m:m         | 1..*            | (1,N)                |
+----------------------+-----------------+---------------------------------+-------------+-----------------+----------------------+
...