1NF,2NF和3NF规范化?

时间:2019-03-21 11:17:31

标签: mysql database

我有一位老师,他不喜欢向全班解释,但喜欢为即将到来的考试提出复习问题。谁能解释上面的图片?我主要关注红色下划线,该红色下划线表示Supplier和SupplierPhone是重复的值。我认为当一列中出现多次相同项目时,就会出现重复值。

我的另一个问题是,如果供应商是重复值,为什么Part_Name不是重复值,因为它们的列中都有两个具有相同名称的项目。

示例:

enter image description here

2 个答案:

答案 0 :(得分:0)

之所以重复,是因为元组的结果始终相同。例如。 ABC Plastics将始终具有相同的电话号码,因此与ABC Plastics一起显示2行意味着我们在电话号码中具有多余的信息。

Part1 Company1 12341234
Part2 Company1 12341234

我们可以用以下方式表示相同的信息

Part1 Company1
Part2 Company1

Company1 12341234.

因此,两行具有相同的电话号码是多余的。

这也应该回答您的第二个问题。

基本上,您正在寻找元组,以使给定元组(X,Y)存在,如果存在另一个元组(X,Y'),则Y'= Y

答案 1 :(得分:-1)

在我看来像是五个桌子。

model   (entity)
modelid  description price
 1        Laserjet    423.56 
 1        256 Colour   89.99
part   (entity)
partid  name
PF123   Paper Spool
LC423   Laserjet cartridge
MT123   Power supply
etc
bill_of_materials    (many to many relationship  model >--< part )
modelid  partid     qty
1        PF123       2
1        LC423       4
1        MT123       1
2        MT123       2
supplier  (entity)
supplier_id phone         name
1           416-234-2342  ABC Plastics
2           905..         Jetson Carbons
3           767...        ACME Power Supply
etc.
part_supplier  (many to many relationship  part >--< supplier )
part_id    supplier_id      
PF123       1
LC423       2
MT123       3
etc.

对于每个不同的实体,您在模型,零件,供应商中都有一行

在bill_of_materials中,每个模型的每个部分都有一行。

对于每个可以提供每个零件的供应商,part_supplier中都有一行。请注意,一个供应商可以提供多个零件,每个零件可以提供多个供应商。那是多对多的关系。

窍门:弄清您的应用程序域中有哪些物理事物。然后为每个人制作一张桌子。然后弄清楚它们之间是如何关联的(这就是使其相互关联的原因。)