Entity Constraint

개체 속성은 컬럼과 검증 규칙으로 남긴다

강한 개체를 테이블로 바꿀 때는 컬럼명만 옮기면 부족하다. ERD의 필수성, 유일성, 값 범위까지 DB 제약으로 남겨야 한다.

ERD에서 보이는 의미
관계형 스키마 제약
놓치면 생기는 문제
필수 속성 name은 반드시 존재 개체가 의미를 가지려면 비어 있을 수 없음
NOT NULL 입력 단계와 DB 단계에서 모두 누락 방지
빈 이름, 익명 행, 검색 불능 데이터가 들어온다.
후보키 email은 중복 불가 PK가 아니어도 업무상 유일해야 함
UNIQUE 같은 이메일의 중복 가입을 차단
한 사람을 여러 행으로 저장해 식별이 흔들린다.
도메인 status는 허용값만 ACTIVE, SUSPENDED 같은 제한된 값
CHECK 또는 참조 테이블 값 범위를 스키마가 검증
오타와 임의 값 때문에 집계 기준이 깨진다.
참조 department_id는 부서 참조 부모 행이 있어야 의미가 있음
FOREIGN KEY + index 무결성과 조회 성능을 함께 관리
없는 부서를 가리키거나 조인 비용이 커진다.
좋은 변환

컬럼, PK, FK, UNIQUE, NOT NULL, CHECK가 ERD 의미를 나눠 맡는다.

나쁜 변환

컬럼만 만들고 제약을 빼면 애플리케이션 코드마다 검증이 흩어진다.