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

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

PK(기본키), FK(외래키)

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

✅ PK(Primary Key, 기본키)란?

우리가 살아가는 세상에는 수많은 사람들이 살아간다. 육안으로는 구별하기 힘든 쌍둥이도 존재하고, 이름이 동일한 사람들도 존재한다. 하지만 우리는 사람을 일일이 구별할 수 있어야 한다. 그래서 주민등록번호를 사람마다 부여함으로써 사람을 구별한다.
데이터베이스의 테이블에도 수많은 데이터가 저장되어 있다. 사람들을 구별하기 위해 주민등록번호가 필요하듯이, 수많은 데이터들을 구별하기 위해서 PK(Primary Key)라는 걸 사용한다. 즉, PK(Primary Key, 기본키)는 특정 데이터를 식별하기 위한 값이다. PK는 중복되어서는 안 되며, 비어있어서도 안 된다.
 
 

✅ 현업에서 PK(Primary Key)는 어떻게 설정할까?

가끔 주민등록번호, 이메일이 특정 데이터를 식별할 수 있는 데이터라고 생각해서 PK로 설정하는 걸 볼 수 있다. 하지만 이는 잘못됐다. 가능성은 적겠지만 주민등록번호, 이메일은 바뀔 가능성이 존재한다. PK(Primary Key)가 바뀌게 되면 특정 데이터를 식별하던 값이 바뀌어서 데이터를 관리하거나 사용하는 입장에서 혼란이 올 수 있다. 뿐만 아니라 RDBMS의 성능에도 안 좋은 영향을 미친다.
따라서 현업에서는 PK(Primary Key)를 주로 Auto Increment(숫자가 1씩 증가하는 방식)나 UUID(랜덤값)로 설정을 많이 한다.
 
 

✅ FK(Foreign Key, 외래키)란?

사용자와 게시글 데이터를 저장해야 한다고 가정하자. 데이터를 분리해서 저장하기 위해 사용자와 게시글 테이블을 만들어서 아래와 같이 저장했다. 그런데 아래와 같이 게시글 데이터를 저장하면 어떤 사용자가 게시글을 저장했는 지 알 수가 없다. 그래서 게시글 데이터를 저장할 때 사용자 데이터의 PK(기본키)를 같이 저장한다. 게시글 테이블에서 사용자의 PK를 저장하기 위한 값을 보고 FK(Foreign Key, 외래키)라고 얘기한다.
FK(Foreign Key, 외래키)를 한 줄로 요약하자면, 다른 테이블의 데이터와 관계를 연결하기 위한 키이다.
 
[FK 사용 전]
users (사용자)
id
이름
1
박재성
2
김유찬
posts (게시글)
id
제목
1
개발자 취업 방법 알려드려요!
2
면접 후기 공유합니다
3
TIL - 객체지향
 
[FK 사용 후]
users (사용자)
id (PK)
이름
1
박재성
2
김유찬
posts (게시글)
id (PK)
제목
user_id (FK)
1
개발자 취업 방법 알려드려요!
2
2
면접 후기 공유합니다
1
3
TIL - 객체지향
20 (Error)
** FK(외래키)를 설정했을 때 부가적인 기능이 하나 있다. 적절하지 않은 FK를 넣었을 때 DB에서는 에러를 발생시킨다. 즉, 적절하지 않은 FK를 넣는 걸 방지해준다. 이걸 보고 어려운 말로 ‘참조 무결성’이라고 한다. 말 그대로 결점(모순되는 점)이 없도록 유지하는 특성을 의미한다.
 
🧑🏻
데이터베이스에서 ‘무결성’이라는 단어가 참 많이 사용된다. 참조 무결성, 도메인 무결성, 엔티티 무결성 등 다양한 무결성이 있다. 하지만 각 무결성이 뭔지 외울 필요 없다. DB 설계할 때 하나도 안 중요한 개념들이다. 다만, 다른 책이나 강의를 볼 때 쉽게 이해할 수 있게 ‘무결성’이라는 단어가 어떤 뜻인지 나만의 말로 정리해두자.
 
 
📎
이 글은 비전공자도 이해할 수 있는 DB 설계 입문/실전 강의의 수업 자료 중 일부입니다.