Courses/데이터베이스

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

noweahct 2025. 1. 16. 11:44

Aug, 2023

01. 데이터베이스 모델링의 개념

1. 데이터베이스 생명주기

  • 데이터베이스 생명주기(database life cycle): 데이터베이스의 생성과 운영에 관련된 특징
    • 요구사항 수집 및 분석 → 설계 → 구현 → 운영 → 감시 및 개선 (→ 요구사항 수집 및 분석)
      1. 요구사항 수집 및 분석: 사용자들의 요구사항을 듣고 분석하여 데이터베이스 구축의 범위를 정하는 단계
      2. 설계: 분석된 요구사항을 기초로 주요 개념과 업무 프로세스 등을 식별하고(개념적 설계), 사용하는 DBMS의 종류에 맞게 변환(논리적 설계)한 후, 데이터베이스 스키마를 도출(물리적 설계)하는 단계
      3. 구현: 설계 단계에서 생성한 스키마를 실제 DBMS에 적용하여 테이블 및 관련 객체(뷰, 인덱스 등)을 만들고, 관련 소프트웨어에 설계한 데이터베이스를 적용하여 서비스를 제공할 수 있도록 프로그램을 완성하는 단계
      4. 운영: 구현된 데이터베이스를 기반으로 소프트웨어를 구축하여 서비스를 제공하는 단계
      5. 감시 및 개선: 데이터베이스 운영에 따른 시스템의 문제를 관찰하고 데이터베이스 자체의 문제점을 파악하여 개선하는 단계로, 이 단계에서는 데이터베이스가 지속적으로 운영될 수 있도록 변경 및 유지 보수를 한다

2. 데이터 모델링 과정

  • 데이터 모델링은 데이터베이스 생명주기 중 요구사항 수집 및 분석부터 설계까지의 과정을 말한다
    • 요구사항 수집 및 분석: 현실 세계의 대상 및 사용자의 요구사항을 정리하고 분석
    • 설계: 중요 개념을 구분(개념적 모델링) → 각 개념을 구체화함(논리적 모델링) → 데이터베이스 생성 계획에 따라 개체, 인덱스 등을 생성(물리적 모델링)
  • 요구사항 수집 및 분석
    • 실제 문서를 수집하고 분석한다
    • 담장자와의 인터뷰나 설문조사를 통해 요구사항을 직접 수렴한다
    • 비슷한 업무를 처리하는 기존의 데이터베이스를 분석한다
    • 각 업무와 연관된 모든 부문을 살펴본다
  • 개념적 모델링(concentual modeling): 요구사항을 수집하고 분석한 결과를 토대로 업무의 핵심적인 개념을 구분(⇒ 개체를 추출하고 각 개체들 간의 관계를 정리하여 ER 다이어그램을 만드는 과정)하고 전체적인 뼈대를 만드는 과정
    • 개체: 구체적으로 표현할 수 있는 실체
    • ER 다이어그램: 실체들의 관계를 표현한 것
    • 설계자는 사용자의 요구사항을 분석하여 가장 핵심적인 개체와 개별 개체를 식별할 수 있는 핵심 속성(PK), 각 개체 간의 관계를 정의하여 데이터베이스화 할 수 있는 일반적인 개념으로 표현한다
  • 논리적 모델링(logical modeling): 개념적 모델링에서 만든 ER 다이어그램을 사용하고자 하는 DBMS에 맞게 사상(매핑)하여 실제 데이터베이스로 구현하기 위한 모델을 만드는 과정
    • ER 다이어그램은 DBMS의 특성에 따라 관계 데이터 모델, 네트워크 데이터 모델, 계층 데이터 모델 등으로 사상이 이루어진다
    • 논리적 모델링의 과정
      1. 개념적 모델링에서 추출하지 않았던 상세 속성들을 모두 추출한다
      2. 정규화를 수행한다
      3. 데이터의 표준화를 수행한다
  • 물리적 모델링(physical modeling): 작성된 논리적 모델을 실제 컴퓨터의 저장 장치에 저장하기 위한 물리적 구조를 정의하고 구현하는 과정
    • 물리적 모델링을 할 때는 DBMS의 특성에 맞게 저장 구조를 정의하여야 데이터베이스가 최적의 성능을 낼 수 있다
    • 물리적 모델링을 할 때 트랜잭션, 저장 공간 설계 측면에서 고려해야 하는 사항
      1. 응답시간을 최소화해야 한다
      2. 얼마나 많은 트랜잭션을 동시에 발생시킬 수 있는지 검토해야 한다
      3. 데이터가 저장될 공간을 효율적으로 배치해야 한다

02. ER 모델

  • 개념적 모델링에 사용하는 모델로, 세상의 사물을 개체와 개체 관의 관계로 표현한다
  • 개체는 독립적인 의미를 지니고 있는 유무형의 사람 또는 사물을 말하고, 개체의 특성을 나타내는 속성으로 식별한다
  • 개체끼리는 서로 관계를 가진다
  • ER 모델은 개체와 개체 간의 관계를 ER 다이어그램이라는 표준화된 그림으로 표현한다
  • ER 모델은 개념적 모델링 단계에서 사용하므로, 특정 데이터 모델이나 DBMS와 무관하게 설계할 수 있다

1. 개체와 개체 타입

  • 개체(entity): 사람, 사물, 장소, 개념, 사건과 같이 유무형의 정보를 가지고 있는 독립적인 실체
    • 개체는 비슷한 속성을 가진 개체 타입(entity type)을 구성하며, 개체 집합(entity set)으로 묶인다
    • 개체 집합: 공통된 속성을 가진 개체들의 모임
  • 개체의 특징
    • 유일한 식별자에 의해 식별 가능
    • 꾸준한 관리를 필요로 하는 정보
    • 두 개 이상 영속적으로 존재함
    • 업무 프로세스에 이용됨
    • 반드시 자신의 특징을 나타내는 속성을 포함
    • 다른 개체와 최소 한 개 이상의 관계를 맺고 있음

개체 타입의 ER 다이어그램 표현

  • ER 다이어그램 상에서 객체 타입은 직사각형으로 나타낸다
  • 객체 타입은 보통 ‘개체’라고 부르는 강한 개체 타입과, 약한 개체 타입으로 구분할 수 있다
    • 강한 개체 타입: 직사각형
    • 약한 개체 타입: 이중 직사각형
    • 개체 타입의 이름은 기호 중앙에 표시하고, 일반적으로 단수형 명사를 사용한다

개체 타입의 유형

  • 강한 개체 타입: 다른 개체의 도움 없이 독자적으로 존재할 수 있다
  • 약한 개체 타입: 독자적으로는 존재할 수 없고 반드시 상위 개체 타입을 가진다

2. 속성

  • 속성(attribute): 개체가 가진 성질

속성의 ER 다이어그램 표현

  • 속성은 기본적으로 타원으로 표현하며 개체 타입을 나타내는 직사각형과 실선으로 연결된다
  • 속성의 이름은 타원 중앙에 표기한다
  • 속성이 개체를 유일하게 식별할 수 있는 키일 경우, 속성 이름에 밑줄을 긋는다
    • 키 속성: 개체 타입에서 각각의 개체를 식별할 수 있는 유일한 값을 가진다

속성의 유형

  • 속성은 값의 형태에 따라 여러 유형으로 구분할 수 있다
    1. 단순 속성과 복합 속성: 더 작은 단위로 분해할 수 있는지에 따라 구분
    • 단순 속성(simple attribute): 더 이상 분해가 불가능한 속성
    • 복합 속성(composite attribute): 독립적인 의미를 가진 속성으로 분해할 수 있는 속성
    1. 단일값 속성과 다중값 속성: 속성값의 개수에 따라 구분
    • 단일값 속성(single-valued attribute): 하나의 값만 가지는 속성
    • 다중값 속성(multi-valued attribute): 여러 개의 값을 가지는 속성
    1. 저장 속성과 유도 속성: 속성 값이 다른 속성으로부터 유도될 수 있는지에 따라 구분
    • 저장 속성(stored attribute): 다른 속성의 영향 없이 단독으로 저장되는 속성
    • 유도 속성(derived attribute) 다른 저장 속성으로부터 유도된(계산되어진) 속성

3. 관계와 관계 타입

  • 관계: 개체 사이의 연관성을 나타내는 개념
  • 관계 타입: 개체 타입과 개체 타입 간의 연결 가능한 관계를 정의한 것
  • 관계 집합: 관계로 연결된 집합

관계 타입의 ER 다이어그램 표현

  • 관계 타입은 마름모로 표현하며 관계 타입의 이름은 기호의 중앙에 표기한다

관계 타입의 유형

  • 각 개체 타입이 관계를 맺은 형태, 즉 차수와 관계 대응수에 따라 몇 가지 유형으로 구분할 수 있다
  • 차수(degree: 관계 집합에 참가하는 개체 타입의 수)에 따른 유형
    • 1진 관계(recursive relationship): 한 개의 개체가 자기 자신과 관계를 맺는 경우
    • 2진 관계(binary relationship): 두 개의 개체가 관계를 맺는 경우
    • 3진 관계(ternary relationship): 세 개의 개체가 관계를 맺는 경우
  • 관계 대응 수(cardinality: 두 개체 타입의 관계에 실제로 참여하는 개별 개체 수)에 따른 유형
    • 일대일(1:1) 관계: 하나의 개체가 하나의 개체에 대응
    • 일대다(1:N) 관계: 하나의 개체가 여러 개체에 대응
    • 다대일(N:1) 관계: 여러 개체가 하나의 개체에 대응
    • 다대다(M:N) 관계: 여러 개체가 여러 개체에 대응→ 관계 대응 수 1:1, 1:N, N:1, M:N에서 1, M, N은 각 개체가 관계에 참여하는 최댓값을 의미한다. 따라서 이 표기법의 문제는 관계에 참여하는 개체의 최솟값을 표시하지 않는다는 것인데, 이를 보완하기 위해 관계실선 위에 ‘(최솟값, 최댓값)’ 형식으로 표기한다
    • → 일대다, 다대일이 일상에서 실제로 많이 볼 수 있는 관계이다

ISA 관계

  • ISA(is-a) 관계: 일부 개체 집합들이 맺고 있는 관계 중에는 상하 관계를 보이는 관계가 있는데, 이때 상위 개체 타입의 특성에 따라 하위 개체 타입이 결정되는 형태를 말한다.
    • 상위 개체 타입을 슈퍼클래스, 하위 개체 타입을 서브클래스라고 한다
    • ISA 관계는 역삼각형으로 표현하며, 역삼각형 위에는 슈퍼클래스, 아래에는 각각의 서브클래스를 관계 실선으로 연결한다

참여 제약 조건

  • 개체 집합 내 모든 개체가 관계에 참여하는지 유무에 따라 전체 참여와 부분 참여로 구분한다
  • 전체 참여: 개체 집합의 모든 개체가 관계에 참여한다
    • 개체 타입과 관계를 두 줄 실선으로 표현한다
  • 부분 참여: 개체 집합의 일부만 관계에 참여한다
    • 일반적인 관계 표현과 동일하게 단일 실선으로 표현한다
  • 전체 참여를 (최솟값, 최댓값)으로 표현하면 최솟값이 1 이상으로 모두 참여한다는 뜻이고, 부분 참여는 최솟값이 0 이상이다

역할

  • 개체 타입 간의 관계를 표현할 때 각 개체들은 고유한 역할(role)을 담당한다
  • 일반적으로 역할은 관계만으로 알 수 있으면 생략하지만, 관계에서 역할이 명확하지 않으면 표기해야 한다

순환적 관계

  • 순환적 관계(recursive relationship): 하나의 개체 타입이 동일한 개체 타입(자기 자신)과 순환적으로 관계를 가지는 형태
  • 순환적 관계는 개체 타입과 관계 타입 양쪽에 관계선을 두 개를 그린다

4. 약한 개체 타입과 식별자

  • 약한 개체 타입은 자신의 기본키만으로 식별이 어려우므로, 상위의 강한 개체 타입의 기본키를 상속받아 사용한다
  • 독립적인 키로는 존재할 수 없지만 상위 개체 타입의 키와 결합하여 약한 개체 타입의 개별 개체를 고유하게 식별하는 속성을 식별자 혹은 부분키라고 한다

5. IE 표기법

  • ER 모델 외에도 여러 표기법이 존재하는데, 그 중 대표적인 것으로 IE 표기법과 바커 표기법이 있다
  • IE 표기법은 관계 대응 수를 새발 모양의 기호로 표현하여 새발 표기법이라고도 부른다

03. ER 모델을 관계 데이터 모델로 사상

  • 완성된 ER 모델은 실제 데이터베이스로 구축하기 위해 논리적 모델링 단계를 거치는데, 이 단계에서 사상이 이루어진다
  • 관계 데이터 모델은 릴레이션 하나로 데이터베이스의 논리적 구조를 표현하지만, ER 모델은 개체 타입, 관계 타입, 속성으로 표현한다 → 사상은 각각 개체 타입의 유형과 관계 타입의 유형에 따라 다른 방법으로 진행된다

ER 모델을 관계 데이터 모델로 사상하는 방법

단계 사상할 대상 구분
1단계 개체 타입 강한 개체 타입
2단계 개체 타입 약한 개체 타입
3단계 관계 타입 이진 1:1 관계 타입
4단계 관계 타입 이진 1:N 관계 타입
5단계 관계 타입 이진 M:N 관계 타입
6단계 관계 타입 N진 관계 타입
7단계 속성 다중값 속성

개체 타입의 사상

  1. 강한(정규) 개체 타입
  • 정규 개체 타입 E의 경우 대응하는 릴레이션 R을 생성한다
  • 각 개체 타입의 일반 속성은 각각 새로 생성하는 릴레이션의 속성으로 표시하고, 기본키와 외래키는 PK나 FK 등으로 표시한다
  1. 약한 개체 타입
  • 약한 개체 타입에서 생성된 릴레이션은 자신의 키와 함께 강한 개체 타입의 키를 외래키로 사상하여 자신의 기본키를 구성한다
  • 이때 유도된 속성이나 복합 속성 등은 속성의 성격에 맞게 판단하여 사상한다

관계 타입의 사상

  • 책의 관계 타입 예시 참고하기!방법 2) 왼쪽 개체 타입 E1을 기준으로 관계 R을 표현한다방법 4) 개체 타입 E1, E2와 관계 타입 R을 모두 독립된 릴레이션으로 표현한다
  • 방법 3) 단일 릴레이션 ER로 모두 통합하여 관계 R을 표현한다
  • 방법 1) 오른쪽 개체 타입 E2를 기준으로 관계 R을 표현한다
  1. 이진 1:1 관계 타입
  • 방법 1 ~ 방법 4의 모든 유형으로 사상할 수 있다
  • 개체가 가지고 있는 정보의 유형에 따라 판단하면 된다
  1. 이진 1:N 관계 타입
  • 방법 1 또는 방법 2의 유형으로 사상된다
  1. 이진 M:N 관계 타입
  • 방법 4의 유형으로 사상된다
  • 양쪽 모두 다수의 대응 수를 가지므로 새로운 릴레이션(=교차 테이블)을 반드시 생성해야 한다
  1. N진 관계 타입
  • ER 모델의 차수가 3 이상인 다진 관계 타입의 경우 방법 4의 유형으로 사상된다
  • 생성되는 릴레이션 R의 키는 각 개체 타입의 기본키를 모은 복합키를 사용한다

다중값 속성의 사상

  1. 다중값 속성
  • 다중값 속성은 하나의 속성에 여러 값을 가질 수 있는 속성을 말한다
  • 다중값 속성의 경우 직접 사상할 수 없다
  • 두 가지 방법으로 다중값 속성을 가진 ER 모델을 관계 데이터 모델로 사상할 수 있다
    • 새로운 릴레이션을 생성한다
    • 개체 타입은 다중값 속성을 제외하고 모두 R로 사상하고, 다중값 속성은 개체 타입의 키와 함께 새로운 릴레이션 RC를 생성한다(책 예제 참고)
    • RC는 기존의 키와 함께 자신의 값이 모두 키로 지정되어야 한다
    방법 2) 다중값 속성의 개수가 적고 제한 가능한 경우
    • 속성을 릴레이션에 같이 포함한다
  • 방법 1) 다중값 속성의 개수를 알 수 없는 경우
  • 각 방법의 장단점
    • 방법 1: 새로 생성된 릴레이션 RC에 값이 계속 저장될 수 있어 효울적이지만, 새로운 릴레이션이 생겨서 모델이 복잡해질 수 있다
    • 방법 2: 고려해야 할 속성 값이 많아지면 불필요한 속성이 생겨 비효율적이고, 이후에 처음보다 많은 속성 값을 저장해야 하는 등의 문제가 생길 수 있다

04. ERwin 실습

  • 데이터 모델링을 하기 위한 프로그램으로 ERwin과 ER STUDIO, DA# 등이 있는데, ERwin을 가장 많이 사용한다
  • ERwin: 미국 CA 테크놀로지사엥서 개발했고, IE 표기법을 지원한다

ERwin 실습

  1. 기본 화면 및 툴 둘러보기
  2. 기본 환경 설정하기
    • 모델 타입: Logical/Physical
    • DBMS: MySQL 5.x
    • 표기법: IE 표기법
  3. 마당서점 실습하기(ER 다이어그램 작성하기)
    1. 개체 만들기
    2. 관계 표현하기
    3. M:N 식별 관계 표현
    4. M:N 관계 해소하기
    5. → 또 다른 개체를 생성하거나 논리적 모델을 물리적 모델로 변경해 교차 테이블이 생성되도록 한다
    6. 식별 관계 및 관계 대응 수 변경하기
  4. 도메인 정의하기
    • 도메인: 속성이 가질 수 있는 값
  5. 물리적 모델링: 물리적 모델을 작성한 후 실제 테이블로 만든다
    1. ER 다이어그램 불러오기
    2. Physical 타입으로 변경하기
    3. 물리적 모델링
      • 논리적 모델에서는 개체를 Entity라고 부르지만 물리적 모델에서는 테이블이라고 부른다
      • 논리적 모델에서는 개체 이름에 공백을 넣을 수 있지만, 물리적 모델에서는 불가능하다
      • 기존 논리적 모델에서 생성한 개체의 이름과 속성의 이름을 실제 사용할 테이블 이름, 컬럼 이름으로 변경해야 한다
    4. 컬럼의 속성 확인하기
  6. DBMS에 접속하여 테이블 생성하기

05. 모델링 연습

p.370~375 참고하기