การสร้างแบบจำลองข้อมูล (Data Modeling)

หลังจากจำลองกระบวนการทำงานของระบบด้วย DFD แล้ว แหล่งจัดเก็บข้อมูล (Data Store) ที่ปรากฏจะถูกนำมาออกแบบโครงสร้างข้อมูลอย่างละเอียด เครื่องมือที่ใช้คือ แผนภาพความสัมพันธ์ระหว่างข้อมูล (Entity-Relationship Diagram: E-R Diagram) ซึ่งเป็นพื้นฐานสำคัญของการออกแบบฐานข้อมูลเชิงสัมพันธ์
1. ความหมายและประโยชน์ของแบบจำลองข้อมูล
แบบจำลองข้อมูล (Data Model) คือ การแสดงโครงสร้างและความสัมพันธ์ของข้อมูลในระบบในรูปแบบภาพ ช่วยให้เข้าใจว่าระบบต้องจัดเก็บข้อมูลอะไรบ้าง ข้อมูลแต่ละชุดสัมพันธ์กันอย่างไร ลดความซ้ำซ้อนของข้อมูล และเป็นพิมพ์เขียวในการสร้างฐานข้อมูลจริง
2. องค์ประกอบและสัญลักษณ์ของ E-R Diagram
สัญลักษณ์ | องค์ประกอบ | ความหมายและการใช้งาน |
▭ สี่เหลี่ยม | เอนทิตี (Entity) | สิ่งที่ต้องจัดเก็บข้อมูล เช่น สมาชิก หนังสือ การยืม–คืน |
◯ วงรี | แอตทริบิวต์ (Attribute) | คุณสมบัติของเอนทิตี เช่น รหัสสมาชิก ชื่อ–สกุล |
◇ สี่เหลี่ยมข้าวหลามตัด | ความสัมพันธ์ (Relationship) | การเชื่อมโยงระหว่างเอนทิตี เช่น สมาชิก “ยืม” หนังสือ |
___ ขีดเส้นใต้ | คีย์หลัก (Primary Key) | แอตทริบิวต์ที่ใช้ระบุข้อมูลแต่ละรายการอย่างไม่ซ้ำกัน |
3. ประเภทของแอตทริบิวต์ (Attribute)
- แอตทริบิวต์อย่างง่าย (Simple) : แบ่งย่อยไม่ได้ เช่น อายุ
- แอตทริบิวต์ผสม (Composite) : แบ่งย่อยได้ เช่น ชื่อ–สกุล (ชื่อ + นามสกุล)
- แอตทริบิวต์หลายค่า (Multivalued) : มีได้หลายค่า เช่น เบอร์โทรศัพท์
- แอตทริบิวต์ที่คำนวณได้ (Derived) : คำนวณจากค่าอื่น เช่น ค่าปรับ (จากจำนวนวันเกินกำหนด)
4. คีย์ (Key)
- คีย์หลัก (Primary Key) : แอตทริบิวต์ที่ใช้ระบุข้อมูลแต่ละแถวอย่างไม่ซ้ำกัน
- คีย์คู่แข่ง (Candidate Key) : แอตทริบิวต์ที่มีคุณสมบัติเป็นคีย์หลักได้
- คีย์นอก (Foreign Key) : แอตทริบิวต์ที่ใช้เชื่อมความสัมพันธ์ไปยังคีย์หลักของอีกเอนทิตี
5. ความสัมพันธ์และคาร์ดินาลิตี (Cardinality)
คาร์ดินาลิตีระบุจำนวนของข้อมูลที่สัมพันธ์กันระหว่างเอนทิตี มี 3 รูปแบบ
รูปแบบความสัมพันธ์ | ความหมาย | ตัวอย่าง |
หนึ่งต่อหนึ่ง (1 : 1) | ข้อมูล 1 รายการสัมพันธ์กับอีกฝั่งเพียง 1 รายการ | นักเรียน 1 คน มีบัตรประจำตัว 1 ใบ |
หนึ่งต่อกลุ่ม (1 : M) | ข้อมูล 1 รายการสัมพันธ์กับอีกฝั่งได้หลายรายการ | สมาชิก 1 คน มีรายการยืมได้หลายครั้ง |
กลุ่มต่อกลุ่ม (M : N) | ทั้งสองฝั่งสัมพันธ์กันได้หลายรายการ | หนังสือหลายเล่ม ถูกยืมโดยสมาชิกหลายคน |
ความสัมพันธ์แบบ M : N ไม่สามารถสร้างเป็นตารางได้โดยตรง ต้องแยกเป็น “เอนทิตีเชื่อม (Associative Entity)” เช่น แยกความสัมพันธ์ระหว่าง สมาชิก กับ หนังสือ ออกเป็นเอนทิตี “การยืม–คืน” ที่เก็บคีย์นอกของทั้งสองฝั่ง
6. ขั้นตอนการเขียน E-R Diagram
1) ระบุเอนทิตีของระบบจากแหล่งจัดเก็บข้อมูลใน DFD และคำอธิบายความต้องการ
2) กำหนดแอตทริบิวต์และคีย์หลักของแต่ละเอนทิตี
3) ระบุความสัมพันธ์ระหว่างเอนทิตีและกำหนดคาร์ดินาลิตี
4) แปลงความสัมพันธ์ M : N เป็นเอนทิตีเชื่อม
5) ตรวจสอบความครบถ้วนและความถูกต้องของแผนภาพ
7. พจนานุกรมข้อมูล (Data Dictionary)
พจนานุกรมข้อมูลบันทึกรายละเอียดของข้อมูลแต่ละรายการ เพื่อใช้อ้างอิงในการสร้างฐานข้อมูล โดยทั่วไปประกอบด้วย ชื่อฟิลด์ ชนิดข้อมูล ขนาด ประเภทคีย์ และคำอธิบาย
8. การแปลง E-R Diagram เป็นตารางฐานข้อมูล
- เอนทิตีแต่ละตัวแปลงเป็น 1 ตาราง โดยแอตทริบิวต์กลายเป็นฟิลด์ และคีย์หลักเป็น Primary Key
- ความสัมพันธ์ 1 : M ใส่คีย์หลักของฝั่ง “หนึ่ง” ไปเป็นคีย์นอกในฝั่ง “กลุ่ม”
- ความสัมพันธ์ M : N สร้างตารางใหม่ (เอนทิตีเชื่อม) ที่มีคีย์นอกของทั้งสองฝั่ง
- จัดข้อมูลให้เป็นรูปแบบบรรทัดฐาน (Normalization 1NF–3NF) เพื่อลดความซ้ำซ้อน
9. ตัวอย่างการเขียน E-R Diagram : ระบบยืม–คืนหนังสือห้องสมุด
(1) แผนภาพ E-R — ความสัมพันธ์ M : N ระหว่างสมาชิกกับหนังสือ ถูกแยกเป็นเอนทิตีเชื่อม “การยืม–คืน” ดังภาพ
สมาชิก รหัสสมาชิก (PK) ชื่อ–สกุล ระดับชั้น | ◇ ยืม 1 : M | การยืม–คืน รหัสการยืม (PK) รหัสสมาชิก (FK) รหัสหนังสือ (FK) วันที่ยืม / กำหนดคืน | หนังสือ รหัสหนังสือ (PK) ชื่อเรื่อง ผู้แต่ง / หมวดหมู่ |
ภาพที่ 1 แผนภาพ E-R ของระบบยืม–คืนหนังสือ (สมาชิก 1:M การยืม–คืน M:1 หนังสือ)
(2) พจนานุกรมข้อมูล (Data Dictionary) ของเอนทิตี การยืม–คืน
ชื่อฟิลด์ | ชนิดข้อมูล | ขนาด | คีย์ | คำอธิบาย |
loan_id | Integer | - | PK | รหัสการยืม (ไม่ซ้ำ) |
member_id | Char | 8 | FK | รหัสสมาชิกผู้ยืม |
book_id | Char | 10 | FK | รหัสหนังสือที่ยืม |
loan_date | Date | - | - | วันที่ยืม |
due_date | Date | - | - | กำหนดวันคืน |
return_date | Date | - | - | วันที่คืนจริง |
fine | Decimal | 8,2 | - | ค่าปรับ (คำนวณจากวันเกินกำหนด) |
(3) โครงสร้างตารางฐานข้อมูลที่ได้จากการแปลง E-R Diagram
ตาราง | ฟิลด์ (คีย์หลักขีดเส้นใต้ / FK = คีย์นอก) |
สมาชิก (member) | member_id (PK), member_name, level, phone |
หนังสือ (book) | book_id (PK), title, author, category, quantity |
การยืม–คืน (loan) | loan_id (PK), member_id (FK), book_id (FK), loan_date, due_date, return_date, fine |