背景
我试图确保我了解如何阅读 ERD(实体关系图)符号,以便将其转换为自然语言解释。
我试图确保我可以解释一种将我在图中看到的内容转换为自然语言的方法。
让我们使用下图:(请不要过于关注实际实体的正确性,它们仅用于我们的示例。)
自然语言句子示例
公司地址
这是谈论公司与地址之间关系的正确方式吗?
一家公司有 1 到多个地址。(运输、计费等)。
这表明公司必须至少有一个地址,对吗?
这是否与我在图表中的符号相匹配?
公司连接
每家公司都有零到多个连接。
那是对的吗?这就是我在公司方面阅读双杠的方式吗?
两个公司侧连接器有何不同?
这两个公司端的连接器是否表明有什么不同?
你能解释一下吗?
自然语言翻译的一般帮助?
您是否有一种合乎逻辑的方法,可以提供用于检查每个关系并转换为自然语言的步骤?
例如,使用公司到连接。
我从哪里开始阅读?
我如何记住(或解释)Connection 上的乌鸦脚表示公司拥有的 Connection 数量,反之亦然?
谢谢
我现在想使用下图更明确地回答这个问题(来自https://www.lucidchart.com/pages/ER-diagram-symbols-and-meaning)
使用这些符号的定义,您可以看到关于我最初发布的图表的以下内容是正确的。
我的最后一个问题是:
最后一句话是,
这就是您将实体关系图上的符号转换为自然语言的方式。
从此链接: archive.org 镜像(原始网址已损坏) 1
基数和模态是围绕关系的业务规则的指标。基数是指一个实体中的实例可以与相关实体中的实例关联的最大次数。模态是指一个实体中的实例可以与相关实体中的实例关联的最小次数。基数可以是 1 或多,符号位于关系线的外端,最靠近实体,模态可以是 1 或 0,符号位于基数符号旁边的内侧。对于基数 1,绘制一条直线。对于 Many 的基数,画了一个三趾的脚。对于 1 的模态,绘制一条直线。对于 0 的模态,绘制一个圆。零个或多个 [b4] 1 个或多个 [b5] 1 且只有 1 个(正好是 1) [b6] 零或 1 个 [b7] 基数和模态显示在关系线的两端。完成此操作后,关系将被读取为 1 对 1 (1:1)、1 对多 (1:M) 或多对多 (M:M)。
[1] 原文链接:
http://web.simmons.edu/~benoit/lis458/CrowsFootNotation.pdf
要正确解释任何建模符号,您需要理解它。那里有很多资源 - 这里有一个相关网站可以帮助您入门。在堆栈交换答案中涵盖的主题过于广泛和广泛。如果您希望为每个关系编写真正的技术解释,模型文档将很容易让您到达那里。
至于您的流程问题:
与任何写作一样,您的听众应该推动您的写作重点和风格。你在写技术文档吗?如果有,具体针对谁?大多数数据库专业人员只会看图表。如果您正在为业务用户写作,那么请关注他们的流程,并让其指导您的结构和单词选择。例如,如果模型描述了如何记录公司地址,那么最熟悉的起点就是公司。通俗地说,我们讨论的是公司的地址,而不是地址的公司。
如果您遵循流程/口语建议,请从公司开始并逻辑地探索其关系。在示例中,有两个有意义的表与公司相关并进一步描述了公司。
首先解释一下:
"A company has at least one, and possibly many, addresses."
您将不得不回过头来解释我们通常不会在随意交谈中考虑的事情。您可以继续解释
"We only store connection types that relate to a company (it's not a long list of arbitrary or potential connection types) and each connection type has only one company."
这描述了关系以及我们的数据规则是什么。它似乎也没有多大意义,所以如果这不是一个示例模式,我建议有人看看设计,或者认真思考他们的业务流程!这是您可以在 ERD 文档中找到与语言到模型转换和思考相关的其他信息的原因之一。
许多专业人士会通过这种练习来测试他们的模型是否有意义。他们可能开始问的是:
"Does a company have a connection type, or does it make more sense that a company's relationship with it's multiple addresses have connection types?"
这应该导致他们使用查找表和描述重新构建,例如:"A company has one or more addresses of different types."