ERD Mistakes

ERD 실수는 관계를 테이블로 검증하면 줄어든다

그림에서 예뻐 보이는 관계도 실제 테이블과 제약으로 바꾸면 문제가 드러난다. 빠뜨린 관계 테이블, 선택 참여, 도메인 제약을 변환 단계에서 확인한다.

Before

학생과 과목을 직접 M:N으로 연결

Student
M:N
Course
성적과 수강 학기를 둘 자리가 없어 실제 테이블 변환이 막힌다.
After

Enrollment를 추가해 관계를 저장

Student
1:N
Enrollment
Course
1:N
grade, term
관계 속성이 수강 테이블의 컬럼으로 내려온다.
관계 속성 누락관계 자체에 값이 있는가성적, 수량, 배정일처럼 관계마다 달라지는 값은 연결 테이블에 둔다.
선택 참여NULL / NOT NULL 확인반드시 소속되어야 하는 관계인지 선택 가능한 관계인지 FK nullability로 검증한다.
도메인 제약값 범위를 테이블에 남긴다등급, 상태, 수량 범위는 CHECK나 참조 테이블로 이어진다.
실수테이블에서 보이는 신호수정
M:N 직접 연결두 테이블 PK만으로는 관계 속성을 저장할 곳이 없음연결 테이블 + 두 FK + 관계 속성
선택 참여 누락FK가 NULL인지 NOT NULL인지 결정되지 않음참여 제약을 FK nullability로 표시
도메인 미정상태, 등급, 수량에 아무 값이나 들어갈 수 있음CHECK, enum, 참조 테이블 검토

좋은 ERD는 그림에서 끝나지 않고 PK, FK, NULL, UNIQUE, CHECK로 검증 가능한 설계로 내려온다.