← Week 10 목차 다음: Week 12 →

Week 11: 데이터베이스 설계 - 최신 트렌드 🚀


📌 학습 목표


🏗️ 정보공학 방법론 (Information Engineering)

정의 및 특징 📖

정보공학이란?

기업의 정보 요구사항을 체계적으로 분석하고, 통합된 정보 아키텍처를 구축하는 방법론

핵심 원칙 🎯

IE 방법론의 장점 ✨

IE 프로세스 단계 🔄

1단계: 정보전략계획 (ISP)

2단계: 업무영역분석 (BAA)

3단계: 업무시스템설계 (BSD)


📊 3단계 데이터 모델링

1단계: 개념적 데이터 모델링 (Conceptual) 🎨

목적 및 특징

산출물

개념적 ERD
├─ 핵심 엔티티 (고객, 상품, 주문)
├─ 주요 관계 (구매, 포함, 배송)
├─ 주요 속성 (고객명, 상품명, 주문일자)
└─ 비즈니스 규칙 (제약조건)

작성 예시

[고객] ──구매──> [주문] ──포함──> [주문상세] ──참조──> [상품]
   │                                                    │
   └──────────────────배송지───────────────────────────┘

2단계: 논리적 데이터 모델링 (Logical) 🔧

목적 및 특징

정규화 과정

1NF → 2NF → 3NF → BCNF
 │     │     │     │
 │     │     │     └─ 함수종속성 완전 제거
 │     │     └─ 이행적 함수종속 제거
 │     └─ 부분적 함수종속 제거
 └─ 반복 그룹 제거

논리적 ERD 예시

고객 (고객ID*, 고객명, 이메일, 연락처, 주소)
주문 (주문ID*, 고객ID, 주문일자, 배송주소, 총금액)
상품 (상품ID*, 상품명, 단가, 카테고리, 재고수량)
주문상세 (주문ID*, 상품ID*, 주문수량, 단가, 소계)

3단계: 물리적 데이터 모델링 (Physical) ⚡

목적 및 특징

성능 최적화 기법

성능 튜닝 요소
├─ 인덱스 설계 (B-Tree, Hash, Bitmap)
├─ 파티셔닝 (Range, Hash, List)
├─ 클러스터링 (데이터 물리적 배치)
├─ 비정규화 (성능을 위한 의도적 중복)
└─ 뷰 활용 (복잡 쿼리 단순화)

물리적 설계 예시

CREATE TABLE TB_CUSTOMER (
    CUST_ID     VARCHAR(10) PRIMARY KEY,
    CUST_NM     VARCHAR(50) NOT NULL,
    EMAIL       VARCHAR(100),
    PHONE       VARCHAR(15),
    ADDR        TEXT,
    REG_DTM     TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    
    INDEX IDX_CUST_EMAIL (EMAIL),
    INDEX IDX_CUST_PHONE (PHONE)
) PARTITION BY RANGE (YEAR(REG_DTM));

🎯 ERD 고급 작성 기법

1. Subtype / Supertype (상속 관계) 🏛️

개념

모델링 예시

[사람] (공통: 이름, 생년월일, 주소)
  ├─ [고객] (고유: 고객등급, 적립포인트)
  ├─ [직원] (고유: 사번, 부서, 급여)
  └─ [공급업체] (고유: 사업자번호, 계약기간)

구현 방법

-- Single Table 방식
CREATE TABLE 사람 (
    ID VARCHAR(10) PRIMARY KEY,
    이름 VARCHAR(50),
    생년월일 DATE,
    구분 VARCHAR(10), -- 'CUSTOMER', 'EMPLOYEE', 'SUPPLIER'
    고객등급 VARCHAR(10), -- 고객용
    사번 VARCHAR(10),     -- 직원용
    사업자번호 VARCHAR(15) -- 공급업체용
);

-- Joined Table 방식  
CREATE TABLE 사람 (ID, 이름, 생년월일);
CREATE TABLE 고객 (ID, 고객등급, FOREIGN KEY (ID) REFERENCES 사람(ID));
CREATE TABLE 직원 (ID, 사번, 부서, FOREIGN KEY (ID) REFERENCES 사람(ID));

2. Aggregation (집합 관계) 📦

개념

모델링 예시

[대학교] ◇────── [학과]
   │                │
   └─────────────── [교수]

3. Composition (구성 관계) 🔗

개념

모델링 예시

[주문] ♦────── [주문상세]
[건물] ♦────── [방]
[자동차] ♦──── [엔진]

구현 방법

CREATE TABLE 주문 (
    주문ID VARCHAR(10) PRIMARY KEY,
    고객ID VARCHAR(10),
    주문일자 DATE
);

CREATE TABLE 주문상세 (
    주문ID VARCHAR(10),
    순번 INT,
    상품ID VARCHAR(10),
    수량 INT,
    PRIMARY KEY (주문ID, 순번),
    FOREIGN KEY (주문ID) REFERENCES 주문(주문ID) ON DELETE CASCADE
);

☁️ 데이터베이스 최신 트렌드

1. Cloud Database 🌐

AWS RDS (Relational Database Service)

지원 엔진
├─ MySQL / MariaDB
├─ PostgreSQL  
├─ Oracle
├─ SQL Server
└─ Aurora (AWS 자체 엔진)

특징

Azure SQL Database

서비스 계층
├─ Basic: 개발/테스트용
├─ Standard: 일반 업무용
├─ Premium: 고성능 업무용
└─ Hyperscale: 대용량 데이터

Google Cloud SQL

2. Graph Database 🕸️

Neo4j

-- 노드 생성
CREATE (고객:Customer {name: '김철수', age: 35})
CREATE (상품:Product {name: '노트북', price: 1500000})

-- 관계 생성  
CREATE (고객)-[:PURCHASED {date: '2024-03-15', quantity: 1}]->(상품)

-- 그래프 조회
MATCH (c:Customer)-[r:PURCHASED]->(p:Product)
WHERE c.age > 30
RETURN c.name, p.name, r.date

Amazon Neptune

3. Time-series Database ⏱️

InfluxDB

-- 데이터 삽입
INSERT sensor_data,device=sensor01,location=server_room temperature=23.5,humidity=45.2

-- 시계열 쿼리
SELECT MEAN("temperature") 
FROM "sensor_data" 
WHERE time >= now() - 1h 
GROUP BY time(10m)

특징

TimescaleDB

4. Vector Database (AI용) 🤖

Pinecone

import pinecone

# 벡터 삽입
index.upsert(vectors=[
    ("doc1", [0.1, 0.2, 0.3, ...], {"text": "인공지능 기술"}),
    ("doc2", [0.4, 0.5, 0.6, ...], {"text": "머신러닝 알고리즘"})
])

# 유사도 검색
results = index.query(
    vector=[0.15, 0.25, 0.35, ...],
    top_k=10,
    include_metadata=True
)

Weaviate

{
  Get {
    Article(
      nearText: {
        concepts: ["인공지능", "딥러닝"]
      }
      limit: 5
    ) {
      title
      content
      _additional {
        distance
      }
    }
  }
}

사용 사례


🛠️ 실습 예제: 통합 데이터 모델링

전자상거래 플랫폼 설계

1. 개념적 모델

고객 ─구매→ 주문 ─포함→ 주문상세 ─참조→ 상품
 │              │                      │
 └─작성→ 리뷰 ──평가────────────────────┘
 
상품 ─속함→ 카테고리
상품 ─공급→ 판매자

2. 논리적 모델 (3NF 적용)

고객 (고객ID*, 고객명, 이메일, 연락처, 가입일)
주문 (주문ID*, 고객ID, 주문일자, 총액, 배송상태)
상품 (상품ID*, 상품명, 단가, 카테고리ID, 판매자ID)
주문상세 (주문ID*, 상품ID*, 수량, 단가)
리뷰 (리뷰ID*, 고객ID, 상품ID, 평점, 내용, 작성일)

3. 물리적 모델 (성능 최적화)

CREATE TABLE TB_ORDER (
    ORDER_ID VARCHAR(20) PRIMARY KEY,
    CUST_ID VARCHAR(10) NOT NULL,
    ORDER_DT DATE NOT NULL,
    TOTAL_AMT DECIMAL(12,2),
    STATUS VARCHAR(20),
    
    INDEX IDX_ORDER_CUST (CUST_ID),
    INDEX IDX_ORDER_DT (ORDER_DT)
) PARTITION BY RANGE (YEAR(ORDER_DT));

📚 참고 자료


**© 2024-2025 한국공학대학교 경영학부 All Rights Reserved**