논리 모델을 물리 모델로 옮길 때, 단순히 ERD만으로는 상세 정보가 부족하다. 그래서 **테이블 정의서(Table Definition Document)**를 별도 문서로 작성한다.
테이블 정의서에는 일반적으로 다음 정보가 포함된다.
예를 들어 member 테이블 정의서는 다음과 같이 정리할 수 있다.
| No | 컬럼 한글명 | 컬럼 영문명 | 데이터 타입 | 제약 조건 | 기본값 | 비고 |
|---|---|---|---|---|---|---|
| 1 | 회원 ID | member_id | BIGINT | PK | AUTO | 내부 식별용 숫자 키 |
| 2 | 로그인 ID | login_id | VARCHAR(50) | UNIQUE, NOT NULL | 화면 로그인에 사용하는 ID | |
| 3 | 비밀번호 | password | VARCHAR(255) | NOT NULL | 해시된 비밀번호 저장 | |
| 4 | 회원 이름 | member_name | VARCHAR(100) | NOT NULL | 실명 또는 닉네임 | |
| 5 | 이메일 | VARCHAR(100) | NOT NULL | 연락용 이메일 | ||
| 6 | 생성 일시 | created_at | DATETIME | NOT NULL | CURRENT_TIMESTAMP | 레코드 생성 시각 |
| 7 | 수정 일시 | updated_at | DATETIME | NOT NULL | CURRENT_TIMESTAMP | 레코드 수정 시각 |
다른 테이블(product, orders, order_item, delivery, pay)도 같은 양식으로 정의서를 작성해 두면,
또한 모든 테이블에 **감사 컬럼(audit columns)**으로 created_at, updated_at을 공통으로 두어, 데이터 이력을 추적할 수 있게 한다.