개체 속성은 컬럼과 검증 규칙으로 남긴다
강한 개체를 테이블로 바꿀 때는 컬럼명만 옮기면 부족하다. 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 의미를 나눠 맡는다.
나쁜 변환
컬럼만 만들고 제약을 빼면 애플리케이션 코드마다 검증이 흩어진다.