ตัวอยา่งการปรบัตัวอยา่งการปรบับรรทัดฐานบรรทัดฐาน1NF >> 1NF >>
3NF3NF
Bill_No Bill_Date P_ID P_Name Unit
Price QTY Total Cus_ID
Cus_Name Address Emp
_ID•Emp_Name
B001 1/08/2004 P01 Sofa Bed 12,500 1 12,500 C03 Pim Australia E02 Smith
P03 Dinning Table 5,000 2 10,000
B002 1/08/2004 P02 Bed 15,000 2 30,000 C03 Pim Australia E03 Benny
P05 Electric Fan 3,000 10 30,000
P04 Printer 12,000 2 24,000
B003 3/08/2004 P01 Sofa Bed 12,500 10 125,000
C01 Jennifer
Newzeland
E01 Johnson
B004 4/08/2004 P03 Dinning Table 5,000 2 10,000 C02 David USA E01 Johnson
P05 Electric Fan 3,000 5 15,000
B005 4/08/2004 P07 Air Conditioner
20,000 2 40,000 C01 Jennifer
New zeland
E02 Smith
P04 Printer 12,000 1 12,000
ตารางท่ียงัไมเ่ป็น Normal Form ขัน้ใด
Step 1 : ขจดั Derived Attribute(ถ้าม)ีBill_No Bill_Date P_ID P_Name Unit
Price QTY Total Cus_ID
Cus_Name
Address Emp_ID
•Emp_Name
B001
1/08/2004
P01 Sofa Bed 12,500 1 12,500 C03 Pim Australia E02 Smith
P03 Dinning Table
5,000 2 10,000
B002
1/08/2004
P02 Bed 15,000 2 30,000 C03 Pim Australia E03 Benny
P05 Electric Fan 3,000 10 30,000
P04 Printer 12,000 2 24,000
B003
3/08/2004
P01 Sofa Bed 12,500 10 125,000
C01 Jennifer
Newzeland
E01 Johnson
B004
4/08/2004
P03 Dinning Table
5,000 2 10,000 C02 David USA E01 Johnson
P05 Electric Fan 3,000 5 15,000
B005
4/08/2004
P07 Air Conditioner
20,000 2 40,000 C01 Jennifer
New zeland
E02 Smith
P04 Printer 12,000 1 12,000
เกิดจาก UnitPrice *
QTY
รเีลชนัท่ีขจดั Derived Attr. แล้วBill_No Bill_Date P_ID P_Name Unit
Price QTY Cus_ID
Cus_Name Address Emp
_ID•Emp_Name
B001 1/08/2004 P01 Sofa Bed 12,500 1 C03 Pim Australia E02 SmithP03 Dinning
Table5,000 2
B002 1/08/2004 P02 Bed 15,000 2 C03 Pim Australia E03 BennyP05 Electric Fan 3,000 10P04 Printer 12,000 2
B003 3/08/2004 P01 Sofa Bed 12,500 10 C01 Jennifer
Newzeland
E01 Johnson
B004 4/08/2004 P03 Dinning Table
5,000 2 C02 David USA E01 Johnson
P05 Electric Fan 3,000 5B005 4/08/2004 P07 Air
Conditioner20,000 2 C01 Jennif
erNew zeland
E02 Smith
P04 Printer 12,000 1
First Normal Form (1NF)
นิยามของ 1NFรเีลชนัท่ีเป็น 1 NF ต้องไมม่กีลุ่ม
ขอ้มูลซ้ำ้า(Repeating Group) และไมม่แีอตทรบิวิต์ท่ีมหีลายค่า(Multivalued Attribute)
ขจดั Multivalued Attr. และ Repeating Group
Bill_No Bill_Date P_ID P_Name Unit
Price QTY Cus_ID
Cus_Name Address Emp
_ID•Emp_Name
B001 1/08/2004 P01 Sofa Bed 12,500 1 C03 Pim Australia E02 SmithP03 Dinning
Table5,000 2
B002 1/08/2004 P02 Bed 15,000 2 C03 Pim Australia E03 BennyP05 Electric Fan 3,000 10P04 Printer 12,000 2
B003 3/08/2004 P01 Sofa Bed 12,500 10 C01 Jennifer
Newzeland
E01 Johnson
B004 4/08/2004 P03 Dinning Table
5,000 2 C02 David USA E01 Johnson
P05 Electric Fan 3,000 5B005 4/08/2004 P07 Air
Conditioner20,000 2 C01 Jennif
erNew zeland
E02 Smith
P04 Printer 12,000 1
Bill_No Bill_Date P_ID P_Name Unit
PriceQTY
Cus_ID
Cus_Name Address Emp_
ID•Emp_Name
B001
1/08/2004 P01 Sofa Bed 12,500 1 C03 Pim Australia E02 Smith
B001
1/08/2004 P03 Dinning Table 5,000 2 C03 Pim Australia E02 Smith
B002
1/08/2004 P02 Bed 15,000 2 C03 Pim Australia E03 Benny
B002
1/08/2004 P05 Electric Fan 3,000 10 C03 Pim Australia E03 Benny
B002
1/08/2004 P04 Printer 12,000 2 C03 Pim Australia E03 Benny
B003
3/08/2004 P01 Sofa Bed 12,500 10 C01 Jennifer Newzeland
E01 Johnson
B004
4/08/2004 P03 Dinning Table 5,000 2 C02 David USA E01 Johnson
B004
4/08/2004 P05 Electric Fan 3,000 5 C02 David USA E01 Johnson
B005
4/08/2004 P07 Air Conditioner
20,000 2 C01 Jennifer Newzeland
E02 Smith
B005
4/08/2004 P04 Printer 12,000 1 C01 Jennifer Newzeland
E02 Smith
รเีลชนัท่ีไมม่ ีMultivalued Attr. และ Repeating group
โดยการแยกแต่ละขอ้มูลออกเป็นเอกเทศในแต่ละทเูพลิ
หา Functional Dependency• FD1 : Bill_No Bill_date , Cus_ID ,Cus_Name ,
Address , Emp_ID , Emp_Name• FD2 : P_ID P_name , UnitPrice• FD3 : Bill_No , P_ID QTY• FD4 : Cus_ID Cus_Name , Address• FD5 : Emp_ID Emp_Name
• เอา FD1 , FD2 และ FD3 มารวมกัน(Composition)ได้• FD6 : BiLL_No , P_ID Bill_date ,
Cus_ID ,Cus_Name , Address , Emp_ID , Emp_Name ,P_Name , UnitPrice
• ดังนัน้พจิารณาได้วา่ primary key ของรเีลชนัคือ Bill_No รวมกับ P_ID
รเีลชนัท่ีอยูใ่นรูป 1NFBill_No Bill_Date P_ID P_Name Unit
PriceQTY
Cus_ID
Cus_Name Address Emp_
ID•Emp_Name
B001
1/08/2004
P01 Sofa Bed 12,500
1 C03 Pim Australia E02 Smith
B001
1/08/2004
P03 Dinning Table 5,000 2 C03 Pim Australia E02 Smith
B002
1/08/2004
P02 Bed 15,000
2 C03 Pim Australia E03 Benny
B002
1/08/2004
P05 Electric Fan 3,000 10 C03 Pim Australia E03 Benny
B002
1/08/2004
P04 Printer 12,000
2 C03 Pim Australia E03 Benny
B003
3/08/2004
P01 Sofa Bed 12,500
10 C01 Jennifer
Newzeland
E01 Johnson
B004
4/08/2004
P03 Dinning Table 5,000 2 C02 David USA E01 Johnson
B004
4/08/2004
P05 Electric Fan 3,000 5 C02 David USA E01 Johnson
B005
4/08/2004
P07 Air Conditioner
20,000
2 C01 Jennifer
Newzeland
E02 Smith
B005
4/08/2004
P04 Printer 12,000
1 C01 Jennifer
Newzeland
E02 Smith
Second Normal Form (2NF)
นิยามของ 2NFรเีลชนัท่ีเป็น 2NF ต้องต้องเป็น 1 NF มาก่อน และ ไมม่แีอตทรบิวิต์ท่ีขึน้ต่อกันกับบางสว่นของคีย์หลัก(Partial Dependency)
รเีลชนัอยูใ่นรูป 1NF แต่ไมเ่ป็น 2 NF เนื่องจากม ีPartial Dependency
Bill_No Bill_Date P_ID P_Name Unit
PriceQTY
Cus_ID
Cus_Name Address Emp_
ID•Emp_Name
B001
1/08/2004
P01 Sofa Bed 12,500
1 C03 Pim Australia E02 Smith
B001
1/08/2004
P03 Dinning Table 5,000 2 C03 Pim Australia E02 Smith
B002
1/08/2004
P02 Bed 15,000
2 C03 Pim Australia E03 Benny
B002
1/08/2004
P05 Electric Fan 3,000 10 C03 Pim Australia E03 Benny
B002
1/08/2004
P04 Printer 12,000
2 C03 Pim Australia E03 Benny
B003
3/08/2004
P01 Sofa Bed 12,500
10 C01 Jennifer
Newzeland
E01 Johnson
B004
4/08/2004
P03 Dinning Table 5,000 2 C02 David USA E01 Johnson
B004
4/08/2004
P05 Electric Fan 3,000 5 C02 David USA E01 Johnson
B005
4/08/2004
P07 Air Conditioner
20,000
2 C01 Jennifer
Newzeland
E02 Smith
B005
4/08/2004
P04 Printer 12,000
1 C01 Jennifer
Newzeland
E02 Smith
Partial Dependenc
y
Partial Dependenc
y
Fully Functional
Dependency
วธิรการปรบัจาก 1 NF เป็น 2NF ใหแ้ตกรเีลชนั โดยเอากลุ่มแอตทรบิวิต์ท่ีขึ้นกับบางสว่นของ Primary ออกเป็นรเีลชนัใหม่
SmithE02NewzelandJenniferC01112,000PrinterP044/08/2004B005
•Emp_Name
Emp_IDAddressCus_
NameCus_ID
QTY
Unit PriceP_NameP_IDBill_DateBill_
No
SmithE02NewzelandJenniferC01220,000Air ConditionerP074/08/2004B005JohnsonE01USADavidC0253,000Electric FanP054/08/2004B004
JohnsonE01USADavidC0225,000Dinning TableP034/08/2004B004
JohnsonE01NewzelandJenniferC011012,500Sofa BedP013/08/2004B003
BennyE03AustraliaPimC03212,000PrinterP041/08/2004B002
BennyE03AustraliaPimC03103,000Electric FanP051/08/2004B002
BennyE03AustraliaPimC03215,000BedP021/08/2004B002
SmithE02AustraliaPimC0325,000Dinning TableP031/08/2004B001
SmithE02AustraliaPimC03112,500Sofa BedP011/08/2004B001
Unit PriceP_NameP_ID
Emp_NameEmp_IDAddressCus_NameCus_ID Bill_DateBill_No
QTYP_IDBill_No
Bill_No Bill_Date Cus_ID
Cus_Name Address Emp
_ID•Emp_Name
B001 1/08/2004 C03 Pim Australia E02 SmithB002 1/08/2004 C03 Pim Australia E03 BennyB003 3/08/2004 C01 Jennife
rNewzeland
E01 Johnson
B004 4/08/2004 C02 David USA E01 JohnsonB005 4/08/2004 C01 Jennife
rNewzeland
E02 Smith
P_ID P_Name Unit PriceP01 Sofa Bed 12,500P03 Dinning Table 5,000P02 Bed 15,000P05 Electric Fan 3,000P04 Printer 12,000P07 Air Conditioner 20,000
Bill_No P_ID QTYB001 P01 1B001 P03 2B002 P02 2B002 P05 10B002 P04 2B003 P01 10B004 P03 2B004 P05 5B005 P07 2B005 P04 1
Bill
Product
Bill_Details
Thrid Normal Form (3NF)นิยามของ 3NFรเีลชนัท่ีเป็น 3NF ต้องต้องเป็น 2NF มาก่อน และ ไมม่แีอตทรบิวิต์ท่ีไมไ่ด้เป็นคียห์ลักขึน้ต่อค่าของแอตทรบิวิต์ท่ีไมไ่ด้เป็นคียห์ลัก(Transitive Dependency)
Bill_No Bill_Date Cus_ID
Cus_Name Address Emp
_ID•Emp_Name
B001 1/08/2004 C03 Pim Australia E02 SmithB002 1/08/2004 C03 Pim Australia E03 BennyB003 3/08/2004 C01 Jennife
rNewzeland
E01 Johnson
B004 4/08/2004 C02 David USA E01 JohnsonB005 4/08/2004 C01 Jennife
rNewzeland
E02 Smith
P_ID P_Name Unit PriceP01 Sofa Bed 12,500P03 Dinning Table 5,000P02 Bed 15,000P05 Electric Fan 3,000P04 Printer 12,000P07 Air Conditioner 20,000
Bill_No P_ID QTYB001 P01 1B001 P03 2B002 P02 2B002 P05 10B002 P04 2B003 P01 10B004 P03 2B004 P05 5B005 P07 2B005 P04 1
Bill
Product
Bill_Details
เป็น 3NF แล้ว
ยงัไมเ่ป็น 3NF
ยงัไมเ่ป็น 3NF
P_ID P_Name Unit PriceP01 Sofa Bed 12,500P03 Dinning Table 5,000P02 Bed 15,000P05 Electric Fan 3,000P04 Printer 12,000P07 Air Conditioner 20,000
Product
อาจแตกตารางเป็นดังนี้ P_ID P_NameP01 Sofa BedP03 Dinning TableP02 BedP05 Electric FanP04 PrinterP07 Air Conditioner
P_Name Unit PriceSofa Bed 12,500Dinning Table 5,000Bed 15,000Electric Fan 3,000Printer 12,000Air Conditioner 20,000
แต่การแตกแบบนี้ท้ำาให้เกิดความซ้ำ้าซอ้นมากกวา่ จงึไม่
นิยมแตกออก
ให้ใชร้เีลชนั Product เดิมก่อนแตก
Bill_No Bill_Date Cus_ID
Cus_Name Address Emp
_ID•Emp_Name
B001 1/08/2004 C03 Pim Australia E02 SmithB002 1/08/2004 C03 Pim Australia E03 BennyB003 3/08/2004 C01 Jennife
rNewzeland
E01 Johnson
B004 4/08/2004 C02 David USA E01 JohnsonB005 4/08/2004 C01 Jennife
rNewzeland
E02 Smith
Bill
Cus_ID Cus_Name Address
C03 Pim AustraliaC01 Jennifer NewzelandC02 David USA
Emp_ID •Emp_Name
E02 SmithE03 BennyE01 Johnson
Bill_No Bill_Date Cus_ID Emp_ID
B001 1/08/2004
C03 E02
B002 1/08/2004
C03 E03
B003 3/08/2004
C01 E01
B004 4/08/2004
C02 E01
B005 4/08/2004
C01 E02
Customerแตกรเีลชนัได้เป็นดังน้ี
Employee
Bill
Transitive Dependency
P_ID P_Name Unit PriceP01 Sofa Bed 12,500P03 Dinning Table 5,000P02 Bed 15,000P05 Electric Fan 3,000P04 Printer 12,000P07 Air Conditioner 20,000
ProductBill_No P_ID QTYB001 P01 1B001 P03 2B002 P02 2B002 P05 10B002 P04 2B003 P01 10B004 P03 2B004 P05 5B005 P07 2B005 P04 1
Bill_Details
Cus_ID Cus_Name Address
C03 Pim AustraliaC01 Jennifer NewzelandC02 David USA
Emp_ID Emp_NameE02 SmithE03 BennyE01 Johnson
Bill_No Bill_Date Cus_ID Emp_ID
B001 1/08/2004
C03 E02
B002 1/08/2004
C03 E03
B003 3/08/2004
C01 E01
B004 4/08/2004
C02 E01
B005 4/08/2004
C01 E02
Customer
Employee
Bill