entity-relationship - 股权的实体关系图
问题描述
我必须描述股权,其中一个主体在被投资公司中拥有股权,并且股权由零个或多个记录描述。
我不知道对“股权”部分建模的正确方法是什么。这听起来像是一种关系,但它似乎也是一个实体。
如果我没记错的话,图 1 和图 2 都会导致相同的逻辑模式。
你认为哪张图是正确的?第一个还是第二个?为什么?
而且,第二个和第三个模式是否等效?(我的回答是:是的)
模式 1:
模式 2:
模式 3:
解决方案
首先,解决shareholding
是实体还是关系:因为shareholding
描述了主体和被投资公司如何相互作用,我倾向于认为它是一种关系。话虽如此,您可能希望shareholding
非常明确地在主题+记录和被投资公司之间进行定义。
其次,关于哪个模式是正确的:我认为正确地表明股权可以由零个或多个记录来描述,2 和 3 不可能是正确的,因为它们之间有和实体(1,1)
之间的关系。就我个人而言,我会修改 Schema 1 以使其具有由and共享的关系,然后在and之间直接建立连接(如果可能的话)。这将显示两者之间的实际关系,而不是中间人关系,但可能与这些事物在您的系统中的交互方式不同,所以这是您对最有意义的调用。:)Shareholding
Record
Shareholding
Investee
Shareholder
(0,N)
Shareholding
Record
Descriptions
我还要说我喜欢模式 2 中的(0,N)
介于Subject
和之间。Shareholding
第三,关于 Schema 2 和 Schema 3 是否等价:是的,它们是等价的,因为您保持了两者中的Shareholder
andInvestee
关系一致。如果您将它们更改为 Schema 3 中的实体,情况会有所不同,但在 Schema 3 中,您几乎只是更明确地说明了它是什么Shareholding
。话虽如此,Schema 2 更加清晰。
我希望这有帮助!我绝不是 ERD 的大师,如果你愿意,我很乐意讨论这个!:)
推荐阅读
- html - 创建css聊天气泡时可见线
- java - Java 8 列表处理 - 有条件地添加元素
- json - JSON在ARM模板循环中加密虚拟机
- javascript - ReactJS:意外令牌'<'
- javascript - 在查找字符串中出现字符的频率时,此语法的确切含义是什么?
- python-3.x - 如果尝试使用 f = open('XYZ.ipynb', 'w') 打开文件,如何恢复原始文件内容?
- c# - 存储具有相同唯一标识符(“用户名”)的两个域模型(用户)时克服不一致的最佳方法
- c# - 将项目动态添加到表 asp MVC
- cpanel - 在 Cpanel 中的插件域后无法托管我的新网站
- selenium - 如何根据 TestNG Assert 结果使用 Log4j 级别?