Normalization (นอร์มัลไลเซชั่น) คืออะไร

ตอบกระทู้

รูปแสดงอารมณ์
:icon_plusone: :like: :plusone: :gfb: :-D :) :( :-o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: :angry: :baa: :biggrin:
รูปแสดงอารมณ์อื่นๆ

BBCode เปิด
[img] เปิด
[url] เปิด
[Smile icon] เปิด

กระทู้แนะนำ
   

มุมมองที่ขยายได้ กระทู้แนะนำ: Normalization (นอร์มัลไลเซชั่น) คืออะไร

Normalization (นอร์มัลไลเซชั่น) คืออะไร

โดย md040 » 28/11/2016 10:02 am

Relational_Model.svg.png
Relational_Model.svg.png (22.2 KiB) Viewed 1291 times
Normalization (นอร์มัลไลเซชั่น) คือ ปรับโครงสร้างของตาราง ให้อยู่ในรูปแบบ “Normal Form” (นอร์มัลฟอร์ม) ให้อยู่ในลำดับต่างๆ ที่มีคุณสมบัติแตกต่างกันในแต่ละระดับ เพืื่อลดความซำ้ซ้อนของข้อมูล และลดความผิดพลาดของข้อมูล
- First Normal Form : 1NF (เฟิร์ส นอร์มัลฟอร์ม)
  • คุณสมบัติ: ทุก Attribute (แอททริบิว) เก็บค่าเพียงค่าเดียว Single-Value (ซิงเกิลแวลู) หรือมีความเป็น Atomic (อะตอมมิค)
    การทำ 1NF: มี 3 วิธี
    เช่น ตาราง Department (ดีพาร์ทเม้นต์) ที่ยังไม่ได้นอร์มัลไลเซชั่น จะเห็นว่า Attribute (แอททริบิว) “Location” ยังไม่เป็น Atomic (อะตอมมิค)
    ==================================
    || DID || DNAME || DLOCATION ||
    =================================
    || D01 || Store || Bangkok, Rayong, Yala ||
    || D02 || Warehouse || Bangkok, Changmai ||
    =========================
    1. Relation Composition (รีเรชั่น คอมโพซิส) คือ การนำแอททริบิวที่มีข้อมูลหลายค่ามาสร้างเป็นตารางใหม่
    เช่น จากตาราง Department (ดีพาร์ทเม้นต์) แบ่งเป็น “ Department1” และ “ Department 2”
    Department 1:
    ===================
    || DID || DNAME ||
    ===================
    || D01 || Store ||
    || D02 || Warehouse ||
    ===================
    Department 2:
    =====================
    || DID || DLOCATION ||
    =====================
    || D01 || Bangkok ||
    || D01 || Rayong ||
    || D01 || Yala ||
    || D02 || Bangkok ||
    || D02 || Changmai ||
    =====================
    2. กำหนด Maximum (แม็กซิมัม) ให้แอททริบิวที่ยังไม่เป็น Atomic (อะตอมมิค)
    เช่น กำหนดให้ “Location” ไม่เกิน 3 ที่ ก็จะได้ DLOCATION1, DLOCATION2 และ DLOCATION3
    ========================================================
    || DID || DNAME || DLOCATION1 || DLOCATION2 || DLOCATION3 ||
    ========================================================
    || D01 || Store || Bangkok || Rayong || Yala ||
    || D02 || Warehouse || Bangkok || Changmai || Null ||
    =======================================================
    3. เก็บข้อมูลที่ไม่เป็น Atomic (อะตอมมิค) แยกกัน และเพิ่มแอททริบิว “Location” เป็น Key (คีย์) ด้วย
    เช่น
    ==============================
    || DID || DNAME || DLOCATION ||
    ==============================
    || D01 || Store || Bangkok ||
    || D01 || Store || Rayong ||
    || D01 || Store || Yala ||
    || D02 || Warehouse || Bangkok ||
    || D02 || Warehouse || Changmai ||
    ===============================
    ข้อเสีย คือ ทำให้เกิดข้อมูลซำ้ซ้อนมากขึ้น
- Second Normal Form : 2NF (เซคันดารี่ นอร์มัลฟอร์ม)
  • คุณสมบัติ: แอททริบิวทุกตัวต้องขึ้นกับคีย์หลักทุกตัว ไม่ขึ้นกับคีย์ใดคีย์หนึ่งในตาราง ขั้นตอนนี้ต้องกำจัดแอททริบิวที่ไม่ขึ้นกับคีย์หลัก
    เช่น ตารางพนักงานในแผนก “Employee” ที่มีแอททริบิว “EID” เป็นคีย์หลัก แต่แอททริบิว “DNAME” ก็สามารถขึ้นกับ “DID” ได้
    =========================================
    || EID || ENAME || DID || DNAME ||
    =========================================
    || E01 || AAA || D01 || Store ||
    || E02 || BBB || D01 || Warehouse ||
    =========================================
    ต้องทำการแยกให้เป็น 2 ตารางแทนโดยที่
    ตารางที่ 1 มี “EID” ทำหน้าที่เป็นคีย์หลัก กับ “ENAME”
    ตารางที่ 2 มี “DID” ทำหน้าที่เป็นคีย์หลัก และ “DNAME”
- Third Normal Form : 3NF (เธิด นอร์มัลฟอร์ม)
  • คุณสมบัติ: ปรับมาจาก 2NF ขึ้นตอนก็จะคล้ายกับ 2NF ที่แอททริบิวทุกตัวต้องขึ้นกับคีย์หลักทุกตัว ไม่ขึ้นกับคีย์ใดคีย์หนึ่งในตาราง ต้องกำจัดแอททริบิวที่ไม่ขึ้นกับคีย์หลักเช่นกัน
- Boyce-Codd Normal Form : BCNF (บอยซ์คอดด์ นอร์มัลฟอร์)
  • คุณสมบัติ: แอททริบิวในตารางขึ้นกับ Candidate Key (แคนดิเดตคีย์)
    Candidate Key (แคนดิเดตคีย์) คือ คีย์ที่มีค่าไม่ซำ้กัน สามารถนำมาแทนคีย์หลักได้ เช่น รหัสประจำตัวประชาชน
    เช่น ตาราง “Employee” ที่มีแอททริบิว “IDCARD” หรือเลขประจำตัวประชาชนที่ไม่ซ้ำกัน สามารถนำมาทำเป็นคีย์หลักได้
    ===================================
    || EID || ENAME || IDCARD ||
    ==================================
    || E01 || AAA || 1234567890123 ||
    || E02 || BBB || 0123456789123 ||
    ==================================
- Fourth Normal Form : 4NF (โฟร์ นอร์มัลฟอร์ม)
  • คุณสมบัติ: จะต้องไม่มีการขึ้นต่อกันเชิงกลุ่มภายในรีเลชัน
- Fifth Normal Form : 5NF (ฟิฟ นอร์มัลฟอร์ม)
  • คุณสมบัติ: จะต้องไม่มีคุณสมบัติของการขึ้นต่อกันแบบเชื่อมโยง join (จอย)
การทำนอร์มัลไลเซชั่นเป็นขั้นตอนที่สำคัญในการออกแบบฐานข้อมูล ทำให้ความซำ้ซ้อนของข้อมูลลดลงก็จริง แต่ไม่จำเป็นต้องทำถึงขั้นที่ 5 เสมอไปเพราะนอร์มัลไลเซชั่นยิ่งลำดับสูงขึ้นจำนวนตารางจะเพิ่มขึ้นแต่การเข้าถึงข้อมูลก็จะช้าลงด้วย ต้องพิจารณาตามความเหมาะสม และการเข้าถึงข้อมูลได้อย่างรวดเร็ว

ที่มาภาพ: commons.wikimedia.org/wiki/File:Relational_database_terms.svg

ข้างบน