ERD 关系基数 - 符号的反向放置是否更好?

ERD relationship cardinality - Is it better with reverse placement of symbols?

与传统惯例相反,绘制与 table 相关的关系基数比绘制与 table 相关的基数更好吗?换句话说,让符号显示 following 关系线的性质,而不是解释关系线 already following.

我正在为 SQL 数据库中的一些 table 制作实体关系图。 ERD 的用例是在数据库中为 table 创建新条目时。目标是让人们更容易理解条目所依赖的其他 table,因此也需要条目。

传统惯例是从 table 到相关的 table 画线,然后在这些线连接到其他 table 的地方我们画出关系基数符号。因此,如果 Table R 中的条目必须在 Table C 中恰好有一个相关条目,它可能如下所示:(简化图。)

要查找 table 依赖于哪些其他 table,必须跟踪每个与相关 table 的连接以确定所需的依赖性。当数据库有许多 table 时,这会变得很麻烦。

是否可以在更容易找到依赖关系的地方创建 ERD?如上面的问题所述,最合乎逻辑的解决方案似乎是为 reader 清楚地表明符号放置的传统约定已被颠倒,然后让关系基数符号显示以下关系的性质符号。因此,如果 Table R 中的条目必须在 Table C 中恰好有一个相关条目,则更具可读性的指示可能如下所示:

尽管大多数人都习惯了传统变体,但与我在上面直接提出的反向变体相比,传统变体还有其他好处吗?我曾经问过一位教授,我的建议是否更好,因为它可以轻松确定一个条目是否需要更多 table,并且通常可以更直观地阅读,但他无法争辩任何超出人们目前习惯的东西,传统并不总是值得的。

当图表中有很多 table 时,除了我上面显示的那些之外,是否还有其他选择更适合我的目标?

Wikipedia you will find a very interesting diagram comparing the way to represent cardinality in 6 different notations. There is only one which shows cardinality in the reverse way like you'd want it: it's the "ISO (min,max)" notation (see also this SO question 上)。如果要使用,请坚持相应的表示法。

不要颠倒使用 Everest's crowfoot 表示法。你最终会成为唯一了解自己的人,如果你必须经常在你的实践和常见实践之间切换,甚至可能不是每天。所以一个建议:接受当前的符号:它们已经在全球数百万个项目中证明了自己。

如果大多数记法都把基数放在目标的一边,如果唯一放在反面的记法几乎死了(尽管有国际标准化的支持),一定有优势和理由可以解释这种情况.原因之一可能是您更经常问自己,这 entity/class 与什么相关(促进目标考虑),而不是寻找依赖关系(源视图可能有一些好处)。

编辑:

我查阅了我的软件古生物学书籍,发现了一种使用您的逻辑和类似原理的符号。

它是 MERISE, a development methodology that was very popular in France in the 80s and 90s. It used a variant of the ERD notation, which was called MCD (Conceptual Data Model). It was later popularized by the PowerDesigner 工具的一部分。它使用不带括号的最小最大表示法,但使用不同的方式来表示关系:

注意关系符号可以压缩成小圆圈,连接线可以标注。 (更多解释,here,但不幸的是只有法语 - 而 UML 似乎已经取消了这种表示法)。

鱼尾纹符号似乎更适合显示 table 关系每一侧可能存在的实体数量。

因此在实践中不建议颠倒符号的位置,尤其是因为这会与大多数人熟悉的标准发生冲突。

如果目标是在添加新数据库时更容易看到您还需要更新哪些其他 table,则可以提出最小-最大表示法适用于数据库 ERD 的论点一些 table 的元素。最小-最大表示法显示 table 中的实体可以拥有的可能关系的数量,而像鱼尾纹表示法这样的表示法表示关系的两端可能有多少个实体。 (我建议阅读 https://de.wikipedia.org/wiki/Min-Max-Notation 的翻译)

但是,鱼尾纹符号的简单性可以让人们一目了然地更快地吸收信息。它还需要更少的 space,因此可能不会使 ERD 混乱。这些好处可能会超过最小-最大表示法的好处。鱼尾纹表示法的最大缺点仅是非常复杂的 ERD 的问题,在这些 ERD 中很难遵循关系线来确定另一个 table 中是否也需要一个实体。