1:1 관계 선택

같은 1:1이라도 저장 방식은 세 가지입니다

핵심은 한 행이 다른 한 행과 한 번만 연결되도록 만드는 것입니다. 보통은 FK + UNIQUE를 쓰고, 항상 같이 쓰면 병합하고, 관계 자체에 정보가 있으면 별도 관계 테이블을 둡니다.

방법 1. FK 추가 가장 일반적
방법 2. 테이블 병합 항상 함께 쓰일 때
방법 3. 관계 테이블 예외적 선택
대표 구조
users(id, name, email)
profiles(
  id PK,
  user_id FK UNIQUE,
  bio, avatar
)
users(
  id, name, email,
  bio, avatar
)
user_profiles(
  user_id FK UNIQUE,
  profile_id FK UNIQUE,
  created_at
)
언제 적합한가

기본 선택지. 두 개체는 분리해 두되, 한쪽이 다른 쪽을 정확히 하나만 참조하게 만들고 싶을 때.

속성이 적고 생명주기가 같다. 회원과 프로필을 따로 다룰 이유가 거의 없을 때.

관계 자체를 기록해야 한다. 연결 시각 같은 속성이 있거나, 직접 연결을 분리해 관리해야 할 때.

1:1 보장 방식

FK + UNIQUE가 핵심입니다. 같은 user_id가 두 번 들어갈 수 없어서 프로필도 하나만 연결됩니다.

행을 하나로 합침으로써 별도 연결 자체가 사라집니다. 조인 없이 한 테이블에서 바로 조회됩니다.

양쪽 FK 모두 UNIQUE로 묶습니다. 거의 쓰지 않지만 관계에 의미가 생기면 구조가 분명해집니다.

보통: 분리된 두 테이블을 유지하면서 FK + UNIQUE로 1:1을 만든다.
병합: 항상 함께 읽고 함께 저장된다면 한 테이블이 더 단순하다.
관계 테이블: 연결 자체에 속성이나 관리 이유가 있을 때만 쓴다.