Post

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)중복 제거, 구조 안정화정규화된 구조
7ERD 작성위 정보들을 시각적으로 표현ER 다이어그램 완성

5. Note

  • 지금은 JPA를 위한 기본 이론 위주,
  • 학습 표기 방법의 정리는 추후에
This post is licensed under CC BY 4.0 by the author.