JSCODE Logo
JSCODE 박재성JSCODE 제이온JSCODE 시니
과외유튜브블로그후기
완강 후기 이벤트블로그 리뷰 이벤트AWS SAA 합격 후기 이벤트
회사명 : JSCODE대표 : 박재성사업자 등록번호 : 244-22-01557통신판매업 : 제 2023-인천미추홀-0381 호

서울특별시 구로구 경인로 20가길 11(오류동, 아델리아)

Copyright ⓒ 2026 JSCODE - 최상위 현업 개발자들의 프로그래밍 교육 All rights reserved.

이용약관개인정보처리방침

비전공자도 이해할 수 있는 DB 설계 입문/실전

DB 설계 전 필수로 알아야 하는 개념

데이터베이스 모델링(Datbase Modeling)이란?
관계형 데이터베이스(RDBMS)의 기본 구성
PK(기본키), FK(외래키)
데이터베이스 네이밍 규칙

DB 설계의 핵심 원칙 및 전체 과정

DB 설계할 때 이런 개념들 몰라도 아무 문제 없습니다!
DB 설계 시 꼭 기억해야 할 핵심 원칙 1가지
DB 설계 전체 과정
저장할 데이터 파악하기 /

복잡한 개념을 몰라도 누구나 따라할 수 있는, 마법의 DB 설계 규칙 6가지

[규칙 1] 한 칸에는 한 가지 정보만 들어가도록 만들어라 - 1
[규칙 1] 한 칸에는 한 가지 정보만 들어가도록 만들어라 - 2
[규칙 2] 어떤 테이블에 FK를 넣어도 ‘규칙 1’을 못 지킬 때는 중간 테이블을 하나 더 만들어라
[규칙 3] 헷갈릴 땐 관계(1:1, 1:N, N:M)를 파악해봐라 - 1
[규칙 3] 헷갈릴 땐 관계(1:1, 1:N, N:M)를 파악해봐라 - 2
[규칙 3] 헷갈릴 땐 관계(1:1, 1:N, N:M)를 파악해봐라 - 3
[규칙 3] 헷갈릴 땐 관계(1:1, 1:N, N:M)를 파악해봐라 - 4
[규칙 3] 헷갈릴 땐 관계(1:1, 1:N, N:M)를 파악해봐라 - 5
[규칙 3] 헷갈릴 땐 관계(1:1, 1:N, N:M)를 파악해봐라 - 6
[규칙 4] 데이터 중복이 발생하는 컬럼이 있는 지 확인해라
[규칙 5] 가짜 중복과 진짜 중복을 구별해라
[규칙 6] 숨어있는 중복을 찾아라

실전처럼 DB 설계 해보기

[실습] 요구사항을 보고 DB 설계해보기 - JSCODE 커뮤니티
[실습] 요구사항을 보고 DB 설계해보기 - JSCODE 쇼핑몰
[실습] 화면 UI 디자인을 보고 DB 설계해보기 - JSCODE 게시판
[실습] 화면 UI 디자인을 보고 DB 설계해보기 - JSCODE 투두리스트
[보충 강의] ERD란 ? / ERD 해석하기

설계한 모델을 실제 DB에 반영하기

설계한 모델을 실제 DB에는 어떻게 반영하나요?
데이터 타입 (Data Type) 실전 활용 지침

DB 설계 Q&A

정규화를 하면 성능이 떨어진다던데요 ?
역정규화는 언제하나요 ?
← 블로그 목록으로 돌아가기

[규칙 5] 가짜 중복과 진짜 중복을 구별해라

JSCODE 박재성
JSCODE 박재성
2026. 03. 29.
author
JSCODE 박재성
category
DB 설계
createdAt
Dec 6, 2025 03:33 AM
isPublic
isPublic
series
비전공자도 이해할 수 있는 DB 설계 입문/실전
slug
rule-5-identify-fake-vs-real-duplication
type
post
updatedAt
Mar 29, 2026 09:00

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

가짜 중복과 진짜 중복이 어떤 의미인지 설명하기 위해 예시를 바로 보자.
posts (게시글)
id
제목
내용
작성자
1
[속보] 개발자 채용 확대
내용
박재성
2
[속보] 개발자 채용 확대
내용
박재성
3
[속보] 개발자 채용 확대
내용
박재성
박재성이라는 사용자가 같은 제목과 같은 내용의 게시글을 3개 작성했다고 가정하자. 겉으로만 봤을 땐 제목 컬럼에서도 데이터 중복이 발생한 것처럼 보이고, 내용 컬럼에서도 데이터 중복이 발생한 것처럼 보이고, 작성자 컬럼에서도 데이터 중복이 발생한 것처럼 보인다. 하지만 여기서 진짜 데이터 중복이 발생한 컬럼은 작성자 컬럼뿐이다.
 
가짜 중복인지 진짜 중복인지 어떻게 판단할 수 있을까?
 
가짜 중복인지 진짜 중복인지 판단하려면 이렇게 질문해보면 된다.
“실제 서비스에서 A 데이터의 값을 수정하면, B 데이터의 값도 같이 수정되어야 하는가?”
 
말로만 들으니까 어렵게 느껴진다. 바로 한 번 적용시켜보자.
posts (게시글)
id
제목
내용
작성자
1
[속보] 개발자 채용 확대
내용
박재성
2
[속보] 개발자 채용 확대
내용
박재성
3
[속보] 개발자 채용 확대
내용
박재성
  1. 1번 게시글의 작성자 이름을 수정하면, 2번 게시글의 작성자 이름도 같이 수정되어야 하는가?
    1. → Yes! (= 진짜 중복이다)
 
  1. 1번 게시글의 제목을 수정하면, 2번 게시글의 제목도 같이 수정되어야 하는가?
    1. → No! (= 가짜 중복이다)
       
  1. 1번 게시글의 내용을 수정하면, 2번 게시글의 내용도 같이 수정되어야 하는가?
    1. → No! (= 가짜 중복이다)
 
진짜 중복을 찾아냈다면 진짜 중복의 컬럼에 대해서만 테이블을 분리해야 한다.
posts (게시글)
id
제목
내용
작성자 id (FK)
1
[속보] 개발자 채용 확대
내용
1
2
[속보] 개발자 채용 확대
내용
1
3
[속보] 개발자 채용 확대
내용
1
 
users (사용자)
id
이름
1
박재성
 

 
예시를 하나만 보면 헷갈릴 수 있으니 한 가지 예시를 더 보자.
products (상품)
id
상품명
카테고리
1
락스
생활용품
2
락스
생활용품
3
락스
생활용품
 
  1. 1번 상품의 카테고리명을 수정하면, 2번 상품의 카테고리명도 수정되어야 하는가?
    1. → Yes! (= 진짜 중복이다)
 
  1. 1번 상품의 상품명을 수정하면, 2번 상품의 상품명도 수정되어야 하는가?
    1. → No! (= 가짜 중복이다)
 
[진짜 중복에 대해서만 테이블 분리]
products (상품)
id
상품명
카테고리 id (FK)
1
락스
1
2
락스
1
3
락스
1
 
categories (카테고리)
id
이름
1
생활용품
 
 
 

✅ 정리

  • 가짜 중복이 발생한 컬럼은 테이블 분리를 하면 안 된다. 진짜 중복이 발생한 컬럼에 대해서만 테이블 분리를 해야 한다.
 
📎
이 글은 비전공자도 이해할 수 있는 DB 설계 입문/실전 강의의 수업 자료 중 일부입니다.