Mermaid를 활용해 테이블 설계도 작성하기

Zain·2025년 2월 22일

회사에 입사하면 기존 비즈니스를 이해하기 위해 주로 ERD를 참고하곤 한다.
그러나 현재 회사에서는 ERD가 문서화되어 있지 않고, 설계를 담당한 누군가의 머릿속에만 존재했다.
그로 인해 실제 비즈니스 코드를 작성할 때, 관계를 설정하는 데 있어 부모-자식 관계와 상관없이 hasOne, hasMany만을 사용하여 테이블 간의 관계가 모호해지는 문제가 발생했다.
결과적으로 테이블 간의 구조를 이해하기 어려웠고, 이를 개선하기 위해 다음에 입사할 누군가를 위해 ERD를 작성하고자 한다.

기존의 문제점

Relation 예시

// QuotationDetailModel.php
public function Quotation()
{
	return $this->hasOne(Quotation::class, 'CQ_IDX','CQ_IDX');
}

Quotation과 QuotationDetail은 부모 자식 관계(1:N).
자식 테이블에서 부모 테이블을 찾을 때는 belongsTo 사용하면 됨.
하지만 ERD 문서도 없고, 상세한 설계는 누군가의 머릿속에만 존재하기 때문에 이런 문제들이 발생했었음.


ERD 작성

Mermaid를 활용해 erd를 작성해보자

Mermaid란?

MermaidMarkdown 스타일의 간단한 텍스트 문법으로 다이어그램을 작성할 수 있는 도구임.
특히 ERD(Entity-Relationship Diagram), 플로우차트, 시퀀스 다이어그램 등을 쉽게 그릴 수 있음.

  • Markdown 스타일로 작성 (간단한 텍스트 기반)
  • GitHub, Notion, Obsidian 등 다양한 도구에서 지원
  • 코드로 작성 → 수정이 용이하고 협업이 편리함
  • ERD뿐만 아니라 플로우차트, 시퀀스 다이어그램, 간트 차트 등도 지원

아래는 테이블을 정의하고 테이블의 관계도를 나타냄

erDiagram
  "MEMBER_TBL" {
    t column "맴버 테이블"
    int MEMBER_IDX PK
  }
  "MEMBER_POINT_TBL" {
    t column "멤버 포인트"
    int MP_IDX PK
    int MEMBER_IDX FK "MEMBER_TBL.MEMBER_IDX"
  }
  "MEMBER_POINT_HISTORY_TBL" {
    t column "아이템 리스트"
    int MPH_IDX PK
    int MP_IDX FK "MEMBER_POINT_TBL.MP_IDX"
  }  

  
  "MEMBER_TBL" ||--|{ "MEMBER_POINT_TBL" : "hasMany-belongsTo"
  "MEMBER_POINT_TBL" ||--|| "MEMBER_POINT_HISTORY_TBL" : "hasOne-belongsTo"  
  

profile
Vue, Laravel | TS, JS, PHP, MySQL

0개의 댓글