- 5.1 เปลี่ยนตารางที่ยังไม่เคย Normalization เป็น First Normal Form หรือ 1NF
- วิธีพิจารณา คือ แยกข้อมูลเป็นระเบียน โดยไม่มีการจัดกลุ่ม
ตารางที่ไม่ผ่านการ normalization orderid
305orderdate
31/01/47productid
432
455
467quan
20
2
1ตารางที่ผ่านการ normalization ในระดับ 1NF orderid orderdate productid quan 305 31/01/47 432 20 305 31/01/47 455 2 305 31/01/47 467 1
5.2 เปลี่ยนจาก 1NF เป็น 2NF(Second Normal Form) คือการเปลี่ยนตารางที่มีปัญหา 4 ประการ - วิธีพิจารณาเปลี่ยน 1NF เป็น 2NF คือ ไม่มี non key ตัวใด ไม่สัมพันธ์กับ primary key (ให้พิจารณาเฉพาะ non key และ primary key)
- สิ่งที่ได้จากตาราง 1 ตาราง จะแตกออกมาเป็นหลายตาราง
- 5.2.1 แก้ไขข้อมูล ต้องแก้หลายระเบียน
- 5.2.2 มีข้อมูลเดียวกันในหลายระเบียน อาจขัดแย้งกันได้
- 5.2.3 การเพิ่มข้อมูลทำได้ยาก
- 5.2.4 การลบข้อมูลทำได้ยาก
ท่านลองพิจารณา Schema ของตารางนี้ว่าจะแยกได้กี่ตาราง
จาก orderid,custid,custname,date,proid,proname,price,quantity,categoryid,categoryname
เป็น orders (orderid,custid,custname,date,proid,proname,price,quantity)
เป็น categories (categoryid,categoryname)
เหตุที่แยก categories ออกมา เพราะ categoryid ไม่สัมพันธ์กับ orderid แต่สัมพันธ์กับ proid โดยตรง จึงต้องแยกออกมา
5.3 เปลี่ยนจาก 2NF เป็น 3NF(Third Normal Form) คือแก้ปัญหายังไม่หมด อาจยังมีข้อมูลที่มีปัญหาอีก จึงต้องทำ 3NF - วิธีพิจารณาเปลี่ยน 2NF เป็น 3NF คือ ไม่มี non key ตัวใด ขึ้นอยู่กับ non key ตัวอื่นใน entity เดียวกัน (ให้พิจารณาเฉพาะ non key และ non key)
จาก orders (orderid,custid,custname,date,proid,proname,price,quantity)
เป็น orders (orderid,custid,date)
เป็น customers (custid,custname)
เป็น order details (orderid,proid,price,quantity)
เป็น products (proid,proname)
Search
Sunday, December 14, 2008
Relational Database Normalization 6/7
ขั้นตอนการ Normalization
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment