26
ซอฟต์แวร์พัฒนาระบบฐานข้อมูล Normalization ปริญญา น้อยดอนไพร สาขาวิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี มหาวิทยาลัยราชภัฏสุราษฎร์ธานี V.2507201301

ซอฟต์แวร์พัฒนาระบบฐานขอม ูล้ - .th · 2020-01-29 · ข. ันตอนในการท้ ํา Normalization เป. ็นการด

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ซอฟต์แวร์พัฒนาระบบฐานขอม ูล้ - .th · 2020-01-29 · ข. ันตอนในการท้ ํา Normalization เป. ็นการด

ซอฟตแ์วร์พัฒนาระบบฐานข้อมลูNormalization

ปริญญา น้อยดอนไพร

สาขาวิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี

มหาวิทยาลัยราชภัฏสุราษฎร์ธานี

V.2507201301

Page 2: ซอฟต์แวร์พัฒนาระบบฐานขอม ูล้ - .th · 2020-01-29 · ข. ันตอนในการท้ ํา Normalization เป. ็นการด

วัตถุประสงค์

นักศึกษามีความรู้ความเข้าใจ ดังนี้

• Normalization

• ขั้นตอนการทํา Normalization

• Functional Dependency (FDs)

• ประเภทของ Functional Dependency

• First Normal Form (1NF)

• Second Normal Form (2NF)

• Third Normal Form (3NF)

Page 3: ซอฟต์แวร์พัฒนาระบบฐานขอม ูล้ - .th · 2020-01-29 · ข. ันตอนในการท้ ํา Normalization เป. ็นการด

Normalization คือ วิธีการใช้ในการตรวจสอบและ

แก้ปัญหาทางด้านความซ้ําซ้อนของข้อมูล โดยการดําเนินการ

ให้ข้อมูลในแต่ละ Relation อยู่ในรูปที่เป็นหน่วยที่เล็กที่สุดที่

ไม่สามารถแตกย่อยเป็นหน่วยย่อย ๆ ได้อีก โดยยังคง

ความสัมพันธ์ระหว่างข้อมูลใน Relation ต่าง ๆไว้ตาม

หลักการที่กําหนดไว้ใน Relational Model

Normalization

Page 4: ซอฟต์แวร์พัฒนาระบบฐานขอม ูล้ - .th · 2020-01-29 · ข. ันตอนในการท้ ํา 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

Page 5: ซอฟต์แวร์พัฒนาระบบฐานขอม ูล้ - .th · 2020-01-29 · ข. ันตอนในการท้ ํา Normalization เป. ็นการด

Functional Dependency (FDs)

การพิจารณาโครงสร้างแต่ละ Relation ว่ามีโครงสร้างอยู่ใน

Normal Form ระดับใด จะพิจารณาจาก Functional

Dependency ซึ่งความสัมพันธ์ระหว่าง Attribute ต่าง ๆภายใน

Relation กับ Attribute หรือกลุ่ม Attribute ที่ทําหน้าที่เป็น

Key ของ Relation นั้น ซึ่งความสัมพันธ์นี้ จะถูกนิยามด้วยรูปแบบ

ทางคณิตศาสตร์ที่เรียกว่า “Functional Dependency” ดังนี้

FD :  Determinant‐attribute    Dependency‐attribute

Page 6: ซอฟต์แวร์พัฒนาระบบฐานขอม ูล้ - .th · 2020-01-29 · ข. ันตอนในการท้ ํา Normalization เป. ็นการด

Functional Dependency (FDs)

โดยที่ค่า Determinant-attribute หมายถึง

Attribute ที่ระบุค่าด้วยค่าใดค่าหนึ่งแล้ว สามารถแสดงค่า

ของ Dependency-attribute ซึ่งเป็น Attribute ที่มี

ความสัมพันธ์กับ Determinant-attribute นั้นออกมาเช่น

ตารางแสดงความสัมพันธ์ระหว่างหมายเลขบัตรประชาชน

และชื่อเจ้าของบัตรดังนี้

Page 7: ซอฟต์แวร์พัฒนาระบบฐานขอม ูล้ - .th · 2020-01-29 · ข. ันตอนในการท้ ํา Normalization เป. ็นการด

Person_ID Person_Name

1922224757784 สมเกียรติ

1733299743822 นํ้าผึ้ง

1439224567381 กาญจนา

3829112233289 พินรัฏ

3294779122333 ดวงแกว้

1995553434654 กาญจนา

Person_ID Person_Name

Functional Dependency (FDs)

Page 8: ซอฟต์แวร์พัฒนาระบบฐานขอม ูล้ - .th · 2020-01-29 · ข. ันตอนในการท้ ํา Normalization เป. ็นการด

Functional Dependency (FDs)

Person_NamePerson_ID

จากรูปแสดงการกาํหนดความสัมพันธ์ระหว่าง

Attribute ในรูปของ Functional Dependency

Page 9: ซอฟต์แวร์พัฒนาระบบฐานขอม ูล้ - .th · 2020-01-29 · ข. ันตอนในการท้ ํา Normalization เป. ็นการด

ประเภท Functional Dependency (FDs)

Functional Dependency แบ่งออกเป็น 4 ประเภทดังนี้

1. Functional Dependency ที่เกิดขึ้นจากความสัมพันธ์ระหว่าง

Determinant และ Dependency อย่างละ 1 ค่า เช่น

ความสัมพันธ์ระหว่างหมายเลขบัตรประจําตัวประชาชนและชื่อ

เจ้าของบัตร ดังตารางนี้Person_ID Person_Name

1922224757784 สมเกียรติ

1733299743822 นํ้าผึ้ง

Person_ID Person_Name

Page 10: ซอฟต์แวร์พัฒนาระบบฐานขอม ูล้ - .th · 2020-01-29 · ข. ันตอนในการท้ ํา Normalization เป. ็นการด

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)

Page 11: ซอฟต์แวร์พัฒนาระบบฐานขอม ูล้ - .th · 2020-01-29 · ข. ันตอนในการท้ ํา Normalization เป. ็นการด

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)

Page 12: ซอฟต์แวร์พัฒนาระบบฐานขอม ูล้ - .th · 2020-01-29 · ข. ันตอนในการท้ ํา Normalization เป. ็นการด

3. Functional Dependency ที่มีความสัมพันธ์ 2 ทาง ซึ่งเป็น

Functional Dependency ทั้ง Determinant และ Dependency

ต่างสามารถทําหน้าที่ของอีกฝ่ายหนึ่งได้ เช่น ความสัมพันธ์ระหว่างชื่อ

ของผู้จัดการโครงการ (Attribute “Manager”) กับชื่อโครงการ

(Attribute “Project_No”) ซึ่งถ้าทราบชื่อผู้จัดการโครงการจะ

สามารถทราบถึงชื่อของโครงการที่ผู้จัดการนั้นเป็นเจ้าของได้ ใน

ขณะเดียวกัน เมื่อทราบชื่อโครงการก็จะสามารถทราบถึงชื่อของ

ผู้จัดการโครงการนั้นได้ เช่นเดียวกัน ดังตารางต่อไปนี้

ประเภท Functional Dependency (FDs)

Page 13: ซอฟต์แวร์พัฒนาระบบฐานขอม ูล้ - .th · 2020-01-29 · ข. ันตอนในการท้ ํา Normalization เป. ็นการด

Project_No Manager

PJ001 EM004

PJ002 EM045

PJ003 EM981

Project_No Manager

Manager Project_No

Manager Project_No

ประเภท Functional Dependency (FDs)

Page 14: ซอฟต์แวร์พัฒนาระบบฐานขอม ูล้ - .th · 2020-01-29 · ข. ันตอนในการท้ ํา Normalization เป. ็นการด

4. Functional Dependency ที่ต้องใช้ Determinant

มากกว่า 1 ค่า เพื่ออ้างถึง Dependency เช่น ความสัมพันธ์

ระหว่างจํานวนสินค้าที่ผลิตได้ของสินค้าแต่ละชนิดภายใต้

สายการผลิตต่างๆ ดังตารางต่อไปนี้

ประเภท Functional Dependency (FDs)

Page 15: ซอฟต์แวร์พัฒนาระบบฐานขอม ูล้ - .th · 2020-01-29 · ข. ันตอนในการท้ ํา Normalization เป. ็นการด

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)

Page 16: ซอฟต์แวร์พัฒนาระบบฐานขอม ูล้ - .th · 2020-01-29 · ข. ันตอนในการท้ ํา Normalization เป. ็นการด

First Normal Form (1NF)

ขั้นตอนนี้เป็นขั้นตอนสําหรับปรับโครงสร้างของ Relation

เพื่อให้ทุก Attribute ของ Relation มีคุณสมบัติ Atomicity กล่าวคือ

โครงสร้างข้อมูลของ Relation ในแบบ 1NF ต้องประกอบด้วย

Table ที่อยู่ในรูป 1NF

1. มี Attribute ที่ได้กําหนดให้เป็น Primary Key

2. ไม่มี Repeating Group

3. Attribute อื่นๆ ต้องขึ้นอยู่กับ Primary Key

Page 17: ซอฟต์แวร์พัฒนาระบบฐานขอม ูล้ - .th · 2020-01-29 · ข. ันตอนในการท้ ํา Normalization เป. ็นการด

ตัวอย่างที่ 1 แสดงการทํา First Normal Form โดย

กําหนดให้ Relation “Order” มีข้อมูลดังนี้

First Normal Form (1NF)

Page 18: ซอฟต์แวร์พัฒนาระบบฐานขอม ูล้ - .th · 2020-01-29 · ข. ันตอนในการท้ ํา Normalization เป. ็นการด

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

Page 19: ซอฟต์แวร์พัฒนาระบบฐานขอม ูล้ - .th · 2020-01-29 · ข. ันตอนในการท้ ํา Normalization เป. ็นการด

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

Page 20: ซอฟต์แวร์พัฒนาระบบฐานขอม ูล้ - .th · 2020-01-29 · ข. ันตอนในการท้ ํา Normalization เป. ็นการด

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)

Page 21: ซอฟต์แวร์พัฒนาระบบฐานขอม ูล้ - .th · 2020-01-29 · ข. ันตอนในการท้ ํา Normalization เป. ็นการด

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 เพียงอย่างเดียวหรือขึ้นอยู่กับ

Page 22: ซอฟต์แวร์พัฒนาระบบฐานขอม ูล้ - .th · 2020-01-29 · ข. ันตอนในการท้ ํา Normalization เป. ็นการด

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)

Page 23: ซอฟต์แวร์พัฒนาระบบฐานขอม ูล้ - .th · 2020-01-29 · ข. ันตอนในการท้ ํา Normalization เป. ็นการด

Customer(Cust_No, Cust_Name,City,Zone_Sale)

Order (Cust_No ,Product_ID,Order_Qut)

เขียนให้อยู่ในรูปแบบของ Table ได้ดังนี้

Second Normal Form (2NF)

Page 24: ซอฟต์แวร์พัฒนาระบบฐานขอม ูล้ - .th · 2020-01-29 · ข. ันตอนในการท้ ํา Normalization เป. ็นการด

Third Normal Form (3NF)

Table ที่อยู่ในรูปแบบ 3NF จะต้อง

1. อยู่ในรูปแบบของ 2NF และ

2. ไม่มี Transitive dependency

Transitive dependency เกิดขึ้นในกรณีที่มี Attribute บางตัว

ขึ้นอยู่กับ Dependency Attribute ที่ไม่ใช่ Key (non-key

attribute) จาก ตารางที่ได้จาก 2NF

Page 25: ซอฟต์แวร์พัฒนาระบบฐานขอม ูล้ - .th · 2020-01-29 · ข. ันตอนในการท้ ํา Normalization เป. ็นการด

Cust_No Cust_Name,Zone_Sale

ผลลัพธ์ที่ได้จากการทํา 3NF ในรูปของ Function Dependency

ดังนี้

Zone_Sale City

Cust_No ,Product_ID Order_Qut

Third Normal Form (3NF)

Page 26: ซอฟต์แวร์พัฒนาระบบฐานขอม ูล้ - .th · 2020-01-29 · ข. ันตอนในการท้ ํา Normalization เป. ็นการด

Customer(Cust_No, Cust_Name,Zone_Sale)

CustZone (Zone_Sale ,City)

เขียนให้อยู่ในรูปแบบของ Table ได้ดังนี้

Order (Cust_No ,Product_ID,Order_Qut)

Third Normal Form (3NF)