28
บทที่ 4 ข้อมูลในรูปแบบบรรทัดฐาน (Normalization)

Unit 4 normalazation

Embed Size (px)

Citation preview

บทท 4 ขอมลในรปแบบบรรทดฐาน

(Normalization)

สาระส าคญ

ประเดนทส าคญของฐานขอมลเชงสมพนธ (Relational Database) คอการออกแบบฐานขอมลทจดเกบวาา

ตารางขอมล (Table) วมมคามซ าซอนเกดขน ดงนน Normalization ก คอการปรบปรงโครงสรางขอมลของฐานทมคามซ าซอนใหอ ในรปแบบทเปนบรรทดฐาน

จดประสงคท วป

• เพอใหเขาใจถงปญหาตาง ๆ ของการจดการฐานขอมล

• เพอใหทราบคามหมา ของ Functional Dependency

• เพอใหทราบ และเขาใจลกษณะของ Functional Dependency ในแตละประเาท

• เพอใหเขาใจธการจดการขอมลใหอ ในรปแบบบรรทดฐาน

• เพอใหทราบลกษณะของรปแบบบรรทดฐานในแตละชน

จดประสงคเชงพฤตกรรม

• สามารถ กต อ างปญหาตาง ๆ ของการจดการฐานขอมลวด

• สามารถก าหนด Functional Dependency ในแตละขนในตารางฐานขอมลวดถกตอง

เนอหาสาระ

• ปญหาการจดการฐานขอมล (Anomalies)

• Function Dependency

• การจดการขอมลในรปแบบบรรทดฐาน (Normalization)

4.1 ปญหาการจดการฐานขอมล (Anomalies)

Anomalies เปนปญหาทส าคญในการจดการฐานขอมล โด มทงหมด 3 ประเาท คอ การเพม ลบ แกวข ในการอธบา จะใชตารางเกบขอมลพนกงาน ตอวปน

Table:EmployeeDepartment

employeeID Name Job salary departmentID Name

1111 Somchai Programmer 15000 128 Research andDevelopment

2222 Wichit DBA 13500 42 Finance

3333 Somjai Programmer 16500 128 Research andDevelopment

4444 Aphitsit SystemAdminstrator

12000 130 Marketing

4445 Youngyut Programmer 20000 128 Research andDevelopment

4446 Somjit Programmer 16500 128 Marketing

ปญหาการเพมขอมล (Insertion Anomalies)

จะเกดขนเมอท าการเพมขอมลใหมลงในตาราง สมมตเราท าการเพมขอมลของพนกงานใหมลงในตารางซงจะตองเพมขอมลรหสพนกงาน ชอพนกงาน ต าแหนงงาน เงนเดอน รหสแผนก และชอแผนก พนกงานคนหนงอ แผนกรหส 42 ชอแผนกคอ Finance แตปรากฏาเราพมพชอแผนกเปน Human Resource จะท าใหตอนนขอมลในตารางจะมพนกงานทอ แผนกรหส 42 จ านน 2 คน คนหนงอ ชอแผนก Finance แตอกคนอ ชอแผนก Human Resource จะเหนาขอมลของพนกงาน 2 คนนเกดขอผดพลาดขอมลวมถกตองปรากฏการณนจะเร กา Isertion Anomalies

ปญหาการลบขอมล (Deletetion Anomalies)

จะเกดขนเมอท าการลบขอมลออกจากตาราง สมมตนหนงบรษทแหงนพนกงานทอ แผนกรหส 128 ลาออกพรอมกนทงหมด ดงนนเราจะท าการลบแถของขอมลทพนกงานอ แผนกรหส 128 ออกจากตารางทงหมด ท าใหตอนนขอมลของบรษทจะวมวดเกบรหสแผนกรหส 128 ชอแผนก Research and Development เอาวแล ทง ๆ ทแผนกนวมวดถกล บแตอ างใด ปรากฏการณนเร กา Deletion Anomalies

ปญหาการแกวขขอมล (Deletetion Anomalies)

จะเกดขนเมอท าการเปล นแปลงแกวขขอมลในตาราง สมมตบรษทแหงนตองการแกวขชอแผนก Research and Development เปน Information Technology ดงนนเราจะตองท าการแกวขในแถทมขอมลของพนกงานอ ในแผนกรหส 128 ทงหมด แตถาบงเอญในการแกวขนอาจจะแกวขวมครบทกแถ

4.2 Functional Dependency

ก าหนดน ามของ Functional Dependency ดงน “ก าหนดให A และ B เปนฟลดในตาราง R จะวดา B มฟงกชนขนกบ A กตอเมอ แตละคาของ A จะก าหนดคาของ B วดเสมอ” สามารถเข นคามสมพนธวดดงน

A ===== Bในทนเราใหฟลด A เปนต ก าหนดคา (Determinant) ของฟลด B (Dependency)

Employee

Employee_ID Employee_Name

001 มาน

002 ชใจ

003 ปต

004 ชใจ

005 วระ

2. Functional Dependency ทเกดจาก Determaint 1 คา และ Dependency หลา คา

Employee_ID ====> Employee_Name,Address,Salary หมา คามาถาก าหนดรหสพนกงาน (Employee_ID) ขนมาคา 1 คา จะสามารถหาคาของชอพนกงาน (Employee_Name) ทอ (Address)

และเงนเดอน (Salary) วด 1 ชดเสมอ

Employee

Employee_ID Emplyee_name Address Salary

001 มาน กรงเทพฯ 15,000

002 ชใจ นนทบร 18,500

003 ปต เชยงใหม 9300

004 ชใจ สงขลา 20,000

005 วระ นครราชสมา 12,500

3. Functional Dependency ทเกดจาก Determinant หลา คาและ Dependency 1 คา

Customer_ID, Product_ID ====> Quantity หมา คามา ถาก าหนดรหสลลกคา (Customer_ID) และรหสสนคา (Product_ID) ขนมา 1 ชด จะสามารถหาคาของจ านนสนคาวด 1 คา

Order_Product

Customer_ID Product_ID Quantity

001 P01 5

P02 10

002 P01 15

P03 20

4. Functional Dependency ในลกษณะคามสมพนธแบบ 2 ทาง

Project_NoManager_ID

Manager_ID Project_No

Project_NoManager_ID

หมา คามาถาก าหนดรหสโครงการ (Project_No) ขนมา 1 คาจะสามารถก าหนด รหสผจดการทดแลโครงการ (Manager_ID)วด 1 คา และในทางกลบกน ถาก าหนดรหสผจดการทดแลโครงการ (Manager_ID) ขนมาคา 1 คา และในทางกลบกน ถาก าหนดรหสผจดการทดแลโครงการ (Manager_ID) ขนมา 1 คาจะสามารถก าหนดรหลสโครงการ (Project_No) วด 1 คาเชนกน

Project_Manager

Project_No Manager_ID

P001 M111

P002 M222

P003 M333

P004 M444

4.3 การจดการขอมลในรปแบบบรรทดฐาน (Normalization)

ก าหนดตารางฐานขอมลตอวปนส าหรบเปนต อ างการท า Normalization ในระดบตาง ๆ

Table : Employee ตารางแสดงขอมลพนกงาน และคามถนดของพนกงาน

employeeID name job salary departmentID Skill

1111 Somchai Programmer 15000 128 C, Java, Perl

2222 Witchit DBA 13500 42 DB2

3333 Somjai Programmer 16500 128 Java, VB

4444 Aphisit SystemAdminstrator

12000 130 Linux, NT

4445 Youngyut Programmer 20000 128 PHP

4446 Somjit Programmer 16500 128 JSP

Table : EmployeeDepartment

employeeID name job salary departmentID Name

1111 Somchai Programmer 15000 128 Research and Development

2222 Witchit DBA 13500 42 Finance

3333 Somjai Programmer 16500 128 Research and Development

4444 Aphisit SystemAdminstrator

12000 130 Marketing

4445 Youngyut Programmer 20000 128 Research and Development

4446 Somjit Programmer 16500 128 Marketing

O First Normal Form 1NF

1NF เปนการท า normalization ขนท 1 โด ก าหนดา table ใด ๆ จะเปน 1NF จะตองเปน table ทวมมคา multivalued column หรอ repeating group หรอพดในอกมมหนงา table นนจะตองมคณสมบตatomicity

O First Normal Form 1NF

employeeID name job salary departmentID skill

1111 Somchai Programmer 15000 128 C

1111 Somchai Programmer 15000 128 Java

1111 Somchai Programmer 15000 128 Perl

2222 Wichit DBA 13500 42 DB2

3333 Somjai Programmer 16500 128 Java

3333 Somjai Porgrammer 16500 128 VB

4444 Aphitsit SystemAdministrator

12000 130 Linux

4444 Aphitsit SystemAdministrator

12000 130 NT

4445 Youngyut Programmer 20000 128 PHP

4446 Somjit Programmer 16500 128 JSP

O Second Normal Form : 2NF

2NF เปนการท า normalization ขนท 2 โด ก าหนดา table ใด ๆ จะเปน 2NF จะตองเปน table ท

เปน 1NF และจะตองวมม non-key column ทขนกบบางส นของ key

จากตารางท 4.8 ตาราง Employee หลงจากปรบใหเปน 1NF แตตารางน งวมเปน 2NF เนองจากมฟลด employeeID และ Sklls เปน Key ซงถาก าหนดคาขนมา 1 ชดจะสามารถอางถงคาของฟลด name ฟลด job ฟลด salary และฟลด departmentID วด 1 คา ดงนนเข นแสดงคามสมพนธของ Functional Dependency ชดนวดเปน

employeeID, skills name, job, salary, departmentID

นอกจากนนถาก าหนดคาของฟลด employeeID ขนมา 1 คากจะสามารถก าหนดคาของฟลด name ฟลด salary และฟลด departmentID วด 1 คา เชนกน

employeeID name, job, salary, departmentID

ซงท าใหตาราง employee น งวมเปน 2NF เพราะม non-key column ในทนคอฟลด name ฟลด job ฟลด salary และฟลด departmentID

Table : Employee

employeeID name job salary departmentID

1111 Somchai Programmer 15000 128

2222 Witchit DBA 13500 42

3333 Somjai Programmer 16500 128

4444 Aphisit SystemAdminstrator

12000 130

4445 Youngyut Programmer 20000 128

4446 Somjit Programmer 16500 128

ส นตารางทเหลอกคอ ตดฟลดทเปน non-key column คอ ฟลด name ฟลด job ฟลด salary และ ฟลด departmentID ทขนกบบางส นของ key ออกวป ดงน

Table : Employee

employeeID skill

1111 C

1111 Java

1111 Perl

2222 DB2

3333 Java

3333 VB

4444 Linux

4444 NT

4445 PHP

4446 JSP

O Third Normal Form : 3NF

3NF เปนการท า normalization ขนท 3 โด ก าหนดา table ใด ๆ จะเปน 3NF จะตองเปน table ทเปน 2NF และจะตองวมม non-key column คใดทขนตอกน

จากตารางท 4.7 ตาราง EmployeeDepartment จะสามารถเข น FD วดคอ

employeeID name,job,salary,departmentID,Name

departmentID Name

โด ในทนฟลด employeeID เปน Primary Key แต าฟลด DepartmentID วมวดเปน Key ซงฟลด departmentID และ Name เปน non-key column ทขนตอกน

ธการปรบใหตารางเปน 3NF กคอ การแตกตารางเปน 2 ตาราง โด แ กตารางทมคของ non-key column ทขนตอกนออกมา ดงน

Table : Department

departmentID Name

42 Finance

128 Research and Development

130 Marketing

ธการปรบใหตารางเปน 3NF กคอ การแตกตารางเปน 2 ตาราง โด แ กตารางทมคของ non-key column ทขนตอกนออกมา ดงน

Table : Employee

employeeID name job salary departmentID

1111 Somchai Programmer 15000 128

2222 Wichit DBA 13500 42

3333 Somjai Programmer 16500 128

4444 Aphisit System Administrator

12000 130

4445 Youngyut Programmer 20000 128

4446 Somjit Programmer 16500 128

หลงจากท า normaliozation มาถง 3NF แลจะวดตารางขอมลทงหมด 3 ตารางดงน

• Employee (employeeID,name,job,salary,departmentID)

• Department (departmentID, name)

• EmployeeSkills (employeeID,skill)

นอกจาการท า Normalization ทง 3 ระดบ คอ 1NF,2NF และ 3NF แล งมระดบทท าให Normal Form ระดบท 3 มคามแขงแกรงขนอก เร กา Boyce-Codd Normal Form (BCNF) พฒนาขนโด Rboyceและ E.F. Codd

Normalization ในระดบทสงขนวปอกคอ Fourth Normal Form (4NF) และ Fifth Normal Form (5NF) อ างวรกตามรปแบบ 4NF และ 5NF ในทางปฏบตถอาเกดขนวด ากมาก

ขอสงเกต

ในการท า Normalization ตารางฐานขอมลจะช แกปญหาเรองการจดการฐานขอมลทง 3 กรณวดคอ Isertion Anomalies, Deletion Anomalies และ Update Anomalies วด แตเมอเราท า Normalization ตารางฐานขอมลโด เฉพาะเมอท า normal form ในระดบทสงขนเรอ ๆ แลจะท าใหเกดการแตกตารางเพมขน ดงนนปญหาทตามมากคอ การเขาถงขอมลในตารางทงหมด จะตองใชธการเชอมตาราง (Join Table) ซงการเข น SQL (Structure Query Language) เพอเชอมตารางกจะมคาม ง ากเพมขน และการเขาถงขอมลจากหลา ๆ ตารางกจะใชเลาในการเขาถงมากกาเดม

สรป

Anomalies เปนปญหาทส าคญในการจดการฐานขอมล โด มทงหมด 3 ประเาท คอ การเพม ลบ แกวข ในการแกปญหา Anomalies ทง 3 นสามารถท าวดด การท าใหตารางขอมลอ ในรปแบบบรรทดฐาน (Normalization)

ก าหนดน ามของ Functional Dependency ดงน “ก าหนดให A และ B เปนฟลดในตาราง R จะวดา B มฟงกชนขนกบ A กตอเมอ และคาของ A จะก าหนดคาของ B วดเสมอ “ สามารถเข นคามสมพนธวดดงน

A B

การจดการขอมลในรปแบบบรรทดฐาน (Normalization) ก าหนดลกษณะของแตละระดบวดดงน

1NF เปนการท า Normalization ขนท 1 โด ก าหนดา table ใดๆ จะเปน 1NF จะตองเปน table ทวมมคา multivalues column หรอ repeating group

2NF เปนการท า Normalization ขนท 2 โด ก าหนดา table ใดๆ จะเปน 2NF จะตองเปน table ทเปน1NF และจะตองวมม non-key column ทขนกบบางส นของ key

3NF เปนการท า Normalization ขนท 3 โด ก าหนดา table ใดๆ จะเปน 3NF จะตองเปน table ทเปน2NF และจะตองวมม non-key column คใดทขนตอกน