이 두 관계가 99%를 덮어
관계형 schema는 거의 전부 두 가지 관계 위에 세워져.
- One-to-many — author 한 명에 post 여러 개. FK는 'many' 쪽에 붙어.
- Many-to-many — post마다 tag가 여럿이고 tag마다 post도 여럿이야. Junction 테이블로 풀어. join table이나 link table, association table이라고도 불러.
1:1은 드물어. 대개는 두 테이블을 합치라는 신호야. 뜨거운 컬럼과 차가운 컬럼을 일부러 갈라놓은 경우만 빼고.
Principle: TEXT 컬럼에 id를 쉼표로 이어 넣고 싶어지면 거기서 멈춰. 그게 junction 테이블이 필요하다고 비명 지르는 소리야. SQL은 '이 컬럼 안에 42가 들어 있는 row 다 찾아줘'에 좋은 답을 못 줘. junction 테이블은 그 질문을 인덱스 타는 JOIN으로 바꿔주고.