데이터 모델과 ER 다이어그램
데이터 모델 모드는 API 계약과 데이터베이스 사이의 간극을 메웁니다. OpenAPI 스키마에서 완전한 관계형 모델을 도출하고 기존 데이터베이스와 대조하며, 어느 한쪽이 바뀌면 둘을 동기화합니다——전체를 시각적 ER 다이어그램으로 보여줍니다.
두 시작점이 있고 둘 다 지원됩니다.
- 아직 테이블이 없다. 현재 API에서 각 테이블, 필드, 외래 키, 관계 테이블과 그것을 만드는 SQL을 바로 도출.
- 데이터베이스가 이미 있다. 실제 테이블과 강제 외래 키를 읽고 API가 암시하는 모델과 대조해 어디가 일치하고 어디서 벌어지는지 확인.
4계층 대조
대조(datamodel.reconcile)는 4계층으로 권위 있는 사실을 반환합니다.
| 계층 | 포함 내용 |
|---|---|
| Observed(관찰) | 연결 DB의 고립 테이블, DB에만 있거나 강제된 외래 키 |
| Modeled(모델링) | 각 테이블 상태(missing, drift, matched, extra), 모델링/실제 필드 쌍, 필드급 차이, 영향받는 API 작업, 모델링 관계 |
| Proposed(제안) | blockedBy 의존이 있는 순서 있는 추가 전용 마이그레이션 계획과 각 단계 SQL |
| Inferred(추론) | 자동 추론된 다대다 관계 테이블, 명확화 질문, 안전장치 |
모델은 각 테이블, 필드, 관계, 진술을 이 결과에 기반으로 하고 DDL을 날조하지 않습니다.
테이블 상태
- Missing(신규)——API가 암시하지만 DB에 없음.
- Drift(이격)——둘 다 있지만 필드나 제약이 다름.
- Matched(일치)——있고 정렬됨.
- Extra(여분)——DB에 있지만 현재 API가 암시하지 않음.
관계 테이블과 인덱스가 추론됨
연결 테이블을 손으로 모델링할 필요가 없습니다. 스키마가 다대다를 암시할 때——예를 들어 user와 product 리소스가 있으면——추론 계층은 두 기반 테이블에서 멈추지 않고 그것을 잇는 관계 테이블(과 관련 인덱스)을 도출합니다. 보조 인덱스는 생성 SQL에 포함됩니다.
업무 논리를 명확히 추론할 수 없으면 결과가 추측 대신 명확화 질문을 내고, 안전장치가 사람 검토가 필요한 부분을 표시합니다.
시각적 ER 다이어그램
ER 뷰는 모델을 그래프로 렌더링해 관계와 외래 키를 테이블 목록에서 읽는 것이 아니라 한눈에 보여줍니다.
- 테이블은 노드이고 교차를 줄이는 자동 레이아웃.
- 외래 키 관계는 연결로 그려짐.
- 노드 상태는 대조 상태(신규, 이격, 일치, 여분) 반영.
- 사이드 패널에 구체적 마이그레이션 단계——
create_table,alter_table, 검토 항목——와 선택 테이블 SQL.
이로써 스키마의 거시적 관점과 DB를 정렬하는 정확하고 순서 있는 경로를 얻습니다.
양방향 영향 분석
모델은 API 작업과 테이블을 모두 알아 변경이 보이게 전파됩니다.
- API가 바뀌면, 대조가 영향 테이블을 식별——이격된 기존 테이블과 추가할 테이블——하고 해당 SQL을 냅니다.
- DB가 바뀌면, 영향 테이블에 닿는 작업이 영향 항목으로 제시됩니다.
어느 쪽이든 편집 후 새로고침해 재대조하고 모델과 DB가 일치할 때까지 진행할 수 있습니다.
배포 스크립트
全新 DB를 위해 datamodel.deploymentScript는 멱등하고 전진만 하는 SQL 스크립트를 생성합니다.
- 외래 키 순서의
CREATE TABLE IF NOT EXISTS. - 보조 인덱스.
- 선택적 결정론적 샘플 데이터(0–50행, 기본 0). 관계 테이블에는 채우지 않음.
기존 DB를 위해서는 순서 있는 마이그레이션 계획으로 추가 전용 ALTER를 내는 대조를 씁니다.
데이터베이스 연결
연결은 저장 프로필(ID, 이름, 방언, 호스트, 포트, 사용자, 데이터베이스)로 관리되고 암호는 반환되지 않습니다. 지원 방언은 MySQL, SQL Server, Oracle입니다.
database.runSelect는 저장 프로필에서 읽기 전용SELECT를 실행하고 상한으로 잘린 행을 반환. 쓰기와 DDL은 차단됨.database.prefillConnection은 제공된 세부 사항을 미리 채운 새 연결 대화상자를 열어 암호를 프롬프트로 받지 않고 당신이 입력합니다.
SQL은 생성만, 자동 실행 안 함
이 모드 전체에서 SQL은 DB에 대해 실행되는 것이 아니라 검토용으로 생성됩니다. 언제 어떻게 적용할지 당신이 결정하고 읽기 전용 접근이 실제 데이터를 보호합니다. DB에 닿기 전 모델을 안전하게 탐색하고 반복할 수 있습니다.