UML (1) — Entity Relationship Diagram
1. Structural vs Behavioral UML
| Structural UML Diagram | Behavioral UML Diagram |
|---|---|
เครื่องมือออกแบบจำลอง เชิงโครงสร้าง — แสดงโครงสร้างและกระบวนการของระบบและความสัมพันธ์
|
เครื่องมือออกแบบจำลอง เชิงลักษณะการทำงาน
|
2. ER Diagram คืออะไร
Entity Relationship Diagram (ER Diagram) = แผนภาพโครงสร้างและความสัมพันธ์ของข้อมูล (Database) อธิบายโครงสร้าง องค์ประกอบ และข้อกำหนดของฐานข้อมูลของระบบที่ออกแบบ ใช้เป็น สื่อกลางในการสื่อสารระหว่างผู้ใช้และนักพัฒนาโปรแกรม เพราะสัญลักษณ์เข้าใจง่าย
องค์ประกอบหลัก 3 อย่าง: 1. Entity 2. Attribute 3. Relationship
3. สัญลักษณ์ ER-Diagram
Entity (เอนทิตี)
กลุ่มของสิ่งต่างๆ ที่จะเก็บข้อมูลไว้ในฐานข้อมูล อาจเป็น บุคคล สถานที่ การกระทำ หรือกิจกรรม — สัญลักษณ์คือ สี่เหลี่ยมผืนผ้า
- เอนทิตีที่เป็นบุคคล เช่น พนักงาน, นักศึกษา, ผู้ป่วย, พนักงานขับรถ
- เอนทิตีที่เป็นสถานที่ เช่น จังหวัด, น้ำตก, โรงแรม, ห้องเรียน
Attribute (แอททริบิวท์)
ลักษณะหรือคุณสมบัติที่อธิบาย Entity และความสัมพันธ์ — สัญลักษณ์คือ วงรี
ตัวอย่าง Attribute ของ Entity "นักศึกษา": รหัสนักศึกษา, คำนำหน้าชื่อ, ชื่อ, นามสกุล, วันเกิด, คณะที่เรียน, เกรดเฉลี่ยสะสม
| ชนิด Attribute | ความหมาย | ตัวอย่าง |
|---|---|---|
| Attribute (ปกติ) | ค่าเดียว ไม่แตกย่อย | ชื่อ |
| Primary key Attribute | ระบุแต่ละ record ได้ไม่ซ้ำ (ขีดเส้นใต้) | รหัสนักศึกษา |
| Multi Value Attribute | มีได้หลายค่า (วงรีซ้อน) | เบอร์โทรศัพท์หลายเบอร์ |
| Composite Attribute | แตกย่อยเป็นหลาย attribute ได้ | ชื่อเต็ม = คำนำหน้า + ชื่อ + นามสกุล |
| Derived Attribute | คำนวณได้จาก attribute อื่น (วงรีเส้นประ) | อายุ คำนวณจากวันเกิด |
Key
- Primary key — คีย์หลัก ใช้ระบุแต่ละแถวได้ไม่ซ้ำ
- Foreign key — คีย์นอก อ้างอิงไปยัง Primary key ของอีกตาราง
- Composite key — คีย์ที่ประกอบจากหลาย attribute รวมกัน
Relationship (ความสัมพันธ์)
ความสัมพันธ์ระหว่าง Entity — สัญลักษณ์คือ สี่เหลี่ยมข้าวหลามตัด
เอนทิตีหนึ่ง มีความสัมพันธ์ได้มากกว่าหนึ่ง และเอนทิตี มีความสัมพันธ์กับตัวเองได้ (Recursive) เช่น พนักงาน "Lead" พนักงาน
4. รูปแบบความสัมพันธ์ 3 แบบ
| แบบ | เขียนว่า | ความหมาย |
|---|---|---|
| One-to-One | 1 : 1 | ข้อมูล 1 รายการของ Entity A สัมพันธ์กับข้อมูลของ Entity B ได้ 1 รายการเท่านั้น |
| One-to-Many | 1 : N หรือ 1 : M | ข้อมูล 1 รายการของ A สัมพันธ์กับข้อมูลของ B ได้ มากกว่า 1 รายการ |
| Many-to-Many | M : N หรือ M : M | ข้อมูลหลายรายการของ A สัมพันธ์กับข้อมูลของ B หลายรายการ และ B ก็สัมพันธ์กับ A ได้หลายรายการเช่นกัน |
5. แปลง ER-Diagram เป็นตาราง
ตัวอย่าง: นักศึกษา (M) — ลงทะเบียน — (N) วิชา
ความสัมพันธ์ M:N ต้องแตกเป็น ตารางกลาง ที่เก็บ Foreign key ของทั้งสองฝั่ง และใช้คู่ FK เป็น Composite key
Student (student_id PK, first_name, last_name, faculty, gpa) Course (course_id PK, course_name, credit) Enrollment (student_id PK FK, course_id PK FK, semester, grade)
ส่วนความสัมพันธ์ 1:N เช่น ลูกค้า — ใบสั่งซื้อ: ใส่ FK ไว้ที่ฝั่ง N
Customer (customer_id PK, name, phone) Orders (order_id PK, order_date, customer_id FK)
โจทย์ฝึก (Activity #2 จากสไลด์): ระบบยิม
สมาชิกจองคลาสออกกำลังกาย (body pump, body combat, yoga) แต่ละคลาสต้องมีเทรนเนอร์นำ สมาชิกเข้าร่วมตามตารางเวลาและห้องกิจกรรมที่กำหนด
Member (member_id PK, name, phone) Trainer (trainer_id PK, name, specialty) Room (room_id PK, room_name, capacity) Class (class_id PK, class_name, schedule_time, trainer_id FK, room_id FK) Booking (member_id PK FK, class_id PK FK, booking_date) Trainer 1 : N Class (เทรนเนอร์หนึ่งคนสอนได้หลายคลาส) Room 1 : N Class (ห้องหนึ่งใช้ได้หลายคลาส) Member M : N Class ผ่านตาราง Booking