PlusMagi's Blog By Pitt Phunsanit Backend,Business,Database การสร้าง Class Diagram ด้วย Mermaid.js: แสดงความสัมพันธ์ OOP, Inheritance และ Association ด้วย Code

การสร้าง Class Diagram ด้วย Mermaid.js: แสดงความสัมพันธ์ OOP, Inheritance และ Association ด้วย Code

ในโลกของการพัฒนาซอฟต์แวร์ที่ระบบมีความซับซ้อนสูง การทำความเข้าใจโครงสร้างและความสัมพันธ์ระหว่างส่วนประกอบต่างๆ จึงเป็นหัวใจสำคัญของวิศวกรรมซอฟต์แวร์ที่ดี เราจำเป็นต้องแปลงแนวคิดนามธรรม (Abstract Concepts) ให้กลายเป็นแผนภาพที่ชัดเจน เพื่อให้ทีมงานทุกคน ไม่ว่าจะเป็นนักพัฒนา นักวิเคราะห์ หรือผู้จัดการโครงการ สามารถมองเห็นภาพรวมของสถาปัตยกรรมได้อย่างแม่นยำ

การใช้เครื่องมือที่ช่วยให้เราสร้างแผนผังเหล่านี้ด้วยภาษาโค้ด (Code-First Approach) กำลังเป็นเทรนด์สำคัญที่ช่วยลดช่องว่างระหว่างการออกแบบและการลงมือเขียนจริง และเครื่องมือที่ตอบโจทย์นี้ได้อย่างยอดเยี่ยมคือ Mermaid.js

Class Diagram: การจำลองโครงสร้างระบบด้วย Mermaid.js

Class Diagram เป็นหนึ่งในเครื่องมือหลักของ UML (Unified Modeling Language) ที่ใช้ในการแสดงโครงสร้างเชิงสถิต (Static Structure) ของระบบ โดยการระบุคลาสต่างๆ คุณสมบัติ (Attributes) และเมธอด (Methods) เมื่อเราผสานความสามารถของ Mermaid.js เข้ากับบริบทของระบบฐานข้อมูลอย่าง PostgreSQL เราสามารถสร้างแผนภาพที่ไม่ได้เป็นเพียงแค่ภาพวาด แต่เป็นเอกสารที่สามารถสร้างและแก้ไขได้ด้วยโค้ด

หลักการทำงาน: การจำลอง OOP ในบริบท PostgreSQL

หัวใจสำคัญคือการที่เราใช้แนวคิดของ PostgreSQL (เช่น ตารางข้อมูล, Primary Keys, Foreign Keys) มาเป็นฐานในการออกแบบคลาสต่างๆ ใน Mermaid.js ซึ่งทำให้แผนภาพมีความสอดคล้องกับโครงสร้างข้อมูลจริง

  • Association (ความสัมพันธ์): แสดงการเชื่อมโยงระหว่างคลาสที่ต้องทำงานร่วมกัน เช่น ตาราง user เชื่อมโยงกับตาราง department
  • Inheritance (การสืบทอด): แสดงว่าคลาสหนึ่งได้รับคุณสมบัติจากคลาสแม่ เช่น Employee สืบทอดคุณสมบัติพื้นฐานจาก User
  • Attributes/Methods: แสดงคุณสมบัติ (เช่น user_id, username) และฟังก์ชันที่เกี่ยวข้อง

ตัวอย่างการสร้าง Class Diagram ด้วย Mermaid.js

สมมติว่าเรามีระบบจัดการพนักงานที่ใช้ PostgreSQL ซึ่งมีโครงสร้างพื้นฐานของ User และมีการเพิ่มคลาส Employee ที่สืบทอดคุณสมบัติจาก User เราสามารถใช้ Mermaid.js เพื่อจำลองโครงสร้างนี้ได้:

Python

classDiagram
    direction LR
    class User {
        +user_id : INT <<PK>>
        +username : VARCHAR
        +email : VARCHAR
    }

    class Employee {
        +employee_id : INT <<PK>>
        +hire_date : DATE
        +salary : DECIMAL
    }

    class Department {
        +dept_id : INT <<PK>>
        +dept_name : VARCHAR
    }

    User <|-- Employee : inherits
    Department -- User : manages
    Employee -- Department : assigned_to

คำอธิบายโค้ด:

  1. User <|-- Employee : inherits: แสดงความสัมพันธ์แบบ Inheritance (การสืบทอด) โดย Employee สืบทอดคุณสมบัติจาก User
  2. Department -- User : manages: แสดง Association (ความสัมพันธ์) ว่า Department มีการจัดการ User
  3. Employee -- Department : assigned_to: แสดง Association ว่า Employee ถูกกำหนดให้สังกัด Department

บทสรุป: ประโยชน์ของการออกแบบแบบ Code-First

การใช้ Mermaid.js ในการสร้าง Class Diagram ไม่เพียงแต่ช่วยให้เรามีแผนภาพที่สวยงามเท่านั้น แต่ยังทำให้กระบวนการออกแบบเป็นแบบ Code-First อย่างแท้จริง เมื่อโครงสร้างฐานข้อมูล (Schema) ใน PostgreSQL มีการเปลี่ยนแปลง เพียงแค่แก้ไขโค้ด Mermaid.js เราก็จะสามารถอัปเดตแผนภาพได้ทันที ซึ่งช่วยลดความผิดพลาดในการสื่อสารระหว่างทีมงาน และทำให้การบำรุงรักษาระบบซอฟต์แวร์ขนาดใหญ่เป็นเรื่องที่ง่ายและมีประสิทธิภาพยิ่งขึ้น