我正在尝试将数据库从ER模型转移到关系数据库。
但是,我不确定我的解决方案是否有意义。特别是,location
和has
之间的两种关系会产生很大问题。我以为我可以将一个ZipCode作为常规主键添加到表中,并将第二个ZipCode作为外键添加。如果有人能帮助我,我将非常感激。
到目前为止我的解决方案:
答案 0 :(得分:1)
如果您正在使用此陈ER图来跟踪陈ER设计,那么您需要为每个实体类型框创建一个表,并为关系类型的每个参与/角色行提供每个关系(关联)类型菱形和FK(外键)
(在Chen语境中调用行/ FK“关系”或“关联”是个坏主意,因为钻石/表格代表关系类型,而行/ FK代表参与。)
因此,您的Ship tourID
将被删除,支持关系/表格takes
与行/ FK到Ship
& Tour
。你会在has
表格中有两个FK到Location
。在关系表中需要不同于参与者表中的列名称并不重要。 FK只是说了一些表中的值和列列表出现在其他一些表格中列列表。该图表示名称为start
& target
;使用它们。
请勿使用像has
这样的松散无法提供的名称。如果您选择了一个更好的名称和/或解释了三个实体满足has
关系的情况,那么我们就可以知道合理的设计是什么。例如,您可能没有正确使用基数。陈方式是,数字或范围告诉实体类型的某个实例它可以参与多少个关系实例。另一种方式是,数字或范围告诉您 other <的实体实例的某种组合/ em>参与实体类型该行的实体类型可以参与多少实例。如果后者为零,则表示关系实例可以为NULL。但这在陈设计中不会出现;参与实体实例组合标识关系实例并形成PK(主键)。
然而,陈设计无法表达所有关系设计。我们可以通过重新排列表来表示与Chen ER模式相同的数据。例如,删除不多的二进制关系表:许多并将FK(有时可以为空)放入实体表中,就像使用takes
,Ship
&amp; Tour
。一些方法具有直接表达这种设计的非Chen图。其他人允许它从陈图转移到架构。你必须问你的老师他们是否关心陈式ER图和你可以制作的相应图式的变化。
(这是明显1的非陈方法的下降:许多关系/关联及其由FK表示导致FK被错误地(但通常)称为“关系”或“关联”。)