4

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

现在我正在使用我自己的 janky 符号:

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

3 回答 3

7

差不多 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 |
+--------------+--------+-----------------------------------------+

这似乎有一些变化:

  • 微软的关系表示法

    +---------------------------------+---------------------+
    |          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的马丁风格

陈式

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

+----------+--------------+
| 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 表示法(英文链接目前已断开,但这是一篇德文文章),该文章还列出了一些其他样式的图形表示法,其中一些是文本友好的.

在此处输入图像描述

关于 (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)                |
+----------------------+-----------------+---------------------------------+-------------+-----------------+----------------------+
于 2018-05-15T05:28:49.313 回答
5

为什么不使用与 ER-Diagramms 中相同的内容:

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

等等。但我从未听说过官方明文标准。

于 2009-10-06T21:15:46.917 回答
0

有可用的软件将纯文本描述转换为可视化 ER 图。

例如erd使用以下符号:

Cardinality    Syntax
0 or 1         ?
exactly 1      1
0 or more      *
1 or more      +

例子:

Person *--1 `Birth Place`
Artist +--? PlatinumAlbums

还要检查这个类似工具的列表

但是,这些都不能称为标准。

于 2021-04-17T16:23:31.800 回答