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

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

DB 설계 시 꼭 기억해야 할 핵심 원칙 1가지

JSCODE 박재성
JSCODE 박재성
2026. 03. 29.
author
JSCODE 박재성
category
DB 설계
createdAt
Dec 6, 2025 12:33 PM
isPublic
isPublic
series
비전공자도 이해할 수 있는 DB 설계 입문/실전
slug
one-core-principle-of-db-design
type
post
updatedAt
Mar 29, 2026 09:00

✅ DB 설계의 핵심은 ‘중복 없애기’이다.

데이터베이스를 설계할 때 딱 1가지만 기억하면 된다.
중복 없애기
 
이게 무슨 말인지 아래 예시로 알아보자.
users (사용자)
id
이름
1
박재성
2
김유찬
posts(게시글)
id
제목
내용
작성자
1
[속보] 개발자 채용 확대
내용1
박재성
2
취업 꿀팁 공유합니다!
내용2
박재성
…
…
…
…
132
어제 면접 보고 온 썰
내용3
박재성
위의 표와 같이 게시글 데이터가 DB에 많이 쌓여있다고 가정하자. 여기서 박재성이 쓴 게시글이 3개가 있다고 하자. 그러다 어느 날 박재성이라는 사람이 박지성으로 개명을 했다. 그래서 게시글에 작성된 작성자의 이름도 전부 박재성에서 박지성으로 고쳐주어야 한다. 그럼 위 게시글의 모든 데이터를 뒤져서 박재성이라는 이름을 전부 찾아서 박지성으로 고쳐야 한다.
 
users (사용자)
id
이름
1
박지성
2
김유찬
 
posts(게시글)
id
제목
내용
작성자
1
[속보] 개발자 채용 확대
내용1
박지성
2
취업 꿀팁 공유합니다!
내용2
박지성
…
…
…
…
132
어제 면접 보고 온 썰
내용3
박재성
그런데 위 테이블에서 1, 2번 게시글의 작성자 이름만 고치고, 실수로 132번의 게시글을 안 고쳤다. 그러다 6개월 정도가 지난 후 132번 게시글에 신고가 들어왔다. 그런데 데이터베이스에서 작성자 이름인 박재성이라는 사용자를 암만 뒤져도 안 나오는 것이다. 즉, 데이터가 꼬여버린 것이다.
이런 문제가 발생한 가장 근본적인 이유는 데이터 중복 때문이다. 중복되는 데이터가 많으면 많을수로 무언가를 수정할 때 중복되는 모든 데이터를 찾아서 고쳐야 한다. 이 때, 실수로 중복된 데이터를 누락해서 수정을 하지 않는 경우가 발생하고, 이렇게 되면 데이터들 사이에 모순이 생겨버린다.
저장된 데이터들 중에서 모순되는 상황이 생긴 현상을 보고 이상현상(Anomaly)라고 얘기한다. 위의 경우는 이상현상(Anomaly) 중 갱신 이상(Update Anomaly)에 해당한다. DB 설계 할 때 이 용어는 하나도 중요하지 않으니 눈으로 보고만 넘어가자.
 
이런 문제를 해결하기 위해 만들어낸 DB 설계 방법이 정규화(Normalization)다.
 
 

✅ 정규화(Normalization)란?

데이터들 사이에서 발생한 모순의 근본적인 원인이 데이터 중복이라고 했다. 이런 문제를 해결하려면 데이터 중복을 없애면 된다. DB를 설계하면서 중복을 없애는 과정이 바로 정규화(Normalization)다. 제1정규형, 제2정규형, 제3정규형 등 모든 정규형은 중복을 없애게 해주는 방법들이다.
 
[각 정규형의 의미]
notion image
정규형에는 총 6가지 종류의 정규형이 있다. 하지만 실제 현업에서 적용시키는 정규형은 1정규형, 2정규형, 3정규형이다. BCNF, 4정규형, 5정규형을 적용시키면 지나치게 테이블이 분리되어서 관리가 복잡해지기 때문이다.
각 정규형을 보면 너무 어렵게 느껴진다. 위 의미를 이해하는 데까지만 해도 시간이 너무 오래 걸린다. 하지만 실제 현업에서는 위의 정규형을 하나하나씩 떠올리면서 설계하지 않는다. 위의 각 정규형 의미를 모르더라도 DB를 설계하는 방법을 알려줄 예정이다. 내가 알려준 방법대로만 DB 설계를 하고 난 뒤에 결과물을 보면, 1정규형~3정규형을 전부 다 지킨 테이블이 설계가 된다.
나만의 독창적인 방법이 아닌 내가 만나왔던 현업 개발자들도 전부 이렇게 DB 설계를 한다. 곧 그 방법들을 알려줄테니 차근차근 잘 따라와보자.
 
 

✅ 요약

데이터의 중복이 생기게끔 테이블을 설계하면 데이터끼리 꼬일 수 있다. 따라서 테이블을 설계할 때 데이터 중복이 발생하지 않게끔 설계해야 한다.
 
참고) 면접용 답변 방법 RDBMS에서 데이터 모델링을 할 때는 정규화를 통해 데이터 중복을 최소화할 수 있게 설계해야 합니다. 그래야 삽입 이상, 수정 이상, 삭제 이상과 같은 이상현상을 방지할 수 있으며 데이터 무결성을 지킬 수 있습니다.
 
🧑🏻
이상현상, 정규화, 1정규형~3정규형 등의 이론적인 개념은 나중에 따로 학습하도록 하자. 가장 먼저 배워야 하는 건 DB 설계의 모든 이론을 배우는 게 아니라, DB 설계를 실제로 할 수 있는 능력을 갖추는 것이다.
스마트폰을 처음 사용할 때 설명서를 처음부터 끝까지 정독한 뒤에 스마트폰을 쓰지 않는다. 가장 필요한 기능인 전화, 문자 같은 기능들 위주로 먼저 익혀서 사용하고 그 다음 부가적인 기능들을 하나씩 익혀나가는 식으로 사용한다. 이게 제일 효율적인 공부 방법이다.
개발 분야는 학교 내신 시험처럼 공부해야 하는 분야가 아니다. 이론은 빠삭하게 아는데 실전에서는 아무 것도 할 수 없다면 잘못 배운거다. 내가 스스로 생각해서 실제 프로젝트에서 적용시킬 수 있어야 제대로 배운거다.
 
📎
이 글은 비전공자도 이해할 수 있는 DB 설계 입문/실전 강의의 수업 자료 중 일부입니다.