1:1 관계에서는 외래 키를 어디에 두는지, 그리고 그 외래 키를 PK로 쓸지 여부에 따라 식별/비식별 관계가 갈린다. 예제로 회원과 회원 상세 프로필을 생각해 본다.

5-1. 비식별 1:1 – 대리 키 + FK + UNIQUE

member와 member_profile이 1:1 관계라고 가정한다.

CREATE TABLE member (
  member_id BIGINT NOT NULL AUTO_INCREMENT,
  email     VARCHAR(100) NOT NULL,
  name      VARCHAR(50)  NOT NULL,
  PRIMARY KEY (member_id),
  UNIQUE (email)
);

CREATE TABLE member_profile_non_identifying (
  profile_id BIGINT NOT NULL AUTO_INCREMENT,  -- 독립적인 PK
  member_id  BIGINT NOT NULL,                -- FK
  nickname   VARCHAR(50),
  bio        TEXT,
  PRIMARY KEY (profile_id),
  UNIQUE (member_id),                         -- 1:1 보장
  CONSTRAINT fk_profile_member_non
    FOREIGN KEY (member_id)
    REFERENCES member (member_id)
);

장점:

5-2. 식별 1:1 – PK = FK

이번에는 프로필 테이블의 PK를 곧 member_id로 사용하는 방식이다.

CREATE TABLE member_profile_identifying (
  member_id BIGINT NOT NULL,      -- PK + FK
  nickname  VARCHAR(50),
  bio       TEXT,
  PRIMARY KEY (member_id),
  CONSTRAINT fk_profile_member_iden
    FOREIGN KEY (member_id)
    REFERENCES member (member_id)
);

장점:

단점: