为了学校项目,我们需要创建自己的数据库。我决定创建一个管理电子元件库存的数据库。作为要求,我们需要创建一个ER图,然后从该图导出数据库模式。不幸的是,教授认为我创建的图可以简化,"Part"实体是不必要的。
这是我想出的图表,这是导出的模式。
如果我删除"Part"实体,那么为了让"Circuit"实体使用任意数量的任何部件,并且每个部件都与可能的任何电路相关联,我将不得不从每种组件类型到电路中创建单独的M对N关系。每个关系都会生成一个新表。这肯定会超过我们允许的项目最大表数。
如果教授特别提到"Part"是不必要的,那么肯定有一种方法可以去除它,从而得到更简单的ER图和模式——但我看不出来是什么。
也许你们能看出来,给我一个提示?
这是我想出的图表,这是导出的模式。
如果我删除"Part"实体,那么为了让"Circuit"实体使用任意数量的任何部件,并且每个部件都与可能的任何电路相关联,我将不得不从每种组件类型到电路中创建单独的M对N关系。每个关系都会生成一个新表。这肯定会超过我们允许的项目最大表数。
如果教授特别提到"Part"是不必要的,那么肯定有一种方法可以去除它,从而得到更简单的ER图和模式——但我看不出来是什么。
也许你们能看出来,给我一个提示?
编辑: Dan W提出了一个很好的建议。我可以通过为每个部件类型(电容器、电阻器等)分配自己的键来消除该部分。然后,在使用零件内,包括到这些零件的外键。我必须假设表的每个条目只与单个部分相关联,其余部分为空。这是得到的模式。这个模式应该很好用。但现在我必须确定ER图的修改将对应于此模式。
编辑2: 我得出结论,我正在寻找的关系是n元的。根据几个来源,要从n元转换为模式,您需要将每个参与实体类型关系的主键作为外键包含。然后添加简单属性。 这就是我想到的。
CircuitId
列来跳过 Part 实体(这样,Circuit 将与每个其他表都有一个 1:N 的关系)。 - ypercubeᵀᴹ