JSCODE Logo
프로그래밍 과외블로그후기멘토진
회사명 : JSCODE대표 : 박재성사업자 등록번호 : 244-22-01557통신판매업 : 제 2023-인천미추홀-0381 호
학원 명칭 : 제이에스코드(JSCODE)원격학원학원설립ㆍ운영 등록번호 : 제6063호

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

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

이용약관개인정보처리방침
← 블로그 목록으로 돌아가기

[규칙 1] 한 칸에는 한 가지 정보만 들어가도록 만들어라 - 1

JSCODE 박재성
JSCODE 박재성
2025-12-06
author
JSCODE 박재성
category
DB 설계
createdAt
Dec 6, 2025
series
비전공자도 이해할 수 있는 DB 설계 입문/실전
slug
rule-1-one-piece-of-information-per-cell-1
type
post
updatedAt
Dec 6, 2025 05:57 AM

✅ 한 칸에는 한 가지 정보만 들어가도록 만들어라.

데이터베이스 테이블을 설계할 때 ‘한 칸에는 한 가지 정보만 들어가야 한다.’라는 규칙을 지켜야 한다. 이 규칙이 뭔지 알아보기 위해 이 규칙을 안 지킨 사례 먼저 살펴보자.
[사례 1]
users (사용자)
id (PK)
이름
이메일
1
박재성
js123@naver.com, js00@naver.com
2
김시안
king123@naver.com, queen123@naver.com
 
[사례 2]
stores (가게)
id (PK)
가게명
판매 상품
1
JSCODE 카페
JS아메리카노, JS카페라떼
2
재성이네 국밥
재성이네 돼지국밥, 재성이네 육개장, 재성이네 수육
위 사례를 살펴보면 한 칸에 2가지 이상의 정보가 들어가있는 걸 확인할 수 있다.
 
“왜 한 칸에 2가지 이상 정보가 들어가면 안 되는걸까?”
 
외우지말고 이해를 해보자. 판매 상품을 조회해서 사용할 때마다 중간에 있는 콤마(,)를 제거하고 배열에 집어넣는 로직을 넣어야 한다. 판매 상품을 삽입할 때든 삭제할 때든 항상 콤마(,)를 신경써서 작업해야 한다. 그리고 한 칸에 데이터를 여러개 집어넣다보면 실수로 데이터를 중복해서 넣어버리기도 한다. 따라서 한 칸에는 한 가지의 정보만 넣으려고 하는 것이다.
 
 

✅ 한 칸에 2개 이상의 정보가 들어가있을 땐?

한 칸에 2가지 이상의 정보가 들어가있을 때는 테이블을 분리하면 된다. 테이블을 분리함으로써 한 칸에 한 가지 정보만 들어가도록 해야 한다.
 
[사례 1 - 테이블 분리]
users (사용자)
id (PK)
이름
1
박재성
2
김시안
 
emails (이메일)
id (PK)
이메일
1
js123@naver.com
2
js00@naver.com
3
king123@naver.com
4
queen123@naver.com
테이블을 분리하는 것까진 좋은데 위와 같이 테이블을 분리하면, 특정 사용자의 이메일 주소를 알 수 있는 방법이 없다. 특정 사용자의 이메일 주소가 어떤 건지 알 수 있게 테이블을 보완해보자.
 
[사례 1 - 잘못된 분리]
users (사용자)
id (PK)
이름
이메일 id (FK)
1
박재성
1, 2
2
김시안
3, 4
emails (이메일)
id (PK)
이메일
1
js123@naver.com
2
js00@naver.com
3
king123@naver.com
4
queen123@naver.com
위와 같이 데이터를 저장하니 특정 사용자의 이메일 주소를 알 수는 있게 됐다. 하지만 한 칸에 2가지 이상의 정보가 다시 들어가게 됐다. 이럴 때는 FK를 다른 테이블로 옮겨보자. 즉, FK의 위치를 users 테이블에서 emails 테이블로 옮겨보자.
 
[사례 1 - 최종]
users (사용자)
id (PK)
이름
1
박재성
2
김시안
emails (이메일)
id (PK)
이메일
사용자 id (FK)
1
js123@naver.com
1
2
js00@naver.com
1
3
king123@naver.com
2
4
queen123@naver.com
2
위와 같이 데이터를 저장하니 특정 사용자의 이메일 주소도 알 수 있고, 한 칸에 한 가지의 정보만 들어가게 만들었다. 위와 같이 테이블을 분리해야 한다.
 
다시 한 번 정리해보자.
한 칸에 두 가지 이상의 정보가 들어가있을 땐, 테이블을 분리해서 FK를 활용해 한 칸에 한 가지의 정보만 들어가게 만들어야 한다.
 

 
이번엔 두 번째 사례를 가지고 다시 연습해보자.
[사례 2]
stores (가게)
id (PK)
가게명
판매 상품
1
JSCODE 카페
JS아메리카노, JS카페라떼
2
재성이네 국밥
재성이네 돼지국밥, 재성이네 육개장, 재성이네 수육
 
[사례 2 - 잘못된 분리]
stores (가게)
id (PK)
가게명
판매 상품 id (FK)
1
JSCODE 카페
1, 2
2
재성이네 국밥
3, 4, 5
 
products (판매 상품)
id (PK)
상품명
1
JS아메리카노
2
JS카페라떼
3
재성이네 돼지국밥
4
재성이네 육개장
5
재성이네 수육
 
[사례 2 - 최종]
stores (가게)
id (PK)
가게명
1
JSCODE 카페
2
재성이네 국밥
 
products (판매 상품)
id (PK)
상품명
가게 id (FK)
1
JS아메리카노
1
2
JS카페라떼
1
3
재성이네 돼지국밥
2
4
재성이네 육개장
2
5
재성이네 수육
2
 
🧑🏻
이 과정을 보고 데이터베이스 이론에서는 제1정규형이라고 부른다. 이런 학구적인 용어는 DB 설계를 할 수 있게 됐을 때 배워도 늦지 않다. 중요한 건 DB 설계를 하는 능력이다. 정확한 용어를 외우고 익히는 건 나중에 해라.
 
 
author
category
DB 설계
createdAt
Dec 6, 2025
series
비전공자도 이해할 수 있는 DB 설계 입문/실전
slug
type
series-footer
updatedAt
Dec 6, 2025 05:57 AM
📎
이 글은 비전공자도 이해할 수 있는 DB 설계 입문/실전 강의의 수업 자료 중 일부입니다.