회사에 입사하면 기존 비즈니스를 이해하기 위해 주로 ERD를 참고하곤 한다.
그러나 현재 회사에서는 ERD가 문서화되어 있지 않고, 설계를 담당한 누군가의 머릿속에만 존재했다.
그로 인해 실제 비즈니스 코드를 작성할 때, 관계를 설정하는 데 있어 부모-자식 관계와 상관없이 hasOne, hasMany만을 사용하여 테이블 간의 관계가 모호해지는 문제가 발생했다.
결과적으로 테이블 간의 구조를 이해하기 어려웠고, 이를 개선하기 위해 다음에 입사할 누군가를 위해 ERD를 작성하고자 한다.
// QuotationDetailModel.php
public function Quotation()
{
return $this->hasOne(Quotation::class, 'CQ_IDX','CQ_IDX');
}
Quotation과 QuotationDetail은 부모 자식 관계(1:N).
자식 테이블에서 부모 테이블을 찾을 때는 belongsTo 사용하면 됨.
하지만 ERD 문서도 없고, 상세한 설계는 누군가의 머릿속에만 존재하기 때문에 이런 문제들이 발생했었음.
Mermaid를 활용해 erd를 작성해보자
Mermaid는 Markdown 스타일의 간단한 텍스트 문법으로 다이어그램을 작성할 수 있는 도구임.
특히 ERD(Entity-Relationship Diagram), 플로우차트, 시퀀스 다이어그램 등을 쉽게 그릴 수 있음.
아래는 테이블을 정의하고 테이블의 관계도를 나타냄
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"
