PlusMagi's Blog By Pitt Phunsanit Database,JavaScript,System Analyst (SA),technology,การจัดการข้อมูล การสร้าง ER Diagram ด้วย Mermaid.js: การกำหนด Cardinality (1:1, 1:N, N:M) บน Diagram as Code

การสร้าง ER Diagram ด้วย Mermaid.js: การกำหนด Cardinality (1:1, 1:N, N:M) บน Diagram as Code

ในโลกของการพัฒนาซอฟต์แวร์และสถาปัตยกรรมฐานข้อมูล การทำความเข้าใจโครงสร้างของข้อมูลถือเป็นรากฐานที่สำคัญที่สุด ไม่ว่าจะเป็นการออกแบบระบบใหม่หรือการปรับปรุง Schema เดิม ความแม่นยำในการระบุความสัมพันธ์ระหว่างเอนทิตี้ (Entities) จึงเป็นสิ่งที่ไม่สามารถมองข้ามได้ ในอดีต เรามักต้องพึ่งพาเครื่องมือ GUI ที่เน้นการลากวางเพื่อสร้างแผนภาพ ซึ่งแม้จะใช้งานง่าย แต่ก็มีข้อจำกัดเมื่อต้องทำงานร่วมกับระบบ Version Control หรือกระบวนการ CI/CD


เจาะลึกรายละเอียดและประเด็นสำคัญ

การเปลี่ยนผ่านสู่แนวคิด “Diagram as Code” คือการที่เราใช้ภาษาโค้ดในการกำหนดโครงสร้างแผนภาพทั้งหมด แทนที่จะวาดด้วยมือ Mermaid.js เป็นเครื่องมือที่เข้ามาเติมเต็มช่องว่างนี้อย่างสมบูรณ์แบบ โดยเฉพาะในบริบทของ ER Diagram ซึ่งเราสามารถนิยามเอนทิตี้ (Entities) และความสัมพันธ์ (Relationships) พร้อมทั้งระบุ Cardinality ได้อย่างเป็นระบบและแม่นยำ

หัวใจสำคัญของการใช้ Mermaid คือการที่โค้ดของเราไม่ได้เป็นเพียงแค่คำสั่ง แต่ยังทำหน้าที่เป็นเอกสารประกอบ (Documentation) ที่สามารถถูกตรวจสอบ ควบคุมเวอร์ชัน และนำไปประมวลผลได้โดยอัตโนมัติ การกำหนด Cardinality เช่น 1:1, 1:N, หรือ N:M ผ่าน Syntax ของ Mermaid ทำให้เรามั่นใจว่าการออกแบบฐานข้อมูลของเรามีความสอดคล้องกับหลักการทางทฤษฎีและพร้อมสำหรับการ Implement ในโค้ดจริง

erDiagram CUSTOMER ||–o{ ORDER : places ORDER { int order_id PK date order_date int customer_id FK } CUSTOMER { int customer_id PK varchar name } PRODUCT }|–|| CATEGORY : belongs_to CATEGORY { int category_id PK varchar name } ORDER_ITEM ||–o{ PRODUCT : contains

การนำไปประยุกต์ใช้ในชีวิตและการทำงานยุคใหม่

  • การรวมเข้ากับ CI/CD Pipeline: แทนที่จะให้เอกสาร ER Diagram เป็นไฟล์รูปภาพที่ล้าสมัย เราสามารถรันโค้ด Mermaid ผ่าน Build Script เพื่อสร้างแผนภาพล่าสุดโดยอัตโนมัติ ทำให้มั่นใจได้ว่า Documentation จะตรงกับ Schema ที่กำลังจะ Deploy เสมอ
  • การควบคุมเวอร์ชันด้วย Git (Source of Truth): เมื่อ ER Diagram ถูกเก็บเป็นโค้ดใน Repository เดียวกับ Source Code อื่นๆ การเปลี่ยนแปลงความสัมพันธ์ใดๆ จะถูกบันทึกพร้อม Commit Message ทำให้สามารถย้อนกลับไปดูว่าใครเปลี่ยนอะไร ที่ไหน และเมื่อไหร่ได้อย่างสมบูรณ์

การเรียนรู้ที่จะกำหนดโครงสร้างข้อมูลด้วยโค้ด ไม่ใช่แค่เรื่องของการวาดแผนภาพ แต่คือการยกระดับวิธีการทำงานของเราให้เป็นระบบอัตโนมัติ (Automation) และสามารถตรวจสอบได้ (Verifiable) ในฐานะสถาปนิกข้อมูล การใช้เครื่องมืออย่าง Mermaid.js จึงเป็นการแสดงถึงความเข้าใจในหลักการของ Software Engineering ที่ทันสมัยและมีประสิทธิภาพสูงสุด


อ่านเพิ่มเติม