책/MySQL로 배우는 데이터베이스 개론과 실습

MySQL로 배우는 데이터베이스 개론과 실습 (3)

atmosg 2025. 1. 14. 21:31

22. 데이터 모델링

# 데이터 모델링이란

  • 소프트웨어 개발의 지반 설계와 같은 역할
  • 현실의 개념을 단순화, 추상화하여 데이터베이스화 하는 과정을 말함

 

 

# 데이터베이스 생명주기

  • 데이터베이스의 생성과 운영 전반에 대한 일련의 주기를 나타낸 것. 크게 5단계로 구분됨
  • 1단계. 요구사항 수집 및 분석
    • 유저의 요구사항을 토대로 DB의 구축 범위를 정하는 단계.
    • ex) 마당서점 : 고객, 운영자, 경영자 등의 유저 범위와 서비스 수준을 정하는 것
  • 2단계. 설계
    • 분석된 요구사항을 토대로 주요 개념과 업무 프로세스 등을 식별(개념적 설계)
    • 사용 DBMS 종류에 맞게 변환(논리적 설계)
    • DB 스키마를 도출(물리적 설계)하는 일련의 과정
  • 3단계. 구현
    • 설계 단계에서 생성한 스키마를 실제 DBMS에 적용
    • 테이블 및 관련 객체(뷰, 인덱스) 등을 생성함
    • 관련 소프트웨어에 설계한 DB를 적용해 프로그램을 완성
  • 4단계. 운영
  • 5단계. 감시 및 개선

 

 

 

23. 데이터 모델링 과정

# 데이터 모델링 과정

  • 통상 데이터베이스 교재에서 말하는 데이터 모델링 과정은 DB생명주기 내 ①요구사항 수짐 및 분석 ②설계를 메인으로 함

 

 

# 개념적 모델링 (conceptural modeling, ②설계)

  • 요구사항에서 핵심 개념을 추출해 전체적인 뼈대를 만드는 과정
  • 건축으로 비유하면 건물 기본 골조 생성 과정임
  • 개체entity 추출, 개체 간 관계 정의, ERD 작성 까지의 과정을 포함함

 

# 논리적 델링 (logical modeling, ②설계)

  • ERD의 개체 및 관계를 각 DBMS에 맞는 형태로(매핑이라고 함) 모델화 하는 것
  • 이후 사용할 DBMS는 논리적 모델링을 실제 DB로 구현해냄
  • 이때 모델의 형태는 관계 데이터 모델, 네트워크 데이터 모델, 계층 데이터 모델 등이 있음
  • 실제 DB로 구현될 대상이니 개념적 모델링보다 더 해야할 과정이 많음
    ① 더 상세하게 속성 추출
    ② 정규화 수행
    ③ 데이터 표준화 수행 : 데이터 용어 사전 & 도메인 정의 → 사용될 용어 정리, 데이터 형태 밑 크기 확정

논리적 모델링 예시

 

 

# 물리적 보델링 (physical modeling, ②설계)

  • 논리적 모델을 실제 DB에 저장하기 위해 물리적 구조의 정의 및 구현하는 과정
  • 흔히 보던 CREATE TABLE orders ( ... ) 하는 부분이 물리적 모델링에 해당함
  • 응답시간 최소화, 효율적 데이터 저장(저장방법, 인덱스 설계, ...), 트랜잭션 규모 등을 고려해야 함

물리적 모델링 예시

 

 

 

 

24. ER 모델

# ER 모델이란

  • 데이터베이스 디자인을 위해 이용되는 모델링 기법 중 하나
  • 사물을 (혹은 정보를) 개체, 속성, 관계로 기술하는 모델임
  • ER 모델에서 규명된 개체, 속성, 관계는 통상 ER 다이어그램으로 표현됨

 

 

# 용어 정리

  • ER 모델에서 꼭 등장하는 용어로 개체, 속성, 관계, 카디널리티가 있음
  • 그중 카디널리티는 릴레이션(테이블)에서도 쓰는 용어인데 ER모델에서 쓰는 의미랑 살짝 다름
    • 릴레이션 기준 : 튜플의 개수를 뜻함 (즉, 테이블 내 Row 새수)
    • ER모델 기준 : 두 개체 간 관계에서 참여하는 인스턴스의 수를 뜻함. 즉, (1,1) (0,n) (1,n) 처럼 최소/최대 참여를 나타냄




25. 개체

# 개체

  • 개체란 사람, 사물, 개념, 사건처럼 유/무형의 정보를 가지는 독립적 실체를 말함
  • 개체 타입(entity type) : 개체 집합의 동일한 특징 (프로그래밍 언어의 데이터 타입이랑 비슷한 느낌임)
  • 개체 집합(entity set) : 공통된 속성을 가진 개체들의 모임

 

 

# 개체 특징

  • 업무의 가장 핵심 요소이자 데이터베이스화 되어야할 필수 대상
  • 사실 개체 정의를 제대로 못하면 그냥 그 DB는 망한거임
  • 개체 특징은 다음과 같음
    • 유일한 식별자에 의해 식별가능
    • 두 개 이상 영속적으로 존재
    • 다른 개체와 최소 한 개 이상의 관계를 맺음
    • 자기 특징을 표현하는 속성이 무조건 포함됨
    • 업무에 이용되며 꾸준한 관리가 필요한 정보임

 

 

# 개체 타입표현 (ERD)

  • 개체 타입은 통상 강한 개체(strong entity)와 약한 개체(weak entity) 타입으로 구분됨
  • 강한 개체 : 다른 개체의 도움없이 독자 생존이 가능한 개체
  • 약한 개체 : 다른 개체(상위 개체) 타입을 가지는 의존적 개체
    ex) 회사DB에서 부양가족 개체는 직원이란 개체가 있어야 존재할 수 있음

개체 타입 ERD 표현

 

 



26. 속성

# 속성이란

  • 개체가 가진 성질을 말함
  • 개별 개체가 가진 속성을 기본으로 개체 타입의 속성 정의도 가능함
  • 도서 개체를 예시로 들면 '도서명', '출판사', '가격' 등이 도서 개체 타입의 속성이 될 수 있음

개별 개체에서 개체타입 속성 추출하기

 


# 속성표현 (ERD)

  • 속성은 값의 형태에 따라 여러 유형으로 구분됨
  • 그리고 각 유형에 따라 ERD에서 표현하는 방법이 조금씩 다름

 

 



# 속성유형

  • 단순/복합속성 (simple/composite attribute)
    • 더 작은 단위로 분해 가능한지로 구분됨
    • 분해 불가 : 단순, 분해 가능 : 복합 속성
    • ex) 학생 번호 = 단순 속성, 주소 = 시 · 동 단위로 분해가능하므로 복합 속성
  • 단일/다중값 속성(single/multi valued attribute)
    • 속성값의 개수에 따라 1개면 단일, 여러개면 다중값 속성으로 구분됨
    • ex) 학생 번호 = 단일 속성, 직무 = 시스템담당 겸 시설담당 겸 자산담당
  • 저장/유도 속성 (stored/derived attribute)
    • 속성값이 다른 속성에서 유도될 수 있는지에 따라 구분됨
    • 유도 불가 : 저장속성, 유도 가능 = 유도 속성
    • ex) 생년월일 : 고유값으로 저장 속성, 나이 : 생년월일에서 계산될 수 있으니 유도속성

 

 

 

 

27. 관계와 관계 타입

# 관계 관련 용어정리

  • 관계 : 개체 사이의 연관성을 나타내는 개념 (고객 - 도서는 '구입한다' 라는 연관성을 가짐)
  • 관계 타입 : 개체 타입 간의 연결 가능한 관계를 정의한 것
  • 관계 집합 : 관계로 연결된 집합

[그림6-16] 관계 타입은 속성을 가질 수 있음 (수강-수강학기)



# 관계 타입 유형

  • 각 개체 타입이 관계를 맺은 형태(차수, 관계 대응 수)에 따라 몇 가지 유형으로 구분됨
  • 차수에 따른 유형
    • 차수란 관계 집합에 참여하는 개체 타입의 수를 말함
    • 1진 관계(recursive relationship) :한 개체가 자기 자신과 관계를 맺는 경우. 학생 개체에서 학생들 사이의 멘토-멘티 관계를 맺는 경우가 이에 속함
    • 2진 관계(binary relationship) : 두 개체가 관계를 맺는 경우
    • 3진 관계(ternary relationship) : 세 개체가 관계를 맺는 경우. 생산직 직원이 부품을 조립해 제품을 '생산'하는 관계가 이에 속함
  • 관계 대응 수에 따른 유형
    • 관계 대응 수(cardinality)란 두 개체 타입의 관계에 실제로 참여하는 개별 개체 수를 말함
    • 일대일, 일대다, 다대일, 다대다 관계가 있음

(좌) 차수기준 / (우) 관계대응수 기준

 

 

# 관계 대응 수 최소/최대값

  • 관계 대응 수에서 1:1, 1:N, N:M은 각 개체가 관계에 참여하는 최대값을 의미함
  • 문제는 최소값이 없어서 정보가 불완전하단 점임
  • 이를 보완하기 위해 관계 실선 위에 (최소값, 최대값) 형식으로 표기함
  • 단, (최소값, 최대값) 표기 시 각 개체의 관점을 기준으로 표기함

N이 학생쪽에, (0,*)이 학과쪽에 있음

 

 

# ISA 관계

  • 상하 관계(즉, 계층구조 혹은 상속관계)를 나타내는 관계
  • 영문 "is a"를 그대로 차용한 것으로, A는 B다 라는 관계를 뜻함
  • 상위 개체 타입을 슈퍼클래스, 하위 개체 타입을 서브클래스라고 함
  • 역삼각형 표시에 슈퍼/서브클래스를 관계 실선으로 연결해 표현함

 


# 참여 제약조건

  • 개체 집합 내 얼마나 많은 개체가 관계에 참여하는지를 규정해놓은 제약
  • 전체 참여(두 줄 실선표기)와 부분 참여(단일 실선표기)로 구분됨
  • ex) 학생은 강좌를 수강 할수도, 안할수도 있지만 모든 강좌는 학생들에게 수강됨

물론 강좌는 폐강되는 일이 없다는 가정하에

 

 

 

28. 개체 타입과 식별자

# 강한/약한 개체타입

  • 강한/약한 개체타입이란 독립성과 식별 가능성을 기준으로 개체타입을 분류해놓은 것임 
  • 강한 개체타입 : 다른 개체 타입의 도움 없이 독립적으로 식별 가능한 개체타입
    • 단독 존재가 가능하므로 개체를 고유하게 식별하는 기본 키를 가짐
    • ex) '직원' 개체 타입은 강한 개체타입으로 '직원번호'란 기본키를 가짐
  • 약한 개체타입 : 상위 개체 타입에 의존하며, 자체적인 고유 식별자를 가지지 못하는 개체타입
    • 단독 식별이 불가능하므로 강한 개체타입의 기본키를 상속받아 사용함(외래키)

 

 

# 식별자 - 약한 개체타입

  • 부분키(partial key)라고도 함
  • 상위 개체 타입의 키와 결합해 약한 개체 타입의 개체를 식별하는 속성을 말함
  • 아래 예시에서 AccountNumber 속성이 식별자(혹은 부분키)가 됨
    Customer
    --------
    CustomerID (Primary Key)
    Name
    
    Account
    --------
    AccountNumber (Partial Key)
    CustomerID (Foreign Key)

 

 

 

29. IE 표기법

# IE 표기법(Information Engineering Notation)

  • 개체와 관계를 표현함에 있어 관계의 카디널리티와 참여제약조건 표현에 중점을 둔 표기방식
  • 관계 대응 수를 새 발 모양의 기호로 표현해서 새발 표기법(crow foot notation)이라고도 부름
  • 관계와 관계 대응 수 테이블
기호 의미
- 비식별자 관계 (강한 개체 타입)
- 부모 개체의 키가 일반 속성으로 포함되는 관계
- 식별자 관계 (약한 개체 타입)
- 부모 개체의 키가 주식별자로 포함되는 관계
일대다(1:N) 관계 ← N쪽에 새 발 표시
0 (참여 제약조건 - 선택 참여), min 참여가 0일 경우
1 (참여 제약조건 -  필수 참여), min 참여가 1일 경우

 

 

# ER vs IE 표기법

  • (비)식별자 관계를 포함해 어떻게 서로 표현하는지 비교해보자
  • 특히 비식별자 관계에서 서로 점선/실선 사용이 다른 점 주의필요

 

 



30. ER모델 → 관계 데이터 모델 매핑

# 왜 매핑이 필요한가

    • ER 모델은 DB 생명주기상 개념적 모델링 단계에서 사용하는 모델임
    • 실제  DB를 구축하려면 ERD의 개체 및 관계를 각 DBMS에 맞는 형태로 모델화 해줘야됨 (즉, 논리적 모델링)
    • 그리고 이 논리적 모델링 단계에서 ER 모델 → 관계 데이터 모델로 매핑하는 작업이 이루어짐
      논리적 모델링 예시

 

 

# 매핑 절차 (ER모델 → 관계 데이터 모델)

  • 매핑 절차는 크게 보면 3단계, 세분화하면 7단계로 나뉘어짐
  • STEP1 개체 타입 매핑
    • 1단계 : 강한 개체 타입 매핑하기
    • 2단계 : 약한 개체 타입 매핑하기
  • STEP2 관계 타입 매핑
    • 3단계 : 이진 1:1 관계 타입 매핑하기
    • 4단계 : 이진 1:N 관계 타입 매핑하기
    • 5단계 : 이진 N:M 관계 타입 매핑하기
    • 6단계 : N진 관계 타입 매핑하기
  • STEP3 속성 매핑
    • 7단계 : 다중값 속성 매핑하기

 

 

# STEP1 개체 타입 매핑

  • 강한(정규) 개체 타입
    • 개체 타입에 대응하는 릴레이션 생성
    • 각 속성들을 표기 후 기본키나 외래키에 PK, FK 표기
  • 약한 개체 타입
    • 개체 타입에 대응하는 릴레이션 생성
    • 상위 개체 타입의 키를 외래키로 포함시킨 후 FK 표기
    • 그 외 각 속성들을 표기

 

 

# STEP2 관계 타입 매핑

  • 관계 타입 매핑시 각 관계 타입이 맺고 있는 차수와 관계 대응 수에 따라 사상 방식이 구분됨
  • 가장 기본적이고 일반적인 관계 타입은 이진 관계 타입이긴 함
  • 그리고 이진 관계타입을 매핑하는 방법은 총 네 가지가 있음 (그림 참고해서 보셈)
    • E2 기준으로 관계 R 표현하기
    • E1 기준으로 관계 R 표현하기
    • 단일 릴레이션에 모두 통합해 관계 R 표현하기
    • E1, E2, 관계타입 R 모두 독립 릴레이션으로 표현하기

 

 

## 이진 1:1 관계 타입 매핑 (관계 타입 매핑)

  • 매핑 시 방법1~4 모두 적용 가능하긴 함
  • 다만 불필요한 개체나 NULL값 (특히 외래키에) 발생이 덜한 방법이 좋음

 

 

## 이진 1:N 관계 타입 매핑 (관계 타입 매핑)

  • 매핑 시 방법1~2 적용 가능

 

 

## 이진 N:M 관계 타입 매핑 (관계 타입 매핑)

  • 방법4 로 매핑하며, 양쪽 다 다수의 대응 수를 가지므로 새로운 릴레이션 생성이 필수임
  • 이처럼 N:M에서 만든 새로운 릴레이션을 교차 테이블이라고 함
  • 즉, 교차 테이블이란 다대다 관계르 효율적으로 표현하기 위해 사용되는 중간 연결 테이블을 뜻함

 

 

## N진 관계 타입 매핑 (관계 타입 매핑)

  • 방법4 로 매핑하며, 양쪽 다 다수의 대응 수를 가지므로 새로운 릴레이션 생성이 필수임
  • 이처럼 N:M에서 만든 새로운 릴레이션을 교차 테이블이라고 함

 

 

# STEP3 속성 매핑 (다중값 속성 매핑)

  • 단일 값의 속성은 매핑 시 딱히 문제될게 없음
  • 문제는 다중값 속성인데, 얘들을 직접 매핑할 방법이 없단 거임
  • 그래서 다중값 속성에 들어올 수 있는 값의 개수(즉, 도메인)에 맞춰 두 가지 방법을 사용함