Introduction to Database System

Download Report

Transcript Introduction to Database System

Introduction to Database System
Chapter 5:
Normalization
Adisak Intana
Lecturer
บรรทัดฐานข้ อมูล (Normalization)
เป็ นการแปลงข้ อมูลทีอ่ ยู่ในรู ปแบบซับซ้ อน ยากต่ อการ
จัดการให้ อยู่ในรู ปแบบง่ ายและสะดวกต่ อการจัดการ
Introduction to Database System
2
ความจาเป็ นของบรรทัดฐานข้ อมูล
(Normalization)
ตัวอย่ าง 5.1 ตารางโครงการ
Introduction to Database System
3
ความจาเป็ นของบรรทัดฐานข้ อมูล
(Normalization)
จากตารางตัวอย่ าง 5.1
primary key คือ …………………..
Introduction to Database System
4
ความจาเป็ นของบรรทัดฐานข้ อมูล
(Normalization)
1. ถ้ าหากต้ องการเพิม่ พนักงานใหม่ เช่ น
นายสมรักษ์ คาเหมือง ซึ่งเป็ นนักเขียนโปรแกรม
สามารถทาได้ หรือไม่ ?
2. ถ้ าหากต้ องการแก้ ไขข้ อมูลพนักงานทีช่ ื่อ
นายสมบัติ ส่ งศรี เป็ น สมบัติ ส่ งส่ วย จะแก้ ไขได้
หรือไม่ ?
Introduction to Database System
5
ความจาเป็ นของบรรทัดฐานข้ อมูล
(Normalization)
3. ถ้ าหากต้ องการระบบโครงการระบบบัญชี ออกลบได้
หรือไม่ ?
Introduction to Database System
6
ความจาเป็ นของบรรทัดฐานข้ อมูล
(Normalization)
เราเรียกปัญหาทีเ่ กิดจากการเพิม่ ข้ อมูลว่ า
insert anomaly
ปัญหาทีเ่ กิดจากการแก้ ไขข้ อมูลว่ า
update anomaly
ปัญหาทีเ่ กิดจากการลบข้ อมูลว่ า
delete anomaly
Introduction to Database System
7
ประโยชน์ ของการทาบรรทัดฐานข้ อมูล
(Normalization)
1. การทาบรรทัดฐานเป็ นเครื่องมือทีช่ ่ วยในการออกแบบ
ฐานข้ อมูลเชิงสั มพันธ์
2. ทาให้ ทราบว่ ารีเลชันที่ออกแบบ เกิดปัญหาหรื อไม่ ด้ าน
ใดบ้ าง
3. ช่ วยแก้ ปัญหาที่เกิดขึน้ กับรีเลชัน
4. ช่ วยลดปัญหาทีเ่ กิดขึน้ จากการจัดเก็บข้ อมูล
Introduction to Database System
8
ระดับของการทาบรรทัดฐานข้ อมูล
(Normalization)
การทาบรรทัดฐานข้ อมูลมีหลายระดับด้ วยกัน แต่ จะ
แนะนาให้ รู้ จกั เพียง 3 ระดับ มีดงั ต่ อไปนี้
1 NF Normalization
2 NF Normalization
3 NF Normalization
Introduction to Database System
9
1 NF Normalization
นิยาม : รีเลชันใดจะอยู่ในรู ปแบบนอร์ มลั ระดับที่ 1 (1
NF)
ได้ เมื่อรีเลชันนั้นจะต้ องไม่ มีกลุ่มข้ อมูลซ้ากันอยู่
(repeating group)
Introduction to Database System
10
1 NF Normalization
ตัวอย่ าง 5.2 ตารางโครงการ
Introduction to Database System
11
1 NF Normalization
1 แถว
1 แถว
มีหลายค่ า (repeating group)
Introduction to Database System
12
1 NF Normalization
Introduction to Database System
13
1 NF Normalization
Introduction to Database System
14
1 NF Normalization
ตัวอย่ าง 5.3 ตารางพนักงาน
Introduction to Database System
15
2 NF Normalization
นิยาม : รีเลชันใดจะอยู่ในรู ปแบบนอร์ มลั ระดับที่ 1 (1
NF)
ได้ เมื่อรีเลชันนั้น
1. เป็ น 1 NF
2. ไม่ มี partial independency
Introduction to Database System
16
2 NF Normalization
partial independency คือ
attributes ที่ไม่ ได้ เป็ น key หรือ non key จะต้ องขึน้ กับ
attributes ที่เป็ น key ทุกตัว
กล่ าวคือ
attributes ที่เป็ น key ทุกตัว จะต้ องสามารถเป็ น
ตัวแทนใช้ ในการระบุ attributes ที่ไม่ ได้ เป็ น key ได้
Introduction to Database System
17
2 NF Normalization
ตัวอย่ าง 5.4 ตารางโครงการ
Introduction to Database System
18
2 NF Normalization
จากตารางตัวอย่ าง 5.4
primary key คือ …………………..
Introduction to Database System
19
2 NF Normalization
โครงการหมายเลข 15 มีชื่อโครงการว่ าอย่ างไร
มีพนักงานที่รับผิดชอบ ชื่ออะไร รหัสอะไร ทางาน
ตาแหน่ งไหน
รหัสโครงการ, รหัสพนักงาน --> ชื่อโครงการ, ชื่อ
พนักงาน, ตาแหน่ ง
Introduction to Database System
20
2 NF Normalization
โครงการหมายเลข 15 มีชื่อโครงการว่ าอย่ างไร
รหัสโครงการ --> ชื่อโครงการ
Introduction to Database System
21
2 NF Normalization
พนักงานที่มีรหัส 101 ชื่ออะไร ทางานตาแหน่ งไหน
รหัสพนักงาน --> ชื่อพนักงาน, ตาแหน่ ง
Introduction to Database System
22
2 NF Normalization
จากตัวอย่ างไม่ เป็ น 2 NF เพราะเนื่องจาก
รหัสโครงการ, รหัสพนักงาน --> ชื่อโครงการ, ชื่อ
พนักงาน, ตาแหน่ ง
รหัสพนักงาน --> ชื่อพนักงาน, ตาแหน่ ง
มี ชื่อพนักงาน และตาแหน่ ง ทีไ่ ม่ ใช่ คยี ์ สามารถถูกคีย์
รหัสพนักงานระบุได้ โดยไม่ ต้องใช้ รหัสโครงการ
Introduction to Database System
23
2 NF Normalization
รหัสโครงการ --> ชื่อโครงการ
มี ชื่อโครงการ ทีไ่ ม่ ใช่ คยี ์ สามารถถูกคีย์รหัสโครงการ
ระบุได้ โดยไม่ ต้องใช้ รหัสพนักงาน
Introduction to Database System
24
2 NF Normalization
สรุปได้ ว่า
มีบาง attribute ทีไ่ ม่ ใช่ คยี ์ สามารถถูกระบุได้ เพียงแค่
คีย์ใดคีย์หนึ่ง
Introduction to Database System
25
2 NF Normalization
วิธีการแก้ ไข แยกเป็ น 3 ตาราง ดังนี้
โครงการ(รหัสโครงการ, ชื่อโครงการ)
พนักงาน(รหัสพนักงาน, ชื่อพนักงาน, ตาแหน่ ง)
ผู้รับผิดชอบ(รหัสโครงการ, รหัสพนักงาน)
Introduction to Database System
26
2 NF Normalization
ตารางโครงการ
Introduction to Database System
27
2 NF Normalization
ตารางพนักงาน
Introduction to Database System
28
2 NF Normalization
ตารางผู้รับผิดชอบโครงการ
Introduction to Database System
29
3 NF Normalization
นิยาม : รีเลชันใดจะอยู่ในรู ปแบบนอร์ มลั ระดับที่ 3 (3
NF)
ได้ เมื่อรีเลชันนั้น
1. เป็ น 2 NF
2. ไม่ มี transitive independency
Introduction to Database System
30
3 NF Normalization
transitive independency คือ
attributes ที่ไม่ ได้ เป็ น key หรือ non key จะขึน้ กับ
attributes ที่ไม่ ได้ เป็ น non key
Introduction to Database System
31
3 NF Normalization
Introduction to Database System
32
3 NF Normalization
พนักงานรหัส 101 ชื่ออะไร ทาตาแหน่ งไหน อยู่แผนก
อะไร
รหัสพนักงาน --> ชื่อพนักงาน, ตาแหน่ ง, รหัสแผนก,
ชื่อแผนก
Introduction to Database System
33
3 NF Normalization
แผนก 1001 มีชื่อว่ าแผนกอะไร
รหัสแผนก --> ชื่อแผนก
Introduction to Database System
34
3 NF Normalization
จากตัวอย่ างไม่ เป็ น 3 NF เพราะเนื่องจาก
รหัสแผนก --> ชื่อแผนก
มี ชื่อแผนก ทีไ่ ม่ ใช่ คยี ์ สามารถถูกรหัสแผนก ที่ไม่ ใช่ คยี ์
ระบุได้ โดยไม่ ต้องใช้ รหัสพนักงาน
Introduction to Database System
35
3 NF Normalization
Transitive dependency
รหัสพนักงาน --> รหัสแผนก --> ชื่อแผนก
Introduction to Database System
36
3 NF Normalization
วิธีการแก้ ไข แยกเป็ น 2 ตาราง ดังนี้
พนักงาน(รหัสพนักงาน, ชื่อพนักงาน, ตาแหน่ ง)
แผนก(รหัสแผนก, ชื่อแผนก)
Introduction to Database System
37
3 NF Normalization
ตารางพนักงาน
Introduction to Database System
38
3 NF Normalization
ตารางแผนก
Introduction to Database System
39
BCNF Normalization
นิยาม : รีเลชันใดจะอยู่ในรู ปแบบ BCNF ได้
เมื่อรีเลชันนั้น
1. เป็ น 3 NF
2. ไม่ มี attribute อืน่ ในรีเลชันที่สามารถระบุค่า
attribute ที่เป็ นคีย์หลัก หรือส่ วนใดส่ วนหนึ่งของคีย์
หลักในกรณีที่คยี ์ หลักเป็ นคีย์ผสม
Introduction to Database System
40
BCNF Normalization
รู ปแบบทีต่ ้ องทาให้ เป็ น BCNF มักจะมีคุณสมบัติ ดังนี้
– เป็ นรี เลชันทีม
่ ีคยี ์ คู่แข่ งหลายคีย์ (Multiple Candidate
Key) โดยทีค่ ยี ์ คู่แข่ งนั้นเป็ นคีย์ผสม (Composite key)
– คีย์ค่ ูแข่ งนั้นมีบางส่ วนซ้าซ้ อนกัน (Overlapped) มี
attribute บางตัวร่ วมกันอยู่
Introduction to Database System
41
BCNF Normalization
Introduction to Database System
42
BCNF Normalization
จากตัวอย่ างไม่ เป็ น BCNF เนื่องจาก
รหัสคนงาน, ความชานาญ--> ชื่อผู้ควบคุม
รหัสคนงาน, ชื่อผู้ควบคุม --> ความชานาญ
ชื่อผู้ควบคุม --> ความชานาญ
ตารางนีม้ ี 2 candidate keys คือ (รหัสคนงาน, ความ
ชานาญ) และ (รหัสคนงาน, ชื่อผู้ควบคุม)
Introduction to Database System
43
BCNF Normalization
ตารางนีม้ ี 2 candidate keys คือ (รหัสคนงาน, ความ
ชานาญ) และ (รหัสคนงาน, ชื่อผู้ควบคุม)
คีย์คู่แข่ งจะมีแอทริบิวท์ ทเี่ หมือนกันเชื่อมอยู่
คือ รหัสคนงาน
Introduction to Database System
44
BCNF Normalization
เกิดความซ้าซ้ อนกันของข้ อมูล
Introduction to Database System
45
BCNF Normalization
วิธีการแก้ ไขแยกเป็ น 2 ตาราง
คนงาน (รหัสคนงาน, ชื่อผู้ควบคุม)
ผู้ควบคุม (ชื่อผู้ควบคุม, ความชานาญ)
Introduction to Database System
46
4NF Normalization
นิยาม : รีเลชันใดจะอยู่ในรู ปแบบ 4 NF ได้
เมื่อรีเลชันนั้น
1. เป็ น BCNF
2. รีเลชันทีไ่ ม่ มีความสั มพันธ์ ในการระบุค่าของ
attribute แบบหลายค่ า
Introduction to Database System
47
4NF Normalization
Introduction to Database System
48
4NF Normalization
จากตัวอย่ างไม่ เป็ น 4NF เนื่องจาก
รหัสพนักงาน -->> ชื่อบุตร
ตารางนีม้ ระบุค่าของ attribute ชื่อบุตรแบบหลายค่ า
Introduction to Database System
49
4NF Normalization
วิธีการแก้ ไขแยกเป็ น 2 ตาราง
พนักงาน (รหัสพนักงาน, ชื่อพนักงาน)
บุตร(รหัสพนักงาน, ชื่อบุตร)
Introduction to Database System
50