방위 포트 · 정렬 (Port)Multi-Label Pill & Cardinality (중앙 + 양끝 라벨)
역할: 선 중앙에는 관계명 캡슐 배지(label), 양끝 포트에는 카디널리티(taillabel/headlabel) 동시 표기
권장 상황: ERD 관계선 및 포트 번호(taillabel=":443", headlabel=":8080") 명시
DOT Edge 작성 문법
A -> B [label="owns", taillabel="0..*", headlabel="1", labeldistance=2.0];
2. 선 연결 기하학 라우팅 디자인 카탈로그 (8 Edge Routing Geometries)
--routing <mode> 및 --line-jump 옵션으로 테마와 독립적으로 제어 가능한 8가지 전체 다이어그램 라우팅 디자인입니다.
Ortho-Rounded (둥근 직각 · Metro Step)
★ 추천★ 추천 · Architecture & Monochrome
90° 수평·수직 직각 경로 + 반경 8pt 베지어 라운딩 코너
--routing ortho-rounded
🔍 클릭하여 크게 보기
직각(90°) 라우팅의 정돈된 기하학적 질서를 유지하면서, 꺾이는 꼭짓점(L-corner)에 반경 8pt의 부드러운 2차 베지어 곡선(Q)을 부여한 모던 아키텍처 표준 스타일입니다. High Contrast(흑백)와 Cloud Light 모두에서 시선 추적이 가장 편안합니다.
graphiforge style fanout.dot -o fanout.svg -t high-contrast --routing bus
ERD Outer-Port Step (ERD 외곽 포트 다중 레일 직각)
★ 추천Database ERD Dedicated⌒ Line Jump
HTML <TABLE> 좌/우 외곽 포트(:w/:e) 추출 + 평행 수직선 자동 간격 분리
--routing erd-step --line-jump
🔍 클릭하여 크게 보기
Graphviz 기본 ortho 엔진이 HTML <TABLE>의 행 포트(PORT)를 무시하는 한계를 해결한 ERD 전용 라우팅입니다. 테이블 좌/우 외곽 테두리에서 수평으로 빠져나온 뒤, 여러 외래키(FK) 선이 겹치지 않도록 수직 레일을 8pt 간격(Multi-Track Offset)으로 자동 분리합니다.
✅ 적합한 상황 (When to Use)
모든 관계형 데이터베이스 ERD (1:1, 1:N, 0..* 까마귀발/바 표기)
한 테이블에서 다른 테이블로 2개 이상의 외래키(예: buyer_id, approver_id)가 연결될 때
흑백 인쇄물, 논문, 기술 서적, 또는 High Contrast / Monochrome 테마에서는 파란선·빨간선·초록선으로 의미를 구분할 수 없습니다. 선의 굵기(Weight), 패턴(Pattern), 양끝 단자(Marker) 조합만으로 5가지 아키텍처 의미를 명확히 정의하는 표준 규격입니다.
❌ 적용하지 않았을 때의 문제
모든 선이 똑같은 1.5px 실선 화살표로 그려지면 동기 트랜잭션과 비동기 이벤트, 단순 메트릭 수집 경로가 구분되지 않아 도면 독해력이 떨어집니다.
🛠️ 핵심 선 정렬 · 디자인 정의 원리
① 핵심 동기 호출 (Primary Sync): 굵은 실선(penwidth=2.5, style="solid") + 채워진 화살표(arrowhead="normal")
② 이중 채널 / 강한 트랜잭션 (Dual / Strict): 이중 평행선(color="#000000:#ffffff:#000000") + 다이아몬드(arrowhead="diamond")
③ 비동기 이벤트 / 큐 발행 (Async Event): 파선(penwidth=1.6, style="dashed") + 속 빈 화살표(arrowhead="onormal")
④ 읽기 전용 / 캐시 / 관측 (Telemetry / Read): 점선(penwidth=1.4, style="dotted") + 열린 화살표(arrowhead="vee")
⑤ 인터페이스 / 소켓 바인딩 (Socket Hook): 원형 출발 단자(dir=both, arrowtail="odot", arrowhead="tee")
상황별 DOT 레시피
// 1. Primary Sync (핵심 동기 호출)
gw -> order [penwidth=2.5, style="solid", arrowhead="normal", label="1. Sync RPC"];
// 2. Strict / Dual Channel (강한 결합 · 이중선)
order -> ledger [color="#000000:#ffffff:#000000", penwidth=1.2, arrowhead="diamond", label="2. XA 2PC"];
// 3. Async Event (비동기 메시지 발행)
order -> broker [penwidth=1.6, style="dashed", arrowhead="onormal", label="3. Async Event"];
// 4. Telemetry / Cache Read (관측 · 약한 참조)
order -> metrics [penwidth=1.4, style="dotted", arrowhead="vee", label="4. Telemetry"];
// 5. Socket / Port Binding (포트 바인딩)
plugin -> gw [dir=both, arrowtail="odot", arrowhead="tee", label="5. Plugin Hook"];