2 2271).pdfสถาน อนาม ย ค อ สถานบร การทางสาธารณส ข เป นหน วยงานท อย ภายใต กระทรวง
ซอฟต์แวร์พัฒนาระบบฐานขอม ูล้ - .th ·...
Transcript of ซอฟต์แวร์พัฒนาระบบฐานขอม ูล้ - .th ·...
ซอฟตแ์วร์พัฒนาระบบฐานข้อมลูNormalization
ปริญญา น้อยดอนไพร
สาขาวิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี
มหาวิทยาลัยราชภัฏสุราษฎร์ธานี
V.2507201301
วัตถุประสงค์
นักศึกษามีความรู้ความเข้าใจ ดังนี้
• Normalization
• ขั้นตอนการทํา Normalization
• Functional Dependency (FDs)
• ประเภทของ Functional Dependency
• First Normal Form (1NF)
• Second Normal Form (2NF)
• Third Normal Form (3NF)
Normalization คือ วิธีการใช้ในการตรวจสอบและ
แก้ปัญหาทางด้านความซ้ําซ้อนของข้อมูล โดยการดําเนินการ
ให้ข้อมูลในแต่ละ Relation อยู่ในรูปที่เป็นหน่วยที่เล็กที่สุดที่
ไม่สามารถแตกย่อยเป็นหน่วยย่อย ๆ ได้อีก โดยยังคง
ความสัมพันธ์ระหว่างข้อมูลใน Relation ต่าง ๆไว้ตาม
หลักการที่กําหนดไว้ใน Relational Model
Normalization
ขั้นตอนในการทํา Normalization เป็นการดําเนินงานอย่าง
เป็นลําดับที่กําหนดไว้ด้วยกันเป็นขั้นตอน ตามปัญหาที่เกิดขึ้นใน
ขั้นตอนนั้น ๆ ซึ่งแต่ละขั้นตอนเป็นดังนี้
First Normalization Form (1NF)
Second Normalization Form (2NF)
Third Normalization Form (3NF)
Boyce-Codd Normalization Form (BCNF)
Fourth Normalization Form (4NF)
Fifth Normalization Form (5NF)
Normalization
Functional Dependency (FDs)
การพิจารณาโครงสร้างแต่ละ Relation ว่ามีโครงสร้างอยู่ใน
Normal Form ระดับใด จะพิจารณาจาก Functional
Dependency ซึ่งความสัมพันธ์ระหว่าง Attribute ต่าง ๆภายใน
Relation กับ Attribute หรือกลุ่ม Attribute ที่ทําหน้าที่เป็น
Key ของ Relation นั้น ซึ่งความสัมพันธ์นี้ จะถูกนิยามด้วยรูปแบบ
ทางคณิตศาสตร์ที่เรียกว่า “Functional Dependency” ดังนี้
FD : Determinant‐attribute Dependency‐attribute
Functional Dependency (FDs)
โดยที่ค่า Determinant-attribute หมายถึง
Attribute ที่ระบุค่าด้วยค่าใดค่าหนึ่งแล้ว สามารถแสดงค่า
ของ Dependency-attribute ซึ่งเป็น Attribute ที่มี
ความสัมพันธ์กับ Determinant-attribute นั้นออกมาเช่น
ตารางแสดงความสัมพันธ์ระหว่างหมายเลขบัตรประชาชน
และชื่อเจ้าของบัตรดังนี้
Person_ID Person_Name
1922224757784 สมเกียรติ
1733299743822 นํ้าผึ้ง
1439224567381 กาญจนา
3829112233289 พินรัฏ
3294779122333 ดวงแกว้
1995553434654 กาญจนา
Person_ID Person_Name
Functional Dependency (FDs)
Functional Dependency (FDs)
Person_NamePerson_ID
จากรูปแสดงการกาํหนดความสัมพันธ์ระหว่าง
Attribute ในรูปของ Functional Dependency
ประเภท Functional Dependency (FDs)
Functional Dependency แบ่งออกเป็น 4 ประเภทดังนี้
1. Functional Dependency ที่เกิดขึ้นจากความสัมพันธ์ระหว่าง
Determinant และ Dependency อย่างละ 1 ค่า เช่น
ความสัมพันธ์ระหว่างหมายเลขบัตรประจําตัวประชาชนและชื่อ
เจ้าของบัตร ดังตารางนี้Person_ID Person_Name
1922224757784 สมเกียรติ
1733299743822 นํ้าผึ้ง
Person_ID Person_Name
2. Functional Dependency ที่เกิดขึ้นจากความสัมพันธ์ระหว่าง
Determinant 1 ค่ากับ Dependency หลายค่า เช่น หมายเลข
บัตรประชาชน และข้อมูลที่ปรากฏอยู่บนบัตรประชาชน ดังตารางนี้
Person_ID Person_Name LName Address BirthDate
1922224757784 สมเกียรติ ชื่นยศ 123 บา้นโป่ง ราชบุรี 3/03/2511
1733299743822 นํ้าผึ้ง สู่สุข 39/6 คลองสาน กทม. 24/6/2539
1439224567381 กาญจนา หิรัญรัตน์ 24/6 ลาดพร้าว1 กทม. 24/6/2539
ประเภท Functional Dependency (FDs)
Person_ID Person_Name LName Address BirthDate
1922224757784 สมเกียรติ ชื่นยศ 123 บา้นโป่ง ราชบุรี 3/03/2511
1733299743822 นํ้าผึ้ง สู่สุข 39/6 คลองสาน กทม. 24/6/2539
1439224567381 กาญจนา หิรัญรัตน์ 24/6 ลาดพร้าว1 กทม. 24/6/2539
Person_ID Person_Name , LName , Address , BirthDate
ประเภท Functional Dependency (FDs)
3. Functional Dependency ที่มีความสัมพันธ์ 2 ทาง ซึ่งเป็น
Functional Dependency ทั้ง Determinant และ Dependency
ต่างสามารถทําหน้าที่ของอีกฝ่ายหนึ่งได้ เช่น ความสัมพันธ์ระหว่างชื่อ
ของผู้จัดการโครงการ (Attribute “Manager”) กับชื่อโครงการ
(Attribute “Project_No”) ซึ่งถ้าทราบชื่อผู้จัดการโครงการจะ
สามารถทราบถึงชื่อของโครงการที่ผู้จัดการนั้นเป็นเจ้าของได้ ใน
ขณะเดียวกัน เมื่อทราบชื่อโครงการก็จะสามารถทราบถึงชื่อของ
ผู้จัดการโครงการนั้นได้ เช่นเดียวกัน ดังตารางต่อไปนี้
ประเภท Functional Dependency (FDs)
Project_No Manager
PJ001 EM004
PJ002 EM045
PJ003 EM981
Project_No Manager
Manager Project_No
Manager Project_No
ประเภท Functional Dependency (FDs)
4. Functional Dependency ที่ต้องใช้ Determinant
มากกว่า 1 ค่า เพื่ออ้างถึง Dependency เช่น ความสัมพันธ์
ระหว่างจํานวนสินค้าที่ผลิตได้ของสินค้าแต่ละชนิดภายใต้
สายการผลิตต่างๆ ดังตารางต่อไปนี้
ประเภท Functional Dependency (FDs)
Product_Line Item_No Used_Qut
L001
I012
I019
I024
30
40
90
L004 I001 73
L005
I001
I012
I024
45
98
34
Product_Line , Item_No Used_Qut
ประเภท Functional Dependency (FDs)
First Normal Form (1NF)
ขั้นตอนนี้เป็นขั้นตอนสําหรับปรับโครงสร้างของ Relation
เพื่อให้ทุก Attribute ของ Relation มีคุณสมบัติ Atomicity กล่าวคือ
โครงสร้างข้อมูลของ Relation ในแบบ 1NF ต้องประกอบด้วย
Table ที่อยู่ในรูป 1NF
1. มี Attribute ที่ได้กําหนดให้เป็น Primary Key
2. ไม่มี Repeating Group
3. Attribute อื่นๆ ต้องขึ้นอยู่กับ Primary Key
ตัวอย่างที่ 1 แสดงการทํา First Normal Form โดย
กําหนดให้ Relation “Order” มีข้อมูลดังนี้
First Normal Form (1NF)
Cust_No Cust_Name City Zone_SaleOrder_Content
Product_ID Order_Qut
C001 นารี เกิดสวา่ง อยธุยา 001
P001
P003
P004
24
30
50
C002 สลกัจิตร สวา่งภาพ ศรีสะเกษ 002
P001
P002
P004
29
40
30
C003 สุทิศา เจ๊กสกลุ เชียงใหม่ 004 P005 60
C004 ตน้สาย ตนัเจริญ เชียงใหม่ 004 P003 40
Cust_No Cust_Name City Zone_Sale Product_ID Order_Qut
C001 นารี เกิดสวา่ง อยธุยา 001 P001 24
C001 นารี เกิดสวา่ง อยธุยา 001 P003 30
C001 นารี เกิดสวา่ง อยธุยา 001 P004 50
C002 สลกัจิตร สวา่งภาพ ศรีสะเกษ 002 P001 29
C002 สลกัจิตร สวา่งภาพ ศรีสะเกษ 002 P002 40
C002 สลกัจิตร สวา่งภาพ ศรีสะเกษ 002 P004 30
C003 สุทิศา เจ๊กสกลุ เชียงใหม่ 004 P005 60
C004 ตน้สาย ตนัเจริญ เชียงใหม่ 004 P003 40
Cust_No,Product_ID Cust_Name,City,Zone_Sale, Order_Qut
ผลลัพธ์ที่ได้จากการทํา 1NF ในรูปของ Function Dependency
ดังนี้
เขียนให้อยู่ในรูปแบบของ Table ได้ดังนี้
Order(Cust_No,Product_ID,Cust_Name,City,Zone_Sale,Order_Qut)
First Normal Form (1NF)
Second Normal Form (2NF)
Table ที่อยู่ในรูปแบบ 2NF จะต้อง
1. อยู่ในรูปแบบของ 1NF และ
2. ไม่มี Partial dependency
Partial dependency เกิดขึ้นในกรณีที่มีข้อมูลในบาง Attribute
ขึ้นอยู่กับ Dependency บางส่วนของ Primary Key จาก table ที่
ได้จาก 1NF เราหาได้ว่า Cust_No และ Product_ID รวมกัน ทํา
หน้าที่เป็น Primary Key ขั้นตอนต่อไปคือ หาว่า มี Attribute
ใดบ้างที่มีความเป็น Partial dependency นั้นคือ ขึ้นอยู่กับ
Cust_No เพียงอย่างเดียวหรือขึ้นอยู่กับ
Product_ID เพียงอย่างเดียว และ Attribute ใด ที่ขึ้นอยู่กับ
Cust_No และ Product_ID อย่างแท้จริง
Cust_No Cust_Name,City,Zone_Sale
ผลลัพธ์ที่ได้จากการทํา 2NF ในรูปของ Function Dependency
ดังนี้
Cust_No ,Product_ID Order_Qut
Second Normal Form (2NF)
Customer(Cust_No, Cust_Name,City,Zone_Sale)
Order (Cust_No ,Product_ID,Order_Qut)
เขียนให้อยู่ในรูปแบบของ Table ได้ดังนี้
Second Normal Form (2NF)
Third Normal Form (3NF)
Table ที่อยู่ในรูปแบบ 3NF จะต้อง
1. อยู่ในรูปแบบของ 2NF และ
2. ไม่มี Transitive dependency
Transitive dependency เกิดขึ้นในกรณีที่มี Attribute บางตัว
ขึ้นอยู่กับ Dependency Attribute ที่ไม่ใช่ Key (non-key
attribute) จาก ตารางที่ได้จาก 2NF
Cust_No Cust_Name,Zone_Sale
ผลลัพธ์ที่ได้จากการทํา 3NF ในรูปของ Function Dependency
ดังนี้
Zone_Sale City
Cust_No ,Product_ID Order_Qut
Third Normal Form (3NF)
Customer(Cust_No, Cust_Name,Zone_Sale)
CustZone (Zone_Sale ,City)
เขียนให้อยู่ในรูปแบบของ Table ได้ดังนี้
Order (Cust_No ,Product_ID,Order_Qut)
Third Normal Form (3NF)