在ER图中,我如何知道何时使用一个或多个?

时间:2016-09-13 21:20:37

标签: sql entity-relationship diagram

我试图了解ER图中的基数,从一个访问城市的访客的简单示例开始。考虑到这一点,你可以让许多游客访问许多城市,所以我绘制了如图所示的ER图。访问者是具有名称等属性的实体,访问权限是与VisitorID和CityID作为主键的关系,其他属性如日期,城市是实体,具有国家等属性。这意味着0到很多游客可以访问0到很多城市。这是否意味着在具有此ER图的数据库中,我会有三个表?一个用于访客,一个用于城市,一个用于VisitCity?我能正确理解基数吗?

ER Diagram

3 个答案:

答案 0 :(得分:3)

是的,这是正确的。您的图纸显示0到多个访客可以访问0到多个城市。所以在这种情况下你是对的。正如你所说,你已经将你的中间名称命名为访问城市。

但是假设您需要有一个数据库,访问者只能访问1个城市。你会有一对多的关系。这意味着您不需要使用中间表。所以你最终只会得到2张桌子。

只是因为像“许多游客可以访问许多城市”这样的逻辑并不是真的。要求是制定这些规则的原因(由客户指定的项目说明他/她需要什么。或者如果你还在学校,这将是分配给你的论文)。因此,在创建数据库时,您必须非常仔细地听取/阅读要求,以确定何时使用什么。但是从阅读你所说的话,我认为你正走在正确的轨道上:))

答案 1 :(得分:3)

是的,您正确描述了关系。 N:M 基数需要第三张表。

访问也可能包含其他信息。例如,由于访问者不能同时在两个地方,因此可能存在相关的时间段。

访客可以与城市建立另一种关系 - 例如,born_in具有不同的基数,即 N:1 ,这意味着许多人出生在同一个城市(但每个人都出生在只有一个城市!)为此,born_in将成为访客的一个属性。

答案 2 :(得分:1)

是的,这是完全正确的。

如果您希望将数据库保持在1NF,每当您面对N x N基数时,必须使用两个实体的密钥创建新表。

有关规范化的更多信息here.