下面我有两个表,客户和货币。
场景:每个客户必须为其所有交易定义一种货币。我放置了一个 currency_id 列,将货币与客户相关联。以下是我脑海中出现的一些问题。Mybe这是一个愚蠢的问题。但我想清除自己。
客户观点:一位客户使用一种货币
从货币查看:一种货币可以有 0 个或多个客户。
这里的问题。在这种情况下,我们应该如何看待问题?我们应该从客户 (1) 或货币 (2) 来看。任何人都可以解释我这个??
编辑:我的问题是关于设计 ERD。
下面我有两个表,客户和货币。
场景:每个客户必须为其所有交易定义一种货币。我放置了一个 currency_id 列,将货币与客户相关联。以下是我脑海中出现的一些问题。Mybe这是一个愚蠢的问题。但我想清除自己。
客户观点:一位客户使用一种货币
从货币查看:一种货币可以有 0 个或多个客户。
这里的问题。在这种情况下,我们应该如何看待问题?我们应该从客户 (1) 或货币 (2) 来看。任何人都可以解释我这个??
编辑:我的问题是关于设计 ERD。
我们应该从客户 (1) 或货币 (2) 来看。
您可以从客户的角度或货币的角度查看数据。
你自己说的。您可以查看特定客户的货币,也可以计算特定货币的客户数量。
通过关系数据库没有“顺序”。您设计关系表,以便它们提供您需要的信息。
就 ERD 而言,2 是正确的。您在 Customer 中有一个外键引用 Currency 的主键,因此您具有从 Customer 到 Currency 的多对一关系。图 2 正确地用图表显示了这种关系。
您不会从任何一方查看关系。您在这里拥有的是与一种货币相关的零对多客户,可以以图形方式或以多种不同方式表达为文本。例如,“0..*:1”。
(在支持@Gilbert 的回复并阅读随后的讨论后将其加入。)
两个表之间的关系是双向的:表 X 与表 Y 相关,表 Y 与表 X 相关。对于您的情况,正如您所说:
两种语言描述都是正确的。
关于 ERD 表示,您的第二种情况最能代表这一点。除非你是一名学者,否则不要被代表性细节所困扰,那里有许多非常相似的符号。只要它显示“一对零或更多”,你就很好。
至于实现,我想你已经明白了:父表有主键 (CurrencyId),子表有自己的主键 (CustomerID) 和与父表相关的外键 (CurrencyID)。