logo normalization · นิยาม multi-valued dependency • a, b, c คือ attribute...
TRANSCRIPT
LOGO Normalization
อาจารย์ ดร.ณัฐพงศ์ วงศ์พร้อมมูล คณะวศิวกรรมศาสตร์และเทคโนโลยีอุตสาหกรรม
มหาวทิยาลัยศิลปากร
Normalization
Normalization คือกระบวนการปรับเปลี่ยนโครงสร้างของ Relation
Schema ให้อยู่ในรูปแบบ “Normal Form” ในอันดับต่างๆ
Normal Form (NF) คือรูปแบบโครงสร้างของ Relation ที่มีคุณสมบัติเฉพาะ NF มีหลายระดับ NF ระดับที่สูงกว่า จะมีการจัดโครงสร้างข้อมูลที่ดีกว่า และลดปัญหาที่อาจเกิดขึ้นใน NF ระดับที่ต่่ากว่าได้
ประโยชน์หลักๆของการท่า Normalization คือลดความซ้่าซ้อนของข้อมูล และก่าจัดปัญหาความผิดปกติของข้อมูลที่เกิดจากการ เพิ่ม/ลบหรื อแก้ไขข้อมูล (Insertion/Deletion/Update Anomalies)
2
Normalization
ในการท่า Normalization หากมีการเปลี่ยนแปลง Relation Schema
จะต้องค่านึงถึง การคงความถูกต้องของข้อมูล คือ ต้องรักษาคุณสมบัติเหล่านี้ไว้ คือ
Lossless/Non-additive Join Property คือ เมื่อมีการแบ่งแยก relation
ออกเป็น relation ย่อย แล้ว ถ้าน่ามา join ต้องได้ข้อมูลที่ครบถ้วน ถูกต้อง เหมือนเดิม และไม่มีข้อมูลเกิน
Dependency Preservation Property คือ คุณสมบัติการรักษา Dependency ที่มีอยู่เดิม ให้คงอยู่ต่อไป
ใน Normal Form อันดับที่ 1-3 มีการพิจารณา Key ของ Relation
และ Functional Dependencies ส่วน NF อันดับที่สูงขึ้นไปจะพิจารณา Dependency รูปแบบอื่นๆ เพิ่มเติม
3
• ตัวอย่าง Relation ที่เป็น Non-1NF
Non-First Normal Form
4
• Relation นี้ ไม่อยู่ใน 1NF เพราะ Attribute DLOCATIONS ไม่เป็น Atomic เนื่องจาก DLOCATIONS เก็บค่าชื่อเมืองที่ตั้งของ Department
มากกว่าหนึ่งค่า
คุณสมบัติของ 1NF
• ทุก Attribute ของ Relation เก็บค่าข้อมูลเพียงค่าเดียว นั่นคือแต่ละ Tuple ในทุก Attribute จะมีเพียงข้อมูลเดียว เรียกว่า Atomic หรือ Indivisible Value ดังนั้น Attribute ของ Relation ต้องเป็น Simple
และ Single-valued Attribute
First Normal Form (1NF)
5
มีด้วยกัน 3 วิธีการ คือ
1. Relation Decomposition
การแบ่งออกเป็น Relation ย่อย นั่นคือเอา Attribute ที่ไม่เป็น Atomic
ไปสร้าง Relation ใหม่พร้อมด้วย Primary Key ของ Relation เดิม
2. เพิ่ม Attribute ใหม ่
เป็นการก่าหนดค่า Maximum ของจ่านวนข้อมูลใน Attribute ที่ไม่เป็น Atomic แล้วเพิ่มเป็น Attribute ใหม่
3. เพิ่ม Tuple
เก็บข้อมูลของ Attribute ที่ไม่เป็น Atomic แยกกันเป็นแต่ละ Tuple ซึ่ง Key ของ Relation จะถูกเพิ่มด้วย Attribute ที่ไม่เป็น Atomic
เทคนิคการท่า Relation ให้เป็น 1NF
6
ตัวอย่าง
• Department แตกออกเป็น Department1 และ Department2 ซึ่งเป็น 1NF ทั้งสอง Relation ดังนี ้
Relation Decomposition
7
เพิ่ม Attribute ใหม ่
8
ตัวอย่าง • สมมติใน Relation Department แต่ละ Department มี Location
ไม่เกิน 3 แห่งแล้วจึงเปลี่ยน Attribute ให้เป็น DLOCATION_1
DLOCATION_2 และ DLOCATION_3
ข้อเสีย
• ท่าให้มีหลาย Tuple ที่มีค่าว่าง (NULL) เกิดขึ้น
• ในบางกรณี ไม่สามารถทราบค่า Maximum ของจ่านวน Attribute ได้
ตัวอย่าง
เก็บข้อมูลของ Attribute ที่ไม่เป็น Atomic แยกกันเป็นแต่ละ Tuple ซึ่ง Key ของ Relation จะถูกเพิ่มด้วย Attribute ที่ไม่เป็น Atomic
เพิ่ม Tuple
9
ข้อเสีย คือเกิดข้อมูลที่ซ้าซ้อนกันมาก (Data Redundancy) ซึ่งอาจก่อให้เกิดปัญหา Anomaly ตามมา ซึ่งมี 3 ลักษณะ คือ
1. Insertion Anomaly เช่น ถ้าต้องการเพิ่ม Location ใหม่ของ Department หมายเลข 4 จ่าเป็นต้องใส่ DNAME และ DMGRSSN ซึ่งเป็นข้อมูลที่มีอยู่แล้ว และต้องใส่ข้อมูลให้ถูกต้อง สอดคล้องกับที่มีอยู่เดิม ไม่เช่นนั้นก็จะเกิดความขัดแย้งกันของข้อมูลได้
2. Deletion Anomaly เช่น หากต้องการลบ Location ของ Department
หนึ่งซึ่งเหลือเป็น Tuple สุดท้าย ข้อมูลอื่นที่เกี่ยวข้องของ Department นั้นจะถูกลบไปทั้งหมด
3. Update Anomaly เช่น หากมีการเปลี่ยนแปลง Manager ของ Department ต้องตามไปแก้ไข ในทุก ๆ Tuple ที่เป็น Department เดียวกัน หากแก้ไขไม่ครบถ้วน ก็จะเกิดความขัดแย้งของข้อมูล
เทคนิคการท่า Relation ให้เป็น 1NF
10
ในการท่า 2NF มีการพิจารณาถึง Functional Dependency ระหว่าง Primary Key กับ Attribute อื่น ๆ ใน Relation นั้น
• Full Functional Dependency คือ FD ที่ ตัว Dependent ขึ้นอยู่กับทุก Attribute ของ Determinant ไม่ใช่เพียงบางส่วน นั่นคือ FD: X
Y เป็น Full FD ก็ต่อเมื่อ ไม่มี Z ซึ่งเป็น Subset แท้ของ X โดยมีสัญลักษณ ์Z X ซึ่งมีคุณสมบัติ Z Y
• FD ที่ไม่ใช่ Full FD เรียกว่า Partial Functional Dependency
ข้อสังเกต หาก X ประกอบด้วย Attribute เดียว X Y จะเป็น Full FD
เสมอ
Second Normal Form (2NF)
11
ตัวอย่าง AXYZ Full FD
BXZ Full FD
ACXYZ Partial FD (เพราะมี AXYZ)
XYEF Full FD (หากไม่มี XEF หรือ YEF)
• Prime Attribute คือ attribute ซึ่งเป็นส่วนหนึ่งของ Primary Key
• Nonprime Attribute คือ Attribute ซึ่งไม่เป็นส่วนหนึ่งของ Primary
Key
Second Normal Form (2NF)
12
Relation R อยู่ใน Second Normal Form
• ถ้า R เป็น 1NF และไม่มี Nonprime Attribute ใดใน R ที่มีความสัมพันธ์ แบบ Partial FD กับ Primary Key
• Primary key ต้องมีความสัมพันธ์แบบ Full FD กับทุก Nonprime
Attribute
• ไม่มี Nonprime Attribute ใดที่ขึ้นอยู่กับบางส่วนของ Primary Key
นิยาม Second Normal Form (2NF)
13
ตัวอย่าง
Second Normal Form (2NF)
14
Primary Key ของ ORDER1 คือ {CustID, ProductID}
FD ของ ORDER1 คือ
• FD1: {CustID, ProductID} OrderQTY
• FD2: CustID {CustName, City, ZoneSale}
ORDER1 เป็น 1NF แต่ไม่อยู่ใน 2NF เพราะ FD2 ท่าให้เกิด Partial FD
จาก Primary Key ไปยัง Nonprime Attribute
การท่า Relation ให้อยู่ใน 2NF ท่าได้โดยการแบ่งแยก R ออกเป็น Relation ย่อย ด้วยการน่า Nonprime Attribute ที่มีปัญหาออกไปสร้าง Relation ใหม่ พร้อมด้วยส่วนหนึ่งของ Primary Key ท่ีเป็นตัวก่าหนดค่า Attribute นั้น โดยใน Relation เดิม Attribute ส่วนหนึ่งของ Primary
Key นั้นเป็น Foreign Key ที่ชี้ไปยัง Relation ใหม่ ซึ่งมี Attribute เป็น Primary Key
เช่น ORDER1 จะถูกแบ่งเป็น CUST กับ CustOrder ซึ่งเป็น 2NF ทั้งคู่
2NF Normalization
15
ในการท่า 3NF มีการพิจารณาถึง Transitive Dependency ระหว่าง Primary Key กับ Attribute อื่นๆ ใน Relation นั้น Transitive Dependency
FD: XY เป็น Transitive Dependency ถ้า
• มี Z ซึ่ง XZ และ ZY
ตัวอย่าง AXYZ
YZE
AE เป็น Transitive Dependency
Third Normal Form (3NF)
16
Relation R อยู่ใน 3NF
• ถ้า R เป็น 2NF และ R ต้องไม่มี Transitive Dependency ระหว่าง Primary กับ Nonprime Attribute
• ไม่มี Nonprime Attribute ใดที่ขึ้นกับ Nonprime Attribute อื่น
• ไม่มี XY โดยที่มี XZ และ ZY ซึ่ง X เป็น Primary Key และ Y, Z เป็น Nonprime Attribute ทั้งคู่
นิยาม Third Normal Form (3NF)
17
การท่า Relation ให้อยู่ใน 3NF ท่าได้โดยการแยก R ออกเป็น Relation ย่อย ด้วยการน่า Nonprime attribute ที่ท่าให้เกิด Transitive
Dependency ออกไปสร้าง Relation ใหม่ (YและZ) ซึ่ง Relation ใหม่จะมี Determinant Attribute (Z) เป็น Primary Key และ ที่ Relation เดิมยังคง Z ไว้เพ่ือเป็น Foreign Key
3NF Normalization
18
3NF Normalization
19
หาก Relation CUST เกิดมีความสัมพันธ์ระหว่าง City กับ ZoneSale คือ FD3 : CityZoneSale นั่นคือ เมือง ๆ หนึ่งสัมพันธ์กับค่า ZoneSale เพียงค่าเดียว ท่าให้เกิดเป็น FD ระหว่าง Nonprime Attribute จึงท่าให้ Relation CUST ไม่อยู่ใน 3NF โดยสามารถแยกออกมาเป็น CUST2
และ CityZone ดังนี ้
สรุปการท่า Normalization ของ ORDER1
20
General Definition of 2NF and 3NF
21
ส่าหรับ Relation ที่มี Candidate Key มากกว่าหนึ่ง รูปทั่วไปของ 2NF
และ 3NF จะน่าทุก Candidate key มาร่วมพิจารณาด้วย นั่นคือจะได้
• Prime Attribute คือ Attribute ที่เป็นส่วนหนึ่งของ Candidate Key
(ตัวใดตัวหนึ่งรวมถึง Primary Key)
• Nonprime Attribute คือ Attribute ที่ไม่ได้เป็นส่วนหนึ่งของ Candidate
Key ตัวใด
ตัวอย่างการใช้งาน
Non-1NF
ค าน าหน้า ชื่อ นามสกุล รหัสบัตรประชาชน รหัสวชิา วชิา
นาย สมชาย ใจดี 5384032132356 111 222
ภาษาไทย ภาษาองักฤษ
นางสาว สมหญิง ใจมัน่ 5384032144444 222 333
ภาษาองักฤษ วิทยาศาสตร์
นาย สมปอง ใจงาม 5384032155555 333 111
วิทยาศาสตร์ ภาษาไทย
Database design for Applications
First Normalized Form (1NF)
ค าน าหน้า ชื่อ นามสกุล รหัสบัตรประชาชน รหัสวชิา วชิา
นาย สมชาย ใจดี 5384032132356 111 ภาษาไทย
นาย สมชาย ใจดี 5384032132356 222 ภาษาองักฤษ
นางสาว สมหญิง ใจมัน่ 5384032144444 222 ภาษาองักฤษ
นางสาว สมหญิง ใจมัน่ 5384032144444 333 วิทยาศาสตร์
นาย สมปอง ใจงาม 5384032155555 333 วิทยาศาสตร์
นาย สมปอง ใจงาม 5384032155555 111 ภาษาไทย
Partial Functional Dependency
Database design for Applications
Second Normalized Form (2NF)
ค าน าหน้า
ชื่อ นามสกุล รหัสบัตรประชาชน
นาย สมชาย ใจดี 5384032132356
นางสาว สมหญิง ใจมัน่ 5384032144444
นาย สมปอง ใจงาม 5384032155555
รหัสบัตรประชาชน
รหัสวชิา วชิา
5384032132356 111 ภาษาไทย
5384032132356 222 ภาษาองักฤษ
5384032144444 222 ภาษาองักฤษ
5384032144444 333 วิทยาศาสตร์
5384032155555 333 วิทยาศาสตร์
5384032155555 111 ภาษาไทย
Transition Functional Dependency
Database design for Applications
Third Normalized Form (3NF)
ค าน าหน้า ชื่อ นามสกุล รหัสบัตรประชาชน
นาย สมชาย ใจดี 5384032132356
นางสาว สมหญิง ใจมัน่ 5384032144444
นาย สมปอง ใจงาม 5384032155555
รหัสวชิา ชื่อวชิา
111 ภาษาไทย
222 ภาษาองักฤษ
333 วิทยาศาสตร์
รหัสบัตรประชาชน รหัสวชิา
5384032132356 111
5384032132356 222
5384032144444 222
5384032144444 333
5384032155555 333
5384032155555 111
PK PK
PK PK
ตัวอย่าง การท่า Normalization จาก 1NF ถึง 3NF
26
Boyce-Codd Normal Form (BCNF)
27
BCNF เป็นรูปแบบหนึ่งของ 3NF ที่มีเง่ือนไข หรือคุณสมบัติเพิ่มเติม
• Relation R อยู่ใน BCNF ถ้า หาก R มี FD: XA แล้ว X คือ Super
Key ของ R
(หรือ หาก FD: XA เป็น Minimal แล้ว X คือ Candidate Key)
• ใน BCNF ทุก FD ของ Relation R ตัว Determinant ต้องมีคุณสมบัติเป็น Key เท่านั้น
ส่วนใหญ่ Relation ที่เป็น 3NF มักเป็น BCNF ยกเว้น Relation ที่มี FD:
XA โดยที่ X ไม่ใช่ Super Key แต่ A เป็น Prime Attribute ซึ่งใน 3NF ยอมรับได้
รูปแบบ Relation ที่อยู่ใน 3NF แต่ไม่ใช่ BCNF
28
Key ของ R คือ AB แต่มี FD2 : CB ซึ่งมี ตัว Determinant คือ C ที่ไม่ใช่ key ของ R ท่าให้ R ไม่อยู่ใน BCNF
ตัวอย่าง การท่า BCNF Normalization
29
Fourth Normal Form (4NF)
30
ใน 4NF มีการพิจารณา Dependency ลักษณะอื่น นอกเหนือจาก Functional Dependency ได้แก่ Multi-valued Dependency (MVD)
• Multi-valued Dependency มักเกิดจาก Multi-valued Attributes ท่ีเป็นอิสระต่อกัน อยู่รวมกันใน Relation เดียว แล้วในการท่า 1NF ต้องกระจายค่าต่างๆออก จึงต้องมีการเก็บค่าข้อมูลซ้่าๆ เพื่อยังคง Independence ของ Attributes เดิมไว้
Fourth Normal Form (4NF)
31
นิยาม Multi-valued Dependency
• A, B, C คือ Attribute ใน Relation R
• Multi-valued Dependency จาก A ไป B เขียนแทนด้วย AB (A
Multi-determines B) ก็ต่อเมื่อ Set ของค่า B ที่จับคู่กับค่า (A,C)
ขึ้นอยู่กับค่า A เท่านั้น และเป็นอิสระต่อ C หมายความว่า ค่า A หนึ่งๆ match กับค่า B กลุ่มหนึ่ง ไม่ว่าค่า C จะเป็นอะไรก็แล้วแต่ ค่า B ที่ match
กับ (A,C) ขึ้นอยู่กับ A เท่านั้น
Fourth Normal Form (4NF)
32
ตัวอย่าง
ใน Relation EMP พบว่า ENAME PNAME และ ENAME
DNAME
จากตัวอย่างข้างต้น Relation EMP เป็น BCNF (ทุก Attribute
เป็น Primary Key จึงไม่มีข้อขัดแย้งใดๆ ต่อคุณสมบัติของ 1NF, 2NF, 3NF
และ BCNF) แต่พบว่ามี MVD คือ ENAMEPNAME|DNAME
ซึ่งขัดแย้งต่อคุณสมบัติของ 4NF Relation EMP จึงไม่อยู่ใน 4NF
Fourth Normal Form (4NF)
33
การท่าให้ Relation EMP เป็น 4NF ท่าได้โดยการแยกเป็น 2 Relation ย่อย EMP_PROJECTS กับ EMP_DEPENDENTS ดังนี ้
Fifth Normal Form (5NF)
34
• ใน 5NF หรือ Project-Join Normal Form มีการพิจารณาถึง Dependency ที่เรียกว่า Join Dependency ซึ่งเป็นการตรวจสอบว่า การแยก Relation ออกเป็น Relation ย่อย เมื่อน่ามารวมกัน ด้วยวิธีการ Join
นั้นได้ Relation กลับมาเหมือนเดิมทุกประการหรือไม่
• Join Operation หรือ Natural Join
o ถ้ามี R1(X,Y) และ R2(Y,Z)
o ค่า *(R1, R2) หรือ R1 JOIN R2 = R3(X, Y, Z)
โดยที่ t(x, y, z) อยู่ใน R3 ก็ต่อเมื่อ มี t1(x,y) อยู่ใน R1 และ t2(y,z) อยู่ใน R2
Fifth Normal Form (5NF)
35
Join Dependency (JD)
ในการแยก Relation ออกเป็นส่วนย่อย (Decomposition หรือ Projection
คือการเลือกบางส่วน) R1, R2, R3, …, Rn
R1, R2, R3, …, Rn มีคุณสมบัติ Join Dependency ก็ต่อเมื่อ R1 JOIN
R2 JOIN R3 … JOIN Rn = R นั่นคือเมื่อเอา Relation ย่อยมารวมกันต้องได้ Relation ดั้งเดิม ที่ใม่มีข้อมูลสูญหายและไม่มี Tuple ที่เกินมา ที่เรียกว่า Spurious Tuple
นิยาม Fifth Normal Form (5NF)
36
Relation R อยู่ใน 5NF ถ้า R อยู่ใน 4NF และ การแบ่งแยก Relation R มีคุณสมบัติ Join Dependency
ในทางปฏิบัติ Relation ที่ต้อง normalize จนถึง 4NF และ 5NF
มักไม่พบมากนัก เพราะมีรูปแบบที่ค่อนข้างเฉพาะเจาะจง โดยปกติ อย่างน้อย Relation ที่ดี ควรจะท่าการ Normalize BNCF
ตัวอย่าง การท่า 5NF Normalization
37