文本中的实体关系表示法

car*_*per 2 erd entity-relationship notation relationship

实体关系是否有标准(非图形)表示法?

现在我正在使用我自己的janky表示法:

  • 用户>>照片,(1-many)
  • 用户>个人资料,(1-1 hasOne)
  • 个人资料<用户,(1-1属于)
  • 照片<<用户,(很多-1属于)
  • 照片<>标签,(很多)

the*_*ega 5

为什么不使用相同的ER-Diagramms:

  • 用户1-n照片
  • 用户1-1个人资料
  • 照片n-1用户

等等.但我从来没有听说过官方的明文标准.


Nic*_*ski 5

差不多 10 年后,我也很难找到明文标准。这是我到目前为止所发现的(尽管有公平的警告,它主要是碰巧在文本中运行良好的图形标准)。

首先,描述对象之间关系的基数的常用术语是“多重性”。

这种关联关系表明(至少)两个相关类中的一个引用了另一个。这种关系通常被描述为“A 有 B”(母猫有小猫,小猫有母猫)。

尽管相当多的资料来源也使用“基数”一词。关于Multiplicity vs Cardinality这个 SO question 上的差异有一些很好的答案。我发现这个非常简洁:

...多重性由低基数和高基数组成。基数是一个集合中有多少个元素。因此,多重性告诉您集合中允许的最小和最大成员。

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 |
+--------------+--------+-----------------------------------------+
Run Code Online (Sandbox Code Playgroud)

这似乎有一些变化:

  • 微软的关系符号

    +---------------------------------+---------------------+
    |          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             |
    +---------------------------------+---------------------+
    
    Run Code Online (Sandbox Code Playgroud)
  • 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              |
    +------+--------------------+-------------------------------+
    
    Run Code Online (Sandbox Code Playgroud)
  • Smartdraw 的马丁风格

陈风

我所读到的陈风格是“原始格式”。我通常认为这在文本中表示为:

+----------+--------------+
| Notation | Description  |
+----------+--------------+
| 1:1      | One to One   |
| 1:N      | One to Many  |
| N:1      | Many to One  |
| M:N      | Many to Many |
+----------+--------------+
Run Code Online (Sandbox Code Playgroud)

IDEF1X 及其他

IDEF1x(NIST 标准):

IDEF1X 是一种设计关系数据库的方法,其语法旨在支持开发概念模式所需的语义构造。

这似乎描述了维基百科实体关系模型文章中引用的Min-Max / ISO 符号(英文链接目前已断开,但这里是一篇德语文章),该文章还列出了一些其他样式的图形符号,其中一些是文本友好的.

在此处输入图片说明

关于 (min,max) 符号的德语文章也有一个比较 UML, Chen, (min,max) 和MC (Modified 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)                |
+----------------------+-----------------+---------------------------------+-------------+-----------------+----------------------+
Run Code Online (Sandbox Code Playgroud)

  • 迟到总比不到好!感谢您的有用回复 (2认同)