(การลดความซ้ำซ้อนของข้อมูล) Information Technology 5 V > Normalization (การลดความซ้ำซ้อนของข้อมูล) Aj.Wichan Hongbin
Normalization Normalization คือ กระบวนการปรับปรุงโครงสร้างข้อมูลของฐานข้อมูลที่มีความซ้ำซ้อนให้อยู่ในรูปแบบที่เป็นบรรทัดฐาน Normal Form มีอยู่ 3 ระดับด้วยกัน คือ 1. Normal Form ระดับที่ 1 หรือเรียกว่า 1NF 2. Normal Form ระดับที่ 2 หรือเรียกว่า 2NF 3. Normal Form ระดับที่ 3 หรือเรียกว่า 3NF Aj.Wichan Hongbin
The Process of Normalization Aj.Wichan Hongbin © Pearson Education Limited 1995, 2005
นอกจากนี้ยังมีระดับที่ทำให้ Normal Form ระดับที่ 3 มีความแข็งแกร่งขึ้นกว่าเดิม เรียกว่า BCNF ( Boyce-Codd Normal Form) ซึ่งพัฒนาขึ้นโดย R.Boyce และ E.F.Codd โดย Normal Form ทุกระดับตั้งอยู่บนพื้นฐานของฟังก์ชันการขึ้นต่อกันระหว่างแอททริบิวต์ของ Relation ( Functional Dependency ) Normal Form ในระดับที่สูงขึ้นไปอีกที่อยู่ถัดจาก BCNF ก็ได้ถูกพัฒนาขึ้น คือ Normal Form ระดับที่ 4 ( 4NF) และระดับที่ 5 (5NF) ซึ่งพัฒนาโดย Fagin(1977,1979) อย่างไรก็ตามรูปแบบ 4NF และ 5NF ในทางปฏิบัติถือว่าเกิดขึ้นได้ยากมาก Aj.Wichan Hongbin
วัตถุประสงค์ในการทำให้เป็นรูปแบบบรรทัดฐาน เพื่อลดความซ้ำซ้อนของข้อมูลที่จัดเก็บในแต่ละรีเลชัน ทำให้เกิดประโยชน์ดังนี้ ประหยัดเนื้อที่ในการจัดเก็บข้อมูล ลดปัญหาขาดความถูกต้องของข้อมูล ลดปัญหาที่เกิดจากการปรับปรุง เพิ่มเติม และลบข้อมูล Aj.Wichan Hongbin
แสดงรูปแบบไม่ปกติ (Unnormalized) Aj.Wichan Hongbin
1.2 เขียนผังรายการ (Record Layout) 1 NF : First Normal Form 1.1 จัดการกลุ่มข้อมูลที่ซ้ำ โดยเติมข้อมูลส่วนที่เว้นว่างให้เต็มตาราง เพราะส่วนที่เว้นว่างคอมพิวเตอร์ไม่สามารถเข้าใจได้ว่าคืออะไร 1.2 เขียนผังรายการ (Record Layout) Aj.Wichan Hongbin
1.2 เขียนผังรายการ (Record Layout) รูปแบบ ชื่อผังรายการ(ชื่อคอลัมน์1,ชื่อคอลัมน์2,…,ชื่อคอลัมน์N) Order(OrderNum, OrderDate, ProductNum, ProductDesc,NumOrdered) Aj.Wichan Hongbin
Order(OrderNum, OrderDate, ProductNum, ProductDesc,NumOrdered) 1.3 พิจารณาคอลัมน์ที่มีอิทธิพลต่อทุกคอลัมน์ในแฟ้มข้อมูล ให้ขีดเส้นใต้ และเรียกคอลัมน์นั้นว่า คีย์หลัก (PK:Primary Key) กรณี คอลัมน์มีข้อมูลไม่ซ้ำและสามารถเป็นคีย์ได้ ให้เก็บไว้ทีหลัง เพื่อรวมคอลัมน์ที่เหลือ Order(OrderNum, OrderDate, ProductNum, ProductDesc,NumOrdered) Order(OrderNum, OrderDate, ProductNum, ProductDesc,NumOrdered) Aj.Wichan Hongbin
Order(OrderNum, OrderDate, ProductNum, ProductDesc,NumOrdered) 2 NF (Second Form) 2.1 พิจารณาคอลัมน์ที่ไม่ใช่คีย์ (Non-key) ว่าอยู่ภายในอิทธิพลของคอลัมน์ใด โดยโยงหัวลูกศรไปที่คอลัมน์นั้น Order(OrderNum, OrderDate, ProductNum, ProductDesc,NumOrdered) ** กรณีคอลัมน์ใดไม่สามารถควบคุมโดยคีย์ใดคีย์หนึ่งได้ ให้รวมไว้กับคีย์ทั้งหมด Aj.Wichan Hongbin
2.2 แยกผังรายการ ออกเป็นผังรายการย่อย Order(OrderNum, OrderDate, ProductNum, ProductDesc,NumOrdered) Order …………..(OrderNum, OrderDate) Product …………..(ProductNum, ProductDesc) Order-detail ………….(OrderNum,ProductNum,NumOrdered) Aj.Wichan Hongbin
Order(OrderNum, OrderDate) Product(ProductNum, ProductDesc) ER-Diagram Order(OrderNum, OrderDate) Product(ProductNum, ProductDesc) Order-detail(OrderNum,ProductNum,NumOrdered) Aj.Wichan Hongbin
Order(OrderNum, OrderDate) Product(ProductNum, ProductDesc) ordered Order OrderNum OrderDate Product ProductNum ProductDesc N M Order-detail Aj.Wichan Hongbin
แสดงรูปแบบไม่ปกติ (Unnormalized) Aj.Wichan Hongbin
1 NF : จัดการกลุ่มข้อมูลที่ซ้ำ Aj.Wichan Hongbin
เขียนผังรายการ และกำหนดคอลัมน์ที่เป็นคีย์ บัญชี(เลขที่บัญชี,ชื่อบัญชี,วันที่,รหัสเจ้าหนี้,ชื่อเจ้าหนี้,จำนวนเงิน) บัญชี(เลขที่บัญชี,ชื่อบัญชี,วันที่,รหัสเจ้าหนี้,ชื่อเจ้าหนี้,จำนวนเงิน) Aj.Wichan Hongbin
2 NF : แยกออกเป็นผังรายการย่อย บัญชี(เลขที่บัญชี,ชื่อบัญชี,วันที่,รหัสเจ้าหนี้,ชื่อเจ้าหนี้,จำนวนเงิน) Aj.Wichan Hongbin
2 NF : แยกออกเป็นผังรายการย่อย บัญชี(เลขที่บัญชี,ชื่อบัญชี,วันที่,รหัสเจ้าหนี้,ชื่อเจ้าหนี้,จำนวนเงิน) บัญชี …………..(เลขที่บัญชี,ชื่อบัญชี,วันที่) เจ้าหนี้ …………..(รหัสเจ้าหนี้,ชื่อเจ้าหนี้) บัญชีฝาก …………..(เลขที่บัญชี,รหัสเจ้าหนี้,จำนวนเงิน ) Aj.Wichan Hongbin
บัญชี(เลขที่บัญชี,ชื่อบัญชี,วันที่) เจ้าหนี้(รหัสเจ้าหนี้,ชื่อเจ้าหนี้) บัญชีฝาก(เลขที่บัญชี,รหัสเจ้าหนี้,จำนวนเงิน) Aj.Wichan Hongbin
บัญชี เจ้าหนี้ บัญชีฝาก เลขที่บัญชี ชื่อบัญชี วันที่ จำนวน เงิน เจ้าหนี้ รหัสเจ้าหนี้ ชื่อเจ้าหนี้ N M บัญชีฝาก Aj.Wichan Hongbin
แสดงรูปแบบไม่ปกติ (Unnormalized) แบบฝึกหัด ข้อที่ 1 แสดงรูปแบบไม่ปกติ (Unnormalized) จงหา Normalization จงหา E-R Diagram Aj.Wichan Hongbin
1 NF (First Normal Form) Aj.Wichan Hongbin
1 NF (First Normal Form) Aj.Wichan Hongbin
แสดงรูปแบบไม่ปกติ (Unnormalized) แบบฝึกหัด ข้อที่ 2 แสดงรูปแบบไม่ปกติ (Unnormalized) กรณี คอลัมน์มีข้อมูลไม่ซ้ำและสามารถเป็นคีย์ได้ ให้เก็บไว้ทีหลัง เพื่อรวมคอลัมน์ที่เหลือ และ PKของแต่ละกลุ่มที่แยกไป เพื่อใช้สำหรับเชื่อมตาราง จงหา Normalization จงหา E-R Diagram Aj.Wichan Hongbin
แสดงรูปแบบไม่ปกติ (Unnormalized) แบบฝึกหัด ข้อที่ 3 จงหา Normalization จงหา E-R Diagram แสดงรูปแบบไม่ปกติ (Unnormalized) Aj.Wichan Hongbin
แสดงรูปแบบไม่ปกติ (Unnormalized) แบบฝึกหัด ข้อที่ 4 จงหา Normalization จงหา E-R Diagram แสดงรูปแบบไม่ปกติ (Unnormalized) Aj.Wichan Hongbin
แสดงรูปแบบไม่ปกติ (Unnormalized) แบบฝึกหัด ข้อที่ 5 แสดงรูปแบบไม่ปกติ (Unnormalized) จงหา Normalization จงหา E-R Diagram Aj.Wichan Hongbin
Relation with transitive dependency (a) SALES relation with simple data Aj.Wichan Hongbin
BUT Salesperson Region Relation with transitive dependency CustID Name CustID Salesperson CustID Region All this is OK (2nd NF) BUT Salesperson Region FD ระหว่าง Non-key Attribute Aj.Wichan Hongbin
Removing a transitive dependency (a) Decomposing the SALES relation Aj.Wichan Hongbin
Relations in 3NF Now, there are no transitive dependencies… Salesperson Region CustID Name CustID Salesperson Now, there are no transitive dependencies… Both relations are in 3rd NF Aj.Wichan Hongbin