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

Normalization, changing it to 1nf, 2nf and 3nf

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。我走对了吗?我如何将 table 放入 3NF ?

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

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

您最初显示了 3NF,但您需要额外的 table 来参考哪个供应商生产的产品以及修改发票 table。

供应商 - 独特的供应商列表

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,请将供应商信息组合回产品 table。使用这些列

PROD_ID | PROD_NUM | PROD_LABEL | PROD_PRICE | VEN_CODE | VEN_NAME

在这种情况下,不需要供应商和 Vendor_Product table。