简化数据库ER图/架构

时间:2012-02-14 21:18:17

标签: sql database database-design er-diagrams

对于学校项目,我们必须创建自己的数据库。我决定创建一个数据库来管理我的电子元件库存。作为一项要求,我们需要创建一个ER图,然后从该图中派生出数据库模式。不幸的是,教授认为我创建的图表可以简化,“Part”实体是不必要的。

This是我提出的图表,here是派生架构。

如果我删除Part实体,那么为了让Circuit实体“使用”任意数量的任何部分,并使每个部分与可能的任何电路相关联,我将不得不有一个单独的M-to-N关系从每个组件类型到Circuit。这些关系中的每一个都会生成一个新表。这肯定会超过我们允许的项目的严格最大数量。

如果教授特别提到Part是不必要的,那么必须有一些方法可以删除它,从而产生更简单的ER图和模式 - 但我看不出它是什么。

也许你们可以看到它是什么并给我一个提示?

编辑: Dan W有一个很好的建议。我可以通过给每个部件类型(电容器,电阻器等)自己的键来消除该部件。然后在使用部分内部,包括那些组件的外键。我不得不假设表的每个条目只与一个部分相关联,其余部分为空。 Here's生成的架构。这个架构应该运行良好。但是现在我必须弄清楚对ER图的修改到底对应于这个模式。

EDIT2: 我得出的结论是,我正在寻找的关系是n-ary。根据几个来源,要从n-ary转换为模式,您将每个参与实体类型的关系的主键包含为外键。然后添加简单属性。 This就是我想出来的。

1 个答案:

答案 0 :(得分:1)

您有一个严格的最大表数(物理设计),但是您的ER图中是否限制为该实体数量(逻辑设计)?所有零件实体 - 电阻器,晶体管,电容器和通用IC - 都可以存储在一个零件表中,零件,电阻器,晶体管,电容器和通用IC的所有属性都可以作为可空列。如果属性对所有类型都有效,则它不可为空。在零件表中包含另一列,用于标识零件的类型(电阻,晶体管,电容或IC),尽管您在所有实体中都有一个类型列,也可能用于此类。

架构中的Parts表现在是:

PartID (PK)
Quantity
Drawer
Part Type
Value
Tolerance
Subtype
Power Rating
Voltage
Term_Style
Diam
Height
Lead_Space
Name
Case
Polarity
Use
V_CE
P_D
I_C
H_FE
Package
Pins
Description

并删除模式中的电阻,电容,晶体管和通用IC表。将这些实体保留在ER图中,因为它显示了每个零件类型中Parts表中哪些属性(不应为null)。