목차
1. 논리적 데이터 모델링
2. 논리적 데이터 모델링 예시
데이터 모델링은 총 4가지 단계로 구성되어 있다.

개념적 데이터 모델링 단계를 거쳐 엔티티와 관계를 정의하여 ERD를 만들어냈으면,
이것을 바탕으로 상세하게 데이터 구조를 설계하는 논리적 데이터 모델링 단계를 진행하면 된다.
📌 데이터 모델링 이전 포스팅 📌
1. 논리적 데이터 모델링
논리적 데이터 모델링이란, 개념적 데이터 모델을 바탕으로 DBMS에서 사용하는 데이터 모델에 맞춰 데이터의 구조와 관계를 표현하는 단계이다.
작성된 ERD를 기반으로 논리적 모델을 만드는 과정이다.
[1] 논리적 데이터 모델링의 목적
- 데이터 구조 구체화 : 개념적 데이터 모델에서 정의된 엔티티와 관계를 구체적인 테이블 구조로 변환
- 데이터 무결성 보장 : 정규화 과정을 통해 데이터 중복을 최소화하고 데이터의 일관성 유지
- 비즈니스 요구사항 충족 : 데이터베이스 설계가 비즈니스 요구사항을 충족하도록 보장
- 독립성 확보 : 물리적 저장 매체와 독립적인 논리적 구조를 설계하여 데이터베이스 시스템의 유연성 높임
[2] 논리적 데이터 모델
개념적 데이터 모델링에서 나온 산출물인 ERD를 기반으로 만든 정규화된 테이블 구조이다.
아래와 같이 만들어지며, 각 테이블 내 컬럼 정보와 테이블 간의 관계를 형상화한 것이다.

[3] Mapping Rule
논리적 데이터 모델링에서 중요한 개념으로, ERD에서 표현한 내용을 관계형 데이터베이스에 맞는 형식으로 전환할 때 사용하는 방법론이다.
- □ Entity → Table
- ○ Attribute → Column
- ◇ Relation → PK, FK
ERD에서 엔티티, 속성, 관계가 각각 테이블, 컬럼, PK, FK가 된다. 이 점을 기억하고 논리적 데이터 모델링을 시작해보자.
[4] 논리적 데이터 모델 작성 방법
① 개념적 모델 검토 : 개념적 모델에서 엔티티, 속성, 관계를 확인
② 테이블 정의 : 개념적 모델의 각 엔티티를 테이블로 변환
③ PK, FK 정의 : 각 테이블의 기본 키 (Primary Key, PK), 외래 키 (Foreign Key, FK)를 정의하여 데이터의 고유성과 관계 파악
④ 정규화 : 데이터 중복을 최소화하고, 데이터 무결성을 유지하기 위한 테이블을 정규화
⑤ 관계 정의 : 테이블 간의 관계를 정의하고 논리적 구조 형성
⑥ 인덱스 정의 : 데이터 검색 속도를 향상시키기 위해 인덱스 정의
2. 논리적 데이터 모델링 예시
Mapping Rule을 기반으로 논리적 데이터 모델링을 해보았다.
우선 첫번째로 테이블과 컬럼을 생성하고, PK와 FK를 생성하여 논리적 ERD, 테이블 구조를 만들어볼 예정이다
논리적 데이터 모델링 시작 전 준비물은 개념적 ERD이다. 이것을 기반으로 차근히 논리적 모델을 만들어보자.
이전에 작성해둔 ERD이다.

✅ 참고로, 논리적 ERD는 아래의 프로그램을 사용했습니다!
https://dbdiagram.io/d/698062d7bd82f5fce252b36b
[1] 테이블과 컬럼 생성
개념적 데이터 모델링 과정에서 만든 ERD를 기반으로 테이블과 컬럼을 생성하면 된다.
Mapping Rule을 기반으로 우선 테이블과 컬럼만 생성해보자.
총 5개의 테이블이 만들어졌으며, 각 Entity에 있는 속성을 컬럼으로 작성하였다.

[2] PK, FK 생성
각 테이블 구조를 만들었다면, 테이블 간의 관계를 연결해보자.
테이블 간의 관계를 연결할 때, 서로의 관계를 파악하여 PK, FK를 생성해야 한다.
PK, FK 생성을 할 때 가장 중요한 점은 Cardinality를 고려해야 한다는 것이다. (관계 설정 시 중요함!)
각 테이블 별 어떤 관계인지 살펴보고, 경우에 따라 PK, FK를 생성해보자.
① 1:1 관계
order 테이블과 coupon 테이블은 1:1 관계이다.
또한 주문 시 쿠폰을 반드시 사용할 필요가 없기 때문에 선택이며, 쿠폰은 반드시 주문이 있어야 하는 상황이기 때문에 쿠폰은 주문에 의존하고 있다.
또한 주문에 어떤 쿠폰이 쓰였는지를 확인하는 경우가 많기 때문에 order 테이블에서 coupon을 참조하는 방식으로 테이블 구조를 잡았다.
order테이블에 coupon_id를 추가하여 FK로 설정하였다.


▶ order 테이블과 coupon 테이블은 order_id로 연결된다.
② 1:N 관계
- user TB - order/coupon TB
- seller TB - product TB
user 테이블과 order / coupon 테이블이 1:N 관계이다.
한 유저가 주문을 여러 개(0~N)를 가질 수 있으며, 쿠폰 또한 여러 개(0~N)를 가질 수 있다.
order, coupon 테이블에 user_id를 추가한 후, FK로 설정할 수 있다.


▶ user 테이블과 order, coupon 테이블이 user_id로 연결된다.
seller 테이블과 product 테이블이 1:N 관계이다.
판매자가 여러 개의 제품(1~N)을 보유하고 있을 수 있다.


▶ seller 테이블과 price 테이블이 seller_id로 연결되며, product 테이블은 seller 테이블에 의존한다.
③ N:M 관계
order 테이블과 product 테이블이 N:M 관계이다.
⭐N:M 관계는 위의 1:1, 1:N 관계와 같이 컬럼을 추가하고 FK로 설정하는 과정이 아닌 다른 방식으로 진행해야 한다.
그 이유는 관계형 데이터베이스는 N:M 관계를 직접적으로 저장할 수 없기 때문에, 이것을 해결하기 위해서는 두 테이블 사이에 교차 엔티티를 추가해주어야 한다.

두 테이블을 연결해주는 order_detail (주문 상세) 테이블을 추가 생성하였다.
기본적인 테이블의 PK인 id와 product, order 테이블을 이어주기 위한 order_id, product_id를 추가하고 FK로 설정해준다.
나머지 cnt (수량), price (가격)은 필요하다고 생각하여 추가한 컬럼이다.

▶ order_detail 테이블이 order 테이블과 product 테이블을 연결해주고 있다.
이렇게 완성된 논리적 ERD (논리적 모델)은 다음과 같다.
이 구조는 중복을 최소화하여 구조를 만들었다.

이렇게 테이블과 PK, FK를 정의하는 것으로 논리적 ERD를 만들어보았다.
사실 이 과정에서 제일 중요한 것은 정규화 부분인데, 정규화가 어렵기 때문에 따로 정리해보려고 한다.
다음 포스팅에서 정규화에 대해 공부해볼 예정이다!
참고 자료
관계형 데이터 모델링
www.youtube.com
3-1. 논리적 데이터 모델링의 목적
* 논리적 데이터 모델링의 주요 목적은 개념적 데이터 모델을 바탕으로 구체적이고 상세한 데이터 구조를 설계하는 것다. 이를 통해 데이터베이스가 실제로 어떻게 작동할지를 정의하고,…
wikidocs.net
개인적으로 공부하고 정리하기 위해 작성한 포스팅으로 잘못된 부분이 있으면 댓글 주시면 감사하겠습니다 :)!
'Data Analysis > 데이터 모델링' 카테고리의 다른 글
| [데이터 모델링] 2. 개념적 데이터 모델링 (1) | 2026.01.21 |
|---|---|
| [데이터 모델링] 1. 데이터 모델링이란? (1) | 2026.01.14 |