这种关系数据库设计的正确形式是什么?

时间:2012-11-19 14:21:11

标签: database-design entity-relationship

下面我有两个表,即客户和货币。

场景:每个客户必须为其所有交易定义一种货币。我已经放置了currency_id列,该列将货币与客户相关联。以下是我脑海中出现的一些问题。 Mybe这是一个愚蠢的问题。但我想清楚自己。

  1. 从客户查看:一位客户拥有一种货币 enter image description here

  2. 从货币查看:一种货币可以有0个或更多客户。 enter image description here

  3. 这里的问题。在这种情况下,我们应该如何处理这个问题?我们应该从客户(1)或货币(2)看到。任何人都可以解释我这个??

    编辑:我的问题是设计ERD。

4 个答案:

答案 0 :(得分:1)

  

我们应该从客户(1)或货币(2)看到。

您可以从客户的角度或货币的角度查看数据。

你自己说的。您可以查看特定客户的货币,也可以计算特定货币的客户数量。

通过关系数据库没有“顺序”。您可以设计关系表,以便提供所需的信息。

答案 1 :(得分:0)

关于ERD 2的条款是正确的。您在Customer中引用外键,引用Currency的主键,因此您拥有从Customer到Currency的多对一关系。 2以图解方式正确显示此关系。

答案 2 :(得分:0)

您不会从任何一方查看关系。您在这里拥有与一种货币相关的零对多客户,可通过图形方式表达或以多种不同方式表达文本。例如,“0 .. *:1”。

答案 3 :(得分:0)

(在听完@ Gilbert的回复并阅读随后的讨论之后抛弃此内容。)

两个表之间的关系是双向的:表X与表Y相关,表Y与表X相关。对于您的情况,它正如您所说的那样:

  • 一位客户有一种货币
  • 一种货币可以有0个或更多客户

两种口头描述都是正确的。

关于ERD表示,您的第二个案例最能代表这一点。除非你是一名学者,否则不要陷入代表性的细枝末节,那里有几十种非常相似的符号。只要它显示“一到零或更多”,你就会很好。

至于实现,我认为你已经得到了这个问题:父表有主键(CurrencyId),子表有自己的主键(CustomerID)和与父表相关的外键(CurrenctyID) 。