05 데이터모델링
05 데이터모델링
1. 데이터 모델링
1. 데이터 모델링(Data Modeling)
- 현실 세계의 데이터를 데이터베이스로 옮기기 위해 구조화하는 과정
- 현실(사람, 주문, 상품, 결제 등)을 데이터베이스가 이해할 수 있는 형태(테이블, 컬럼, 관계)로 표현하는 작업
2. 데이터 모델링을 하는 이유
이유 | 설명 |
---|---|
현실을 구조화 | 복잡한 업무나 데이터를 논리적으로 표현할 수 있게 함 |
데이터 중복 방지 | 같은 데이터가 여러 테이블에 흩어지는 걸 막음 |
유지보수 용이 | 구조가 명확하니까 시스템 수정이 쉬워짐 |
데이터 품질 향상 | 일관성 있고 신뢰할 수 있는 데이터 관리 가능 |
3. 모델링의 구조
단계 | 설명 | 주요 산출물 |
---|---|---|
개념적 모델링 (Conceptual) | 현실 세계를 개념적으로 표현. 어떤 데이터가 존재하는지 정의 | ERD(Entity-Relationship Diagram) |
논리적 모델링 (Logical) | DBMS에 종속되지 않고, 속성과 관계를 세부적으로 설계 DBMS맞게 사상(Mapping)하여 실제 구현을 위한 데이터베이스 모델 | 엔터티, 속성, 관계, 키 정의 |
물리적 모델링 (Physical) | 실제 DBMS(MySQL, Oracle 등)에 맞춰 테이블·컬럼·타입 설계 | CREATE TABLE 스크립트 |
1. 개념적 모델링
- 엔터티: 고객(Customer), 주문(Order), 상품(Product)
- 관계: 고객 — 주문 (1:N), 주문 — 상품 (N:M)
2. 논리적 모델링
- 고객(Customer): 고객ID, 이름, 연락처
- 주문(Order): 주문ID, 주문일자, 고객ID(FK)
- 상품(Product): 상품ID, 상품명, 가격
- 주문상품(OrderItem): 주문ID(FK), 상품ID(FK), 수량
3. 물리적 모델링
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
CREATE TABLE customers (
customer_id BIGINT PRIMARY KEY,
name VARCHAR(100),
phone VARCHAR(20)
);
CREATE TABLE orders (
order_id BIGINT PRIMARY KEY,
order_date DATE,
customer_id BIGINT,
FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);
CREATE TABLE products (
product_id BIGINT PRIMARY KEY,
name VARCHAR(100),
price DECIMAL(10,2)
);
CREATE TABLE order_items (
order_id BIGINT,
product_id BIGINT,
quantity INT,
PRIMARY KEY (order_id, product_id),
FOREIGN KEY (order_id) REFERENCES orders(order_id),
FOREIGN KEY (product_id) REFERENCES products(product_id)
);
4. Note
1. 데이터베이스 설계의 큰 축
축 | 의미 |
---|---|
DB 구조의 관점 | 외부 / 개념 / 내부 스키마 (3단계 구조) |
설계의 과정 | 개념 / 논리 / 물리 모델링 (설계 단계) |
2. 관계
구분 | DB 관점 | 설계 과정(모델링) | 주요 산출물 |
---|---|---|---|
외부 스키마 | 사용자 관점의 데이터 구조 | (별도 모델링 없음, 뷰 설계 단계) | View 정의 |
개념 스키마 | 전체 조직의 데이터 구조 | 개념적 모델링 / 논리적 모델링 | ERD, 엔터티·속성·관계 |
내부 스키마 | 물리적 저장 구조 | 물리적 모델링 | CREATE TABLE, 인덱스, 파티션 |
2. ER모델링
1. ER 모델(Entity-Relationship Model)
- 현실 세계의 데이터를 “엔터티(Entity)”와 “관계(Relationship)”로 표현하는 데이터 모델
- 그림으로 표현한 게 바로 ER 다이어그램(ERD, Entity-Relationship Diagram)
2. 구성요소
구성요소 | 설명 |
---|---|
엔터티(Entity) | 데이터를 저장할 대상 (ex. 회원, 주문, 상품) |
속성(Attribute) | 엔터티의 구체적 정보 (ex. 회원이름, 주문일자) |
관계(Relationship) | 엔터티 간의 연결 (ex. 회원은 주문을 한다) |
식별자(Identifier) | 데이터를 구분하는 유일키 (ex. id, code) |
3. 목적
목적 | 설명 |
---|---|
업무를 데이터 구조로 표현 | 현실의 개념을 시각적으로 정리 |
팀 간 의사소통 도구 | 개발자, 기획자, DBA가 같은 구조를 이해 |
DB 설계 기반 제공 | ERD를 바탕으로 실제 테이블 생성(SQL) |
4. 작업순서
순서 | 단계 | 주요 작업 | 결과물 |
---|---|---|---|
1 | 엔터티 도출 | 어떤 개체(대상)를 데이터로 관리할지 정의 | 엔터티 목록 |
2 | 속성 정의 | 각 엔터티가 가진 구체적인 정보(속성) 정의 | 속성 목록 |
3 | 식별자(PK) 설정 | 각 엔터티의 고유키(Primary Key) 결정 | 키 정의 |
4 | 관계(Relationship) 도출 | 엔터티 간의 연결 관계 정의 (1:1, 1:N, N:M) | 관계선 설정 |
5 | 관계 속성 정의 | 관계 자체가 가지는 속성이 있으면 정의 (예: 수량, 등록일) | 관계 속성 |
6 | 정규화(Normalization) | 중복 제거, 구조 안정화 | 정규화된 구조 |
7 | ERD 작성 | 위 정보들을 시각적으로 표현 | ER 다이어그램 완성 |
5. Note
- 지금은 JPA를 위한 기본 이론 위주,
- 학습 표기 방법의 정리는 추후에
This post is licensed under CC BY 4.0 by the author.