E-R模型到关系数据库,在一个关系中有一个实体两次

时间:2017-01-31 00:55:21

标签: relational-database entity-relationship

我正在尝试将数据库从ER模型转移到关系数据库。 但是,我不确定我的解决方案是否有意义。特别是,locationhas之间的两种关系会产生很大问题。我以为我可以将一个ZipCode作为常规主键添加到表中,并将第二个ZipCode作为外键添加。如果有人能帮助我,我将非常感激。 The ERM

到目前为止我的解决方案:

Relational database

1 个答案:

答案 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(有时可以为空)放入实体表中,就像使用takesShip&amp; Tour。一些方法具有直接表达这种设计的非Chen图。其他人允许它从陈图转移到架构。你必须问你的老师他们是否关心陈式ER图和你可以制作的相应图式的变化。

(这是明显1的非陈方法的下降:许多关系/关联及其由FK表示导致FK被错误地(但通常)称为“关系”或“关联”。)