5

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

是我想出的图表,是派生的模式。

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

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

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

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

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

4

1 回答 1

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

于 2012-02-20T15:16:41.360 回答