Upload
jirawanmalasai
View
10
Download
1
Embed Size (px)
Citation preview
สาระส าคญ
ประเดนทส าคญของฐานขอมลเชงสมพนธ (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 คใดทขนตอกน