거의 모든 걸 커버하는 두 모양
대부분 데이터 관계가 두 패턴으로 압축돼:
- One-to-many: 한 author 가 여러 book 씀; 한 customer 가 여러 order. '여러' 쪽이 '하나' 쪽 가리키는 FK 가짐.
- Many-to-many: 여러 student 가 여러 course; 여러 post 가 여러 tag. Junction 테이블 + 두 FK 필요.
One-to-one 은 위장한 one-to-many
진짜 1:1 필요하면 보통 FK 에 UNIQUE 제약 건 1:N. (보통 정답은 '테이블 안 나누고 컬럼을 부모에 박기'.)
Junction 테이블이 first-class
students 랑 courses 연결하는 junction 이 hack 아니라 올바른 모양. 자체 데이터 가질 수 있음: enrollment 날짜, 역할, 성적. Composite PK (student_id, course_id) 가 관계 행의 자연스러운 정체성.