我试图了解ER图中的基数,从一个访问城市的访客的简单示例开始。考虑到这一点,你可以让许多游客访问许多城市,所以我绘制了如图所示的ER图。访问者是具有名称等属性的实体,访问权限是与VisitorID和CityID作为主键的关系,其他属性如日期,城市是实体,具有国家等属性。这意味着0到很多游客可以访问0到很多城市。这是否意味着在具有此ER图的数据库中,我会有三个表?一个用于访客,一个用于城市,一个用于VisitCity?我能正确理解基数吗?
答案 0 :(得分:3)
是的,这是正确的。您的图纸显示0到多个访客可以访问0到多个城市。所以在这种情况下你是对的。正如你所说,你已经将你的中间名称命名为访问城市。
但是假设您需要有一个数据库,访问者只能访问1个城市。你会有一对多的关系。这意味着您不需要使用中间表。所以你最终只会得到2张桌子。
只是因为像“许多游客可以访问许多城市”这样的逻辑并不是真的。要求是制定这些规则的原因(由客户指定的项目说明他/她需要什么。或者如果你还在学校,这将是分配给你的论文)。因此,在创建数据库时,您必须非常仔细地听取/阅读要求,以确定何时使用什么。但是从阅读你所说的话,我认为你正走在正确的轨道上:))
答案 1 :(得分:3)
是的,您正确描述了关系。 N:M 基数需要第三张表。
访问也可能包含其他信息。例如,由于访问者不能同时在两个地方,因此可能存在相关的时间段。
访客可以与城市建立另一种关系 - 例如,born_in
具有不同的基数,即 N:1 ,这意味着许多人出生在同一个城市(但每个人都出生在只有一个城市!)为此,born_in
将成为访客的一个属性。
答案 2 :(得分:1)