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

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

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

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

[규칙 2] 어떤 테이블에 FK를 넣어도 ‘규칙 1’을 못 지킬 때는 중간 테이블을 하나 더 만들어라

JSCODE 박재성
JSCODE 박재성
2025-12-06
author
JSCODE 박재성
category
DB 설계
createdAt
Dec 6, 2025
series
비전공자도 이해할 수 있는 DB 설계 입문/실전
slug
rule-2-add-middle-table-when-fk-breaks-rule-1
type
post
updatedAt
Dec 6, 2025 05:57 AM

✅ 어떤 테이블에 FK를 넣어도 ‘규칙 1’을 못 지킬 때는 중간 테이블을 하나 더 만들어라.

이 규칙도 말로만 들으면 무슨 말인지 이해하기 어렵기 때문에 바로 예시를 보자.

1.

students (학생)
id
이름
수강 과목
1
박재성
수학, 과학
2
김재은
국어, 수학
3
김지훈
국어, 과학
위 테이블을 보면 규칙 1(한 칸에는 한 가지 정보만 들어가도록 만들어라)을 안 지키고 있다. 규칙 1을 지키게 만들기 위해 테이블을 분리해보자.
 

2.

students (학생)
id
이름
수강 과목 id (FK)
1
박재성
2, 3
2
김재은
1, 2
3
김지훈
1, 3
 
courses (수강 과목)
id
과목명
1
국어
2
수학
3
과학
여전히 규칙 1을 안 지키고 있다. 그러면 FK를 students 테이블이 아닌 courses 테이블로 옮겨보자.
 

3.

students (학생)
id
이름
1
박재성
2
김재은
3
김지훈
 
courses (수강 과목)
id
과목명
학생 id
1
국어
2, 3
2
수학
1, 2
3
과학
1, 3
FK의 위치를 다른 테이블로 바꿔봤음도 불구하고 여전히 규칙 1이 안 지켜진다. 이럴 땐 어떻게 해야 할까?
 
어떤 테이블에 FK를 넣어도 ‘규칙 1’을 못 지킬 때는 중간 테이블을 하나 더 만들어야 한다.
 

4.

students (학생)
id
이름
1
박재성
2
김재은
3
김지훈
 
course_registrations (수강 과목 등록)
id
학생 id (FK)
수강 과목 id (FK)
1
1
2
2
1
3
3
2
1
4
2
2
5
3
1
6
3
3
 
courses (수강 과목)
id
과목명
1
국어
2
수학
3
과학
위와 같이 테이블을 설계하면 어떤 학생이 어떤 과목들을 수강하는 지까지 다 파악할 수 있으며, 규칙 1을 지킬 수 있게된다.
 
 

✅ 또 다른 연습 예제

아래 테이블을 규칙 1을 지키도록 재구성해보자.
movies (영화)
id
이름
출연 배우
1
베테랑
황정민, 오달수
2
신세계
황정민, 이정재
3
관상
이정재, 송강호
 

1. 테이블 분리

movies (영화)
id
이름
출연 배우 id (FK)
1
베테랑
1, 2
2
신세계
1, 3
3
관상
1, 4
 
actors (배우)
id
이름
1
황정민
2
오달수
3
이정재
4
송강호
 

2. FK 위치 변경

movies (영화)
id
이름
1
베테랑
2
범죄도시
3
기생충
 
actors (배우)
id
이름
영화 id (FK)
1
황정민
1, 2
2
오달수
1
3
이정재
2, 3
4
송강호
3
 

3. 중간 테이블 추가

movies (영화)
id
이름
1
베테랑
2
범죄도시
3
기생충
 
castings (캐스팅)
id
영화 id (FK)
배우 id (FK)
1
1
1
2
1
2
3
2
1
4
2
3
5
3
3
6
3
4
 
actors (배우)
id
이름
1
황정민
2
오달수
3
이정재
4
송강호
 
author
category
DB 설계
createdAt
Dec 6, 2025
series
비전공자도 이해할 수 있는 DB 설계 입문/실전
slug
type
series-footer
updatedAt
Dec 6, 2025 05:57 AM
📎
이 글은 비전공자도 이해할 수 있는 DB 설계 입문/실전 강의의 수업 자료 중 일부입니다.