实体关系是否有标准(非图形)表示法?
现在我正在使用我自己的 janky 符号:
- 用户 >> 照片 , (1-many)
- 用户 > 个人资料 , (1-1 hasOne)
- 个人资料 < 用户 , (1-1 属于)
- 照片 << User , (many-1 属于To)
- 照片 <> 标签 , (many-many)
实体关系是否有标准(非图形)表示法?
现在我正在使用我自己的 janky 符号:
差不多 10 年后,我也很难找到明文标准。到目前为止,这是我发现的(尽管是公平的警告,它主要是图形标准恰好在文本中运行良好)。
首先,描述对象之间关系的基数的常用术语是“多重性”。
这种关联关系表明(至少)两个相关类中的一个引用了另一个。这种关系通常被描述为“A有B”(母猫有小猫,小猫有母猫)。
尽管相当多的资料来源也使用“基数”一词。关于Multiplicity vs Cardinality这个 SO question 的区别有一些很好的答案。我发现这个非常简洁:
...多重性由下基数和上基数组成。基数是集合中有多少元素。因此,多重性告诉您集合中允许的最小和最大成员。
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 |
+--------------+--------+-----------------------------------------+
这似乎有一些变化:
微软的关系表示法
+---------------------------------+---------------------+
| 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 |
+---------------------------------+---------------------+
+------+--------------------+-------------------------------+
| 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的马丁风格
从我读到的陈式是“原始格式”。我通常认为这在文本中表示为:
+----------+--------------+
| Notation | Description |
+----------+--------------+
| 1:1 | One to One |
| 1:N | One to Many |
| N:1 | Many to One |
| M:N | Many to Many |
+----------+--------------+
有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) |
+----------------------+-----------------+---------------------------------+-------------+-----------------+----------------------+
为什么不使用与 ER-Diagramms 中相同的内容:
等等。但我从未听说过官方明文标准。