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

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

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

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

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

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

✅ 심화) ‘한 가지 정보’라는 게 관점에 따라 달라질 수 있다.

users (사용자)
id
이름
1
박재성
2
김시온
 
users (사용자)
id
성
이름
1
박
재성
2
김
시온
누군가는 박재성이라는 전체 이름이 하나의 정보라고 생각할 수 있지만, 누군가는 박이 하나의 정보고, 재성이 하나의 정보라고 판단할 수도 있다. 둘 다 올바른 관점이다. 말 그대로 ‘한 가지 정보’라는 건 절대적이지 않다. 자신의 서비스에 맞게 판단해야 한다.
 
그럼 어떻게 판단해야 할까? → 서비스에서 데이터의 사용 방식에 따라 결정해야 한다!
 
예를 들어, 서비스에서 성과 이름을 따로따로 조회해야 하는 경우가 많다면 2번째 테이블의 형태로 구성하는 게 좋다. 반대로 서비스에서 성과 이름을 따로따로 조회할 일이 없고 통째로 쓰는 경우만 있다면 1번째 테이블의 형태로 구성하는 게 좋다.
 

 
이와 비슷한 예시를 하나 더 알아보자.
 
stores (가게)
id
전화번호
1
0321112345
2
0521234567
notion image
 
stores (가게)
id
전화번호1
전화번호2
전화번호3
1
032
111
2345
2
052
123
4567
notion image
 
누군가는 전화번호가 하나의 정보라고 생각할 수도 있지만, 누군가한테는 전화번호는 3가지의 정보라고 생각할 수 있다. 둘 다 맞는 말이다. 어떻게 테이블을 설계해야 하는 지는 서비스에 맞게 판단하면 된다. 만약 전화번호의 3가지 정보를 분리해서 따로따로 사용해야 하는 경우가 있다면 두 번째처럼 설계를 해야 한다. 그렇지 않다면 첫 번째처럼 설계를 하면 된다.
 
 
 

✅ 요약

  • 한 칸에는 한 가지 정보만 들어가야 한다.
  • 한 칸에 두 가지 이상의 정보가 들어가있을 땐, 테이블을 분리해서 FK를 활용하면 된다.
  • 특정 테이블에 FK를 도입했을 때 규칙 1이 안 지켜진다면, 다른 테이블로 FK를 옮겨보자.
  • ‘한 가지 정보’의 기준은 절대적이지 않다. 따라서 서비스에 맞게 판단해야 한다.
author
category
DB 설계
createdAt
Dec 6, 2025
series
비전공자도 이해할 수 있는 DB 설계 입문/실전
slug
type
series-footer
updatedAt
Dec 6, 2025 05:57 AM
📎
이 글은 비전공자도 이해할 수 있는 DB 설계 입문/실전 강의의 수업 자료 중 일부입니다.