본문 바로가기
DB

[DB] 과연 3년차 비전공 개발자도 이해할 수 있을까? 인프런 DB 설계 강의 - 18.가짜 중복과 진짜 중복을 구별해라

by woorix2 2025. 2. 1.

1. 가짜 중복과 진짜 중복을 구별해라

가짜 중복과 진짜 중복이 어떤 의미인지 예시를 보자.

 

posts (게시글) 테이블

id 제목 내용 작성자
1 [속보] 대통령 탄핵 내용1 KBS
2 [속보] 대통령 탄핵 내용1 KBS
3 [속보] 대통령 탄핵 내용1 KBS

'KBS'라는 사용자가 같은 제목과 같은 내용의 게시글을 3개 작성했다고 가정하자. 겉으로만 봤을 땐 제목 컬럼에서도 데이터 중복이 발생한 것처럼 보이고, 내용 컬럼에서도 데이터 중복이 발생한 것처럼 보이고, 작성자 컬럼에서도 데이터 중복이 발생한 것처럼 보인다. 하지만 여기서 진짜 데이터 중복이 발생한 컬럼은 작성자 컬럼뿐이다.

 

가짜 중복인지 진짜 중복인지 어떻게 판단할 수 있을까?

 

가짜 중복인지 진짜 중복인지 판단하려면 이렇게 질문해 보면 된다.

“실제 서비스에서 A 데이터의 값을 수정하면, B 데이터의 값도 같이 수정되어야 하는가?”

 

1) 1번 게시글의 작성자 이름을 수정하면, 2번 게시글의 작성자 이름도 같이 수정되어야 하는가?

Yes! (= 진짜 중복이다)

 

2) 1번 게시글의 제목을 수정하면, 2번 게시글의 제목도 같이 수정되어야 하는가?

No! (= 가짜 중복이다)

 

3) 1번 게시글의 내용을 수정하면, 2번 게시글의 내용도 같이 수정되어야 하는가?

No! (= 가짜 중복이다)

 

진짜 중복을 찾아냈다면 진짜 중복의 컬럼에 대해서만 테이블을 분리해야 한다.

posts (게시글) 테이블

id 제목 내용 작성자
1 [속보] 대통령 탄핵 내용1 1
2 [속보] 대통령 탄핵 내용1 1
3 [속보] 대통령 탄핵 내용1 1

 

users (사용자) 테이블

id 이름
1 KBS

 

 

2. 정리

가짜 중복이 발생한 컬럼은 테이블 분리를 하면 안 해도 되는데, 진짜 중복이 발생한 컬럼에 대해서는 꼭 테이블 분리를 해야 한다.

 


'인프런 - 비전공자도 이해할 수 있는 DB 설계 입문/실전' 강의를 수강하며 내용 정리를 위해 작성한 포스팅입니다.

내용은 JSCODE님 수업자료에서 퍼온 것입니다.