본문 바로가기
강의 실습/비전공자도 이해할 수 있는 DB 설계 입문 실전

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

by jint 2026. 2. 11.

1. 한 칸에는 한 가지 정보만 들어가도록 만들어라
데이터베이스 테이블 설계 시, "한 칸에 한 가지 정보만 들어가야 한다." 규칙을 살펴본다.

사례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를 다른 테이블로 옮겨본다.

사례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) 가게명 판매 상품 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정규형" 이라고 부른다.


참고링크 : https://www.inflearn.com/course/%EB%B9%84%EC%A0%84%EA%B3%B5%EC%9E%90-db-%EC%84%A4%EA%B3%84-%EC%9E%85%EB%AC%B8?cid=335049

 

비전공자도 이해할 수 있는 DB 설계 입문/실전| JSCODE 박재성 - 인프런 강의

현재 평점 4.9점 수강생 1,491명인 강의를 만나보세요. 비전공자 입장에서도 쉽게 이해할 수 있고, 실전에서 바로 적용 가능한 'DB 설계 입문/실전' 강의를 만들어봤습니다! 복잡한 개념을 몰라도

www.inflearn.com

댓글