EP03: การสร้างแบบจำลองข้อมูลสำหรับโรงงานอัจฉริยะ
📚 ภาคทฤษฎี
เป้าหมาย: สร้างความเข้าใจที่ลึกซึ้งเกี่ยวกับแนวคิด หลักการ และองค์ประกอบสำคัญของ Entity-Relationship Diagram (ERD) เพื่อให้สามารถนำไปประยุกต์ใช้ในการออกแบบฐานข้อมูลสำหรับโรงงานอัจฉริยะได้อย่างถูกต้อง
1. บทนำสู่การสร้างแบบจำลองข้อมูล (Introduction to Data Modeling)
- 1.1 ความหมายและความสำคัญของการสร้างแบบจำลองข้อมูล:
- การสร้างแบบจำลองข้อมูล (Data Modeling) คืออะไร?
- มันไม่ใช่แค่การวาดรูป แต่เป็น กระบวนการวิเคราะห์และกำหนดโครงสร้างข้อมูล ที่องค์กรหรือระบบต้องการจัดเก็บและใช้งาน
- เป็นการ สร้างพิมพ์เขียว (Blueprint) สำหรับฐานข้อมูล เปรียบเหมือนสถาปนิกออกแบบบ้านก่อนลงมือก่อสร้างจริง
- ผลลัพธ์ที่ได้มักจะเป็น แบบจำลองข้อมูล (Data Model) ซึ่งมีหลายระดับ เช่น Conceptual (แนวคิด), Logical (เชิงตรรกะ), และ Physical (เชิงกายภาพ) โดย ERD ที่เราจะเรียนกันจัดอยู่ในระดับ Conceptual ถึง Logical
- ทำไมการสร้างแบบจำลองข้อมูลจึงสำคัญ?
- ความเข้าใจที่ตรงกัน (Shared Understanding): ช่วยให้ทุกคนที่เกี่ยวข้อง (นักวิเคราะห์ระบบ, ผู้ออกแบบฐานข้อมูล, โปรแกรมเมอร์, ผู้ใช้งาน) เห็นภาพเดียวกันว่าระบบจะจัดเก็บข้อมูลอะไรบ้าง มีความสัมพันธ์กันอย่างไร
- ลดความซับซ้อน (Manage Complexity): ระบบงานจริงมักมีความซับซ้อน แบบจำลองข้อมูลช่วยให้เรามองเห็นโครงสร้างที่จำเป็นและตัดทอนส่วนที่ไม่เกี่ยวข้องออกไปได้
- พื้นฐานสำหรับการออกแบบฐานข้อมูลที่ดี (Foundation for Good Database Design): แบบจำลองที่ดีจะนำไปสู่ฐานข้อมูลที่มีประสิทธิภาพ ลดความซ้ำซ้อนของข้อมูล (Data Redundancy) และรักษาความถูกต้องของข้อมูล (Data Integrity)
- ช่วยในการสื่อสาร (Communication Tool): ERD เป็นภาษากลางที่ใช้อธิบายโครงสร้างข้อมูลให้ผู้อื่นเข้าใจได้ง่าย
- เอกสารประกอบระบบ (Documentation): เป็นส่วนสำคัญของเอกสารระบบที่ใช้อ้างอิงในการพัฒนาและบำรุงรักษาระบบในอนาคต
2. องค์ประกอบหลักของ Entity-Relationship Diagram (ERD) 🖼️
- 2.1 Entity (เอนทิตี):
- ทบทวนนิยาม: สิ่งใดๆ ที่เราสนใจและต้องการจัดเก็บข้อมูลเกี่ยวกับมัน สามารถระบุตัวตนและแยกแยะออกจากสิ่งอื่นได้ (เช่น บุคคล, สถานที่, สิ่งของ, เหตุการณ์, แนวคิด)
- การระบุ Entity: มักจะมาจาก “คำนาม” ที่สำคัญในคำอธิบายความต้องการของระบบ หรือจากการวิเคราะห์กระบวนการทำงาน
- ตัวอย่างในโรงงานอัจฉริยะ:
MACHINE
(เครื่องจักร), SENSOR
(เซ็นเซอร์), PRODUCT
(ผลิตภัณฑ์), PRODUCTION_BATCH
(รุ่นการผลิต), MAINTENANCE_LOG
(บันทึกการบำรุงรักษา), OPERATOR
(ผู้ควบคุมเครื่อง)
- Entity Instance (หรือ Record): คือ สมาชิกแต่ละตัวของ Entity นั้นๆ เช่น ถ้า
MACHINE
เป็น Entity, เครื่องจักร A, เครื่องจักร B ก็คือ Instance ของ MACHINE
- สัญลักษณ์: โดยทั่วไปคือรูปสี่เหลี่ยมผืนผ้า (Rectangle) ที่มีชื่อ Entity เขียนอยู่ภายใน (มักใช้ตัวพิมพ์ใหญ่)
- 2.2 Attribute (แอตทริบิวต์):
- ทบทวนนิยาม: คุณสมบัติหรือลักษณะที่อธิบายรายละเอียดของ Entity หนึ่งๆ
- การระบุ Attribute: มาจากคุณสมบัติที่เราต้องการทราบเกี่ยวกับ Entity นั้นๆ
- ตัวอย่าง Attributes ของ Entity
MACHINE
: MachineID
, MachineName
, ModelNumber
, InstallationDate
, Status
- ตัวอย่าง Attributes ของ Entity
SENSOR_READING
: ReadingTimestamp
, SensorID_FK
, Value
, UnitOfMeasure
- ประเภทของ Attributes (อาจจะยังไม่ลงลึกมากในสัปดาห์นี้ แต่เกริ่นได้):
- Simple Attribute: ไม่สามารถแบ่งย่อยได้อีก (เช่น
MachineName
)
- Composite Attribute: สามารถแบ่งย่อยออกเป็นส่วนๆ ได้ (เช่น
Address
อาจประกอบด้วย Street
, City
, ZipCode
)
- Single-valued Attribute: มีได้เพียงค่าเดียวสำหรับแต่ละ Instance (เช่น
MachineID
)
- Multi-valued Attribute: อาจมีได้หลายค่าสำหรับแต่ละ Instance (เช่น
PhoneNumber
ของพนักงานคนหนึ่ง) (ในการออกแบบจริงมักจะแยกเป็น Entity ใหม่)
- Derived Attribute: ค่าของมันสามารถคำนวณหรือหาได้จาก Attribute อื่น (เช่น
Age
สามารถคำนวณได้จาก DateOfBirth
)
- สัญลักษณ์: โดยทั่วไปคือรูปวงรี (Oval) เชื่อมต่อกับ Entity หรือเขียนเป็นรายการภายใต้ชื่อ Entity ในสี่เหลี่ยม (นิยมกว่าในการวาด ERD ที่ซับซ้อน)
- 2.3 คีย์ (Keys) ใน ERD:
- ความสำคัญของ Keys: ใช้ในการระบุ Instance แต่ละตัวใน Entity ได้อย่างเฉพาะเจาะจง และใช้ในการสร้างความสัมพันธ์ระหว่าง Entities
- Primary Key (PK – คีย์หลัก):
- คือ Attribute (หรือกลุ่มของ Attributes) ที่มีคุณสมบัติ ไม่ซ้ำกัน (Unique) สำหรับทุก Instance ใน Entity นั้น และ ต้องมีค่าเสมอ (Not Null)
- ใช้ในการ “ชี้ตัว” หรือ “อ้างอิง” ถึง Instance นั้นๆ ได้อย่างแม่นยำ
- ตัวอย่าง:
MachineID
สำหรับ Entity MACHINE
, SensorReadingID
สำหรับ Entity SENSOR_READING
- Candidate Key: Attribute หรือกลุ่มของ Attributes ที่มีคุณสมบัติเป็น Primary Key ได้ (อาจมีได้หลายตัวในหนึ่ง Entity) เราจะเลือกตัวใดตัวหนึ่งมาเป็น Primary Key
- สัญลักษณ์: มักจะ ขีดเส้นใต้ ชื่อ Attribute ที่เป็น Primary Key
- Foreign Key (FK – คีย์นอก):
- คือ Attribute (หรือกลุ่มของ Attributes) ใน Entity หนึ่ง (เรียกว่า Child Entity หรือ Referencing Entity) ที่มีค่า ตรงกับค่าของ Primary Key ของอีก Entity หนึ่ง (เรียกว่า Parent Entity หรือ Referenced Entity)
- ทำหน้าที่สร้าง “สะพาน” หรือ “ความเชื่อมโยง” ระหว่างสอง Entities
- ตัวอย่าง: ถ้า
SENSOR_READING
ต้องการระบุว่าการอ่านค่านั้นมาจากเครื่องจักรใด จะมี Attribute MachineID_FK
ใน SENSOR_READING
ซึ่งค่าของมันจะต้องเป็นค่าใดค่าหนึ่งที่มีอยู่จริงใน MachineID
(PK) ของ Entity MACHINE
- สัญลักษณ์: บางครั้งอาจมีการกำกับว่า (FK) หรือวาดเส้นเชื่อมโยงพิเศษ แต่โดยทั่วไปจะแสดงผ่านความสัมพันธ์
- 2.4 Relationship (ความสัมพันธ์):
- ความหมาย: การเชื่อมโยงหรือความเกี่ยวข้องกันระหว่างสอง Entities (Binary Relationship) หรือมากกว่า (N-ary Relationship – พบไม่บ่อยในการออกแบบเบื้องต้น) หรือแม้กระทั่ง Entity เดียวกันมีความสัมพันธ์กับตัวเอง (Recursive/Unary Relationship)
- การระบุ Relationship: มักจะเป็น “คำกริยา” ที่แสดงการกระทำหรือความเชื่อมโยงระหว่าง Entities
- ตัวอย่าง:
MACHINE
is_assigned SENSOR
(เครื่องจักร ถูกกำหนดให้มี เซ็นเซอร์), SENSOR
generates SENSOR_READING
(เซ็นเซอร์ สร้าง ข้อมูลการอ่านค่า), OPERATOR
controls MACHINE
(ผู้ควบคุมเครื่อง ควบคุม เครื่องจักร)
- สัญลักษณ์: โดยทั่วไปคือรูปสี่เหลี่ยมขนมเปียกปูน (Diamond) ที่มีชื่อความสัมพันธ์ (คำกริยา) เขียนอยู่ภายใน และมีเส้นเชื่อมจาก Diamond ไปยัง Entities ที่เกี่ยวข้อง หรือใน Crow’s Foot Notation มักจะเป็นเพียงเส้นเชื่อมระหว่าง Entities และมีชื่อความสัมพันธ์กำกับอยู่บนเส้นนั้น
- Degree of Relationship (ระดับขั้นของความสัมพันธ์):
- Unary (Recursive): Entity หนึ่งมีความสัมพันธ์กับตัวเอง (เช่น
EMPLOYEE
supervises EMPLOYEE
)
- Binary: Entities สองตัวมีความสัมพันธ์กัน (พบบ่อยที่สุด)
- Ternary: Entities สามตัวมีความสัมพันธ์กัน (ค่อนข้างซับซ้อน ควรพยายามแปลงเป็น Binary หลายๆ อันถ้าเป็นไปได้)
- 2.5 Cardinality Ratio และ Modality (Optionality) ของความสัมพันธ์:
- Cardinality Ratio (อัตราส่วนจำนวนสมาชิก): ระบุจำนวน สูงสุด ของ Instance ของ Entity หนึ่งที่สามารถมีความสัมพันธ์กับ Instance ของอีก Entity หนึ่งได้ (และในทางกลับกัน)
- One-to-One (1:1): Instance หนึ่งของ A สัมพันธ์กับ Instance หนึ่งของ B เท่านั้น
- ตัวอย่าง (สมมติ):
MACHINE_CONTROLLER
(MCU 1 ตัว) controls SPECIFIC_MACHINE_PART
(ชิ้นส่วนเครื่องจักรเฉพาะ 1 ชิ้น) (ถ้า MCU 1 ตัวคุมแค่ส่วนเดียว และส่วนนั้นถูกคุมโดย MCU เดียว)
- One-to-Many (1:N): Instance หนึ่งของ A สัมพันธ์กับ Instance หลายตัว ของ B ได้ แต่ Instance หนึ่งของ B สัมพันธ์กับ Instance หนึ่งของ A เท่านั้น
- ตัวอย่าง (พบบ่อยมาก):
MACHINE
(1 เครื่อง) has SENSOR
(หลายตัว) (แต่เซ็นเซอร์ 1 ตัว ติดตั้งอยู่บนเครื่องจักรเพียง 1 เครื่อง)
PRODUCTION_ORDER
(1 คำสั่งผลิต) generates PRODUCT_ITEM
(สินค้าหลายชิ้น)
- Many-to-Many (M:N): Instance หนึ่งของ A สัมพันธ์กับ Instance หลายตัว ของ B ได้ และ Instance หนึ่งของ B ก็สัมพันธ์กับ Instance หลายตัว ของ A ได้เช่นกัน
- ตัวอย่าง:
OPERATOR
(พนักงาน 1 คน) can_operate MACHINE
(หลายเครื่อง) และ MACHINE
(1 เครื่อง) can_be_operated_by OPERATOR
(หลายคน – ในต่างกะ)
- ข้อควรจำ: ในการออกแบบฐานข้อมูลเชิงสัมพันธ์จริง ความสัมพันธ์แบบ M:N จะไม่สามารถสร้างได้โดยตรง จะต้องถูก แปลง (Resolve) โดยการสร้าง Entity ใหม่ที่เรียกว่า Associative Entity (หรือ Intersection/Junction Table) ขึ้นมาคั่นกลาง โดย Entity ใหม่นี้จะมีความสัมพันธ์แบบ 1:N กับ Entity เดิมทั้งสอง
- ตัวอย่าง:
OPERATOR
(1) — (0,N) OPERATION_ASSIGNMENT
(0,N) — (1) MACHINE
. โดย OPERATION_ASSIGNMENT
จะมี PK ของตัวเอง และมี FK จาก OPERATOR
และ MACHINE
และอาจมี Attributes เพิ่มเติมเช่น AssignmentDate
, Shift
- Modality (หรือ Participation/Optionality – ความเป็นทางเลือกในการเข้าร่วมความสัมพันธ์): ระบุว่า Instance ของ Entity หนึ่ง จำเป็นต้อง (Mandatory) หรือ ไม่จำเป็นต้อง (Optional) เข้าร่วมในความสัมพันธ์นั้นหรือไม่
- Mandatory Participation (บังคับเข้าร่วม): หมายความว่าทุก Instance ของ Entity นั้นจะต้องมีความสัมพันธ์กับอย่างน้อยหนึ่ง Instance ของอีก Entity หนึ่ง (แทนด้วยค่าต่ำสุดเป็น 1)
- Optional Participation (เป็นทางเลือกในการเข้าร่วม): หมายความว่า Instance ของ Entity นั้นอาจจะไม่มีความสัมพันธ์กับ Instance ใดๆ ของอีก Entity หนึ่งเลยก็ได้ (แทนด้วยค่าต่ำสุดเป็น 0)
- การแสดง Cardinality และ Modality ร่วมกัน (เช่น ใน Crow’s Foot Notation):
- จะแสดงเป็นคู่ของ (Minimum, Maximum) สำหรับแต่ละด้านของความสัมพันธ์
(0,1)
: Zero or One (Optional, Single)
(1,1)
: One and Only One (Mandatory, Single)
(0,N)
หรือ (0,*)
: Zero or Many (Optional, Multiple) – ตัว N หรือ * หรือสัญลักษณ์ตีนกา <
(1,N)
หรือ (1,*)
: One or Many (Mandatory, Multiple) – ตัว N หรือ * หรือสัญลักษณ์ตีนกา <
- ตัวอย่างการอ่าน Crow’s Foot: เส้นที่ออกจาก Entity
MACHINE
ไปยัง Relationship has_sensor
มีสัญลักษณ์ |--O<
หมายความว่า:
- ด้าน
MACHINE
(|
): เครื่องจักร 1 เครื่อง (One)
- ด้าน
SENSOR
(O<
): อาจจะไม่มีเซ็นเซอร์เลย (Zero) หรือมีเซ็นเซอร์หลายตัว (Many)
- แปลว่า: เครื่องจักร 1 เครื่อง อาจจะไม่มีเซ็นเซอร์เลย หรือมีเซ็นเซอร์ได้หลายตัว
🛠️ ภาคปฏิบัติ
เป้าหมาย: ให้นักศึกษาฝึกฝนการนำความรู้เรื่ององค์ประกอบและสัญลักษณ์ของ ERD มาสร้างเป็นแผนภาพจริง โดยเริ่มจากการทำความเข้าใจสัญลักษณ์ การวาดตามตัวอย่าง และประยุกต์ใช้กับ Case Study ที่ทำต่อเนื่องมาจากสัปดาห์ที่ 2 เพื่อจำลองข้อมูลในโรงงานอัจฉริยะ
ส่วนที่ 1: ทบทวนความรู้จากทฤษฎี, ทำความคุ้นเคยกับสัญลักษณ์ ERD (Crow’s Foot) และเครื่องมือ
- ทบทวนจากภาคทฤษฎี: ผู้สอนทบทวนองค์ประกอบหลักของ ERD (Entity, Attribute, PK, FK, Relationship, Cardinality, Modality) อย่างรวดเร็ว
- เน้นสัญลักษณ์ Crow’s Foot Notation:
- Entity: รูปสี่เหลี่ยมผืนผ้า
- Attribute: เขียนเป็นรายการภายใน Entity (Primary Key ขีดเส้นใต้)
- Relationship: เส้นตรงเชื่อมระหว่าง Entities, มีชื่อความสัมพันธ์กำกับบนเส้น (มักเป็นคำกริยา)
- Cardinality & Modality Symbols (ที่ปลายเส้นแต่ละด้าน):
|
(ขีดเดียวแนวตั้ง): หมายถึง “One”
O
(วงกลม): หมายถึง “Zero”
<
(สัญลักษณ์คล้ายตีนกา): หมายถึง “Many”
- การอ่านสัญลักษณ์คู่:
O|
: Zero or One (Optional Single)
||
: One and Only One (Mandatory Single)
O<
: Zero or Many (Optional Multiple)
|<
: One or Many (Mandatory Multiple)
- แนะนำเครื่องมือ (ถ้ามี):
- ผู้สอนสาธิตการใช้งานโปรแกรมวาด ERD เบื้องต้น (เช่น
draw.io
หรือ app.diagrams.net
ซึ่งเป็นตัวเดียวกันและฟรี) แสดงวิธีการสร้าง Entity, เพิ่ม Attribute, วาดเส้น Relationship, และใส่สัญลักษณ์ Cardinality
- หากไม่มีโปรแกรม ให้เน้นการใช้กระดาษ ปากกา และไม้บรรทัด โดยให้วาดสัญลักษณ์ให้ชัดเจน
ส่วนที่ 2: กิจกรรมสาธิตและฝึกวาด ERD อย่างง่าย (Guided Practice)
- ผู้สอนสาธิตการวาด ERD สำหรับสถานการณ์ตัวอย่างทีละขั้นตอน (ใช้ Crow’s Foot):
- สถานการณ์: “แผนก (DEPARTMENT)” และ “พนักงาน (EMPLOYEE)”
- วิเคราะห์:
- แผนก 1 แผนก มีพนักงานได้หลายคน (One-to-Many)
- พนักงาน 1 คน สังกัดอยู่เพียง 1 แผนก (สมมติฐาน)
- สมมติว่าแผนกต้องมีพนักงานอย่างน้อย 1 คน (Mandatory participation for Employee side of Department)
- สมมติว่าพนักงานทุกคนต้องสังกัดแผนก (Mandatory participation for Department side of Employee)
- Entities & Attributes:
DEPARTMENT
: DeptID
(PK), DeptName
EMPLOYEE
: EmpID
(PK), EmpName
, Position
, DeptID_FK
(FK to DEPARTMENT)
- การวาด:
- วาด Entity
DEPARTMENT
และ EMPLOYEE
- กำหนด Primary Keys (
DeptID
, EmpID
)
- วาดเส้น Relationship “employs” หรือ “belongs_to”
- ใส่ Cardinality:
DEPARTMENT
(||
) — employs — (|<
) EMPLOYEE
- อ่านจาก Department ไป Employee: แผนก 1 แผนก (Mandatory) จ้างพนักงาน 1 คนหรือมากกว่า (Mandatory Multiple)
- อ่านจาก Employee ไป Department: พนักงาน 1 คน (Mandatory) สังกัดอยู่กับแผนก 1 แผนกเท่านั้น (Mandatory Single)
- (Foreign Key
DeptID_FK
ใน EMPLOYEE
จะเกิดขึ้นเมื่อแปลง ERD เป็นตาราง)
- สถานการณ์: “นักศึกษา (STUDENT)” และ “รายวิชา (COURSE)” (Many-to-Many)
- วิเคราะห์:
- นักศึกษา 1 คน สามารถลงทะเบียนได้หลายรายวิชา
- รายวิชา 1 วิชา สามารถมีนักศึกษาลงทะเบียนได้หลายคน
- Entities & Attributes (เบื้องต้น):
STUDENT
: StudentID
(PK), StudentName
COURSE
: CourseID
(PK), CourseName
- การจัดการ Many-to-Many:
- อธิบายว่าต้องสร้าง Associative Entity ขึ้นมา เช่น
ENROLLMENT
ENROLLMENT
: EnrollmentID
(PK), StudentID_FK
, CourseID_FK
, EnrollDate
, Grade
- การวาด (หลัง Resolve M:N):
STUDENT
(|<
) — (0,N) ENROLLMENT
(0,N) — (|<
) COURSE
- (Student 1 คน อาจจะยังไม่ลงทะเบียน หรือลงทะเบียนหลาย Enrollment record; Course 1 วิชา อาจจะยังไม่มีใครลง หรือมีคนลงหลาย Enrollment record)
- (Enrollment record 1 รายการ ต้องมาจาก Student 1 คน และเป็นของ Course 1 วิชา)
- ให้นักศึกษาฝึกวาดตามตัวอย่าง หรือโจทย์ง่ายๆ เพิ่มเติม:
- “ผู้แต่ง (AUTHOR)” และ “หนังสือ (BOOK)” (ผู้แต่ง 1 คน เขียนหนังสือได้หลายเล่ม)
- “สินค้า (PRODUCT)” และ “ผู้จัดจำหน่าย (SUPPLIER)” (สินค้า 1 ชนิด อาจมาจากผู้จัดจำหน่ายหลายราย และผู้จัดจำหน่าย 1 ราย อาจจัดจำหน่ายสินค้าหลายชนิด – M:N)
- ผู้สอนเดินให้คำแนะนำในการเลือกใช้สัญลักษณ์ Cardinality และการ Resolve M:N
ส่วนที่ 3: กิจกรรมกลุ่ม: ออกแบบ ERD สำหรับ Case Study จากหน่วยที่ 2 🏭✍️
- การดำเนินกิจกรรม:
- ให้นักศึกษาแต่ละกลุ่ม ทบทวน Entities และ Attributes ที่ได้ระบุไว้สำหรับ Case Study ที่กลุ่มตนเองวิเคราะห์ในหน่วยที่ 2 (เช่น ระบบติดตามพลังงานเครื่องจักร, ระบบตรวจสอบคุณภาพสินค้า)
- เป้าหมายของกลุ่ม:
- ยืนยัน/ปรับปรุง Entities และ Attributes ให้สมบูรณ์ที่สุดเท่าที่จะทำได้ในขั้นนี้
- กำหนด Primary Key ให้กับทุก Entity อย่างชัดเจน
- ระบุความสัมพันธ์ (Relationships) ทั้งหมดที่จำเป็นระหว่าง Entities ที่มี พร้อมตั้งชื่อความสัมพันธ์ที่สื่อความหมาย (เช่น
MACHINE
is_monitored_by SENSOR
; SENSOR_READING
is_generated_by SENSOR
)
- กำหนด Cardinality และ Modality (ใช้ Crow’s Foot) สำหรับ “ปลาย” ทั้งสองด้านของแต่ละความสัมพันธ์อย่างละเอียด โดยพิจารณาจากตรรกะของ Case Study
- ตัวอย่างคำถามที่ต้องตอบเพื่อกำหนด Cardinality:
- เครื่องจักร 1 เครื่อง จำเป็นต้องมีเซ็นเซอร์หรือไม่? (Optional/Mandatory for Sensor side)
- เครื่องจักร 1 เครื่อง สามารถมีเซ็นเซอร์ได้กี่ตัว? (One/Many for Sensor side)
- เซ็นเซอร์ 1 ตัว จำเป็นต้องติดตั้งอยู่บนเครื่องจักรหรือไม่? (Optional/Mandatory for Machine side)
- เซ็นเซอร์ 1 ตัว สามารถติดตั้งอยู่บนเครื่องจักรกี่เครื่อง? (One/Many for Machine side)
- หากพบความสัมพันธ์แบบ Many-to-Many ให้ พยายาม Resolve โดยการสร้าง Associative Entity พร้อมกำหนด PK และ FK ที่เหมาะสม
- วาด ERD ฉบับสมบูรณ์ สำหรับ Case Study ของกลุ่ม โดยใช้สัญลักษณ์ Crow’s Foot Notation อย่างถูกต้อง (ผ่านโปรแกรม หรือวาดด้วยมือให้ชัดเจน)
- ควรมีการระบุชื่อ Entity, Attributes (พร้อม PK) และเส้น Relationship ที่มีชื่อและสัญลักษณ์ Cardinality ครบถ้วน