归一化,将其更改为1nf,2nf和3nf

时间:2016-02-06 16:41:30

标签: normalization

INVOICE

所以我必须将它放入1NF,2NF和3NF

PROD_NUM    PROD_LABEL  PROD_PRICE
AA-E3422QW  ROTARY SANDER   49.95
AA-E3422QW  ROTARY SANDER   49.95
QD-300932X  0.25IN. DRILL BIT   3.45
RU-95748G   BAND SAW    33.99
GH-778345P  POWER DRILL 87.75
VEN_CODE   VEN_NAME
211 NEVERFAIL, INC
211 NEVERFAIL, INC
211 NEVERFAIL, INC
309 BEGOOD, INC
157 TOUGHGO, INC

到目前为止,我将这些作为我的2NF。我是对的吗?我如何将表格放入3NF?

所以我的2nf会是这样的吗?2NF TABLE IMAGE

1 个答案:

答案 0 :(得分:0)

我认为你给的照片被认为是1NF。

您最初显示的是3NF,但是您需要一个额外的表来引用哪个产品是由供应商提供的,以及修改发票表。

供应商 - 供应商的唯一列表

VEN_ID | VEN_CODE | VEN_NAME
-------|----------|---------------
1      | 211      | NEVERFAIL, INC
2      | 309      | BEGOOD, INC
3      | 157      | TOUGHGO, INC

产品 - 唯一的产品列表

PROD_ID | PROD_NUM   | PROD_LABEL        | PROD_PRICE
--------|------------|-------------------|-----------
1       | AA-E3422QW | ROTARY SANDER     | 49.95
2       | QD-300932X | 0.25IN. DRILL BIT | 3.45
3       | RU-95748G  | BAND SAW          | 33.99
4       | GH-778345P | POWER DRILL       | 87.75

Vendor_Product - 产品与供应商之间的映射

VEN_ID | PROD_ID
-------|----------
1      | 1
1      | 2
2      | 3
3      | 4

购买 - 发生的交易

PURCH_ID | INV_NUM | SALE_DATE   | PROD_ID | QUANT_SOLD
---------|---------|-------------|---------|------------
1        | 211347  | 15-JAN-2006 | 1       | 1
2        | 211347  | 15-JAN-2006 | 2       | 8
3        | 211347  | 15-JAN-2006 | 3       | 1
4        | 211348  | 15-JAN-2006 | 1       | 2
5        | 211349  | 16-JAN-2006 | 4       | 1

我认为这很好,但可以再分开。

发票 - 唯一的发票清单

INV_ID  | INV_NUM | SALE_DATE
--------|---------|-------------
1       | 211347  | 15-JAN-2006
2       | 211348  | 15-JAN-2006 
3       | 211349  | 16-JAN-2006 

购买 - 发生的交易

PURCH_ID | INV_ID | PROD_ID | QUANT_SOLD
---------|--------|---------|---------
1        | 1      | 1       | 1
2        | 1      | 2       | 8
3        | 1      | 3       | 1
4        | 2      | 1       | 2
5        | 3      | 4       | 1 

要获得2NF,请将供应商信息重新合并到Product表中。使用这些列

PROD_ID | PROD_NUM | PROD_LABEL | PROD_PRICE | VEN_CODE | VEN_NAME

在这种情况下,不需要Vendor和Vendor_Product表。