2012-02-14 173 views
5

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

This是我想出来的图,here是派生模式。

如果我删除了零件实体,那么为了使电路实体“使用”任意数量的任何零件,并使每个零件与可能的任何电路相关联,我必须有一个单独的M对N从每种组件类型到电路的关系。每个关系都会生成一个新表。这肯定会超过我们为该项目所允许的最大数量的表格。

如果教授特别提到Part是不必要的,那么必须有某种方法将其删除,从而导致更简单的ER图和模式 - 但我看不到它是什么。

也许你们可以看到它是什么,并给我一个提示?编辑: 丹W有一个很好的建议。我可以通过给每个部件类型(电容器,电阻器等)自己的键来消除该部分。然后在内部使用部分,包含这些组件的外键。我将不得不假设表中的每个条目只与一个部分相关,其余部分为空。 Here's生成的模式。这个模式应该很好。但是现在我必须弄清楚ER图的哪些修改将与该模式相对应。

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

+1

难道你不能将PartID更改为ResistorID,CapicatorID等,然后将这些列添加到Uses_​​Part表中? – 2012-02-14 21:58:00

+0

好的建议。我以前想过这个,但我不完全确定如何在ER图中表示这一点。这可能是一种非正式的关系,但我必须看到。 – Schmidget 2012-02-14 22:54:16

+2

我真的很喜欢你的设计。我什么都不会改变。有不同种类的零件,具有不同的属性,每个零件(电阻器,电容器等)都有独立的实体。 Part部件实体需要作为这些的超类型实体。正如你所说(正确)用于M:N关系。 – 2012-02-14 23:20:55

回答

1

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

架构中的部分表现为:

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表中的哪些属性对于每种零件类型都是必需的(不应该为空)。