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

เกี่ยวกับ ปัญหาการใช้งาน การติดตั้ง ฐานข้อมูล MySql Oracle MSSQL ect...
การเขียน คำสั่ง SQL เพื่อดึกข้อมูล บอร์ดนี้ควรระบุโครงสร้างตารางของท่านในคำถามด้วยนะ

Moderator: mindphp

ภาพประจำตัวสมาชิก
md040
PHP Super Member
PHP Super Member
โพสต์: 265
ลงทะเบียนเมื่อ: 07/11/2016 10:37 am

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

โพสต์ที่ยังไม่ได้อ่าน โดย md040 »

Relational_Model.svg.png
Relational_Model.svg.png (22.2 KiB) Viewed 1275 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
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 31