가장 흔한 1:N 관계 예제로 게시글(BOARD) – 댓글(COMMENT) 을 사용해 두 방식의 차이를 살펴본다.

2-1. 비식별 관계 예시 – 게시글과 댓글

테이블 설계

DROP TABLE IF EXISTS comment_non_identifying;
DROP TABLE IF EXISTS board_non_identifying;

CREATE TABLE board_non_identifying (
  board_id BIGINT NOT NULL AUTO_INCREMENT,
  title    VARCHAR(255) NOT NULL,
  PRIMARY KEY (board_id)
);

CREATE TABLE comment_non_identifying (
  comment_id BIGINT NOT NULL AUTO_INCREMENT,  -- 독립적인 PK
  board_id   BIGINT NOT NULL,                -- 일반 컬럼 + FK
  content    TEXT   NOT NULL,
  PRIMARY KEY (comment_id),
  CONSTRAINT fk_comment_board_non
    FOREIGN KEY (board_id)
    REFERENCES board_non_identifying (board_id)
);

데이터 입력 예시

-- 게시글 입력
INSERT INTO board_non_identifying (title) VALUES ('첫 번째 게시글');  -- board_id: 1
INSERT INTO board_non_identifying (title) VALUES ('두 번째 게시글');  -- board_id: 2

-- 댓글 입력
INSERT INTO comment_non_identifying (board_id, content)
VALUES (1, '1번 글의 첫 댓글입니다.');   -- comment_id: 1

INSERT INTO comment_non_identifying (board_id, content)
VALUES (1, '1번 글의 두 번째 댓글입니다.'); -- comment_id: 2

INSERT INTO comment_non_identifying (board_id, content)
VALUES (2, '2번 글의 첫 댓글입니다.');   -- comment_id: 3

board_non_identifying

board_id title
1 첫 번째 게시글
2 두 번째 게시글

comment_non_identifying

comment_id board_id content
1 1 1번 글의 첫 댓글입니다.
2 1 1번 글의 두 번째 댓글입니다.
3 2 2번 글의 첫 댓글입니다.

각 댓글은 comment_id 하나만으로 완전히 식별된다. board_id는 소속을 나타내는 정보일 뿐이다.

장점

단점