jjinny_0609
냐냥
jjinny_0609
전체 방문자
오늘
어제
  • 분류 전체보기 (249)
    • IT (18)
      • Eclipse (1)
      • 라즈베리파이 (8)
      • 정보처리기사 (2)
      • 팀 프로젝트 (5)
      • 자료구조 (1)
      • CS 지식 (0)
    • 프로그래밍 언어 (75)
      • Java (33)
      • 파이썬 (4)
      • Node.js (38)
    • 프론트엔드(Frontend) (83)
      • HTML (7)
      • CSS (8)
      • JavaScript (10)
      • jQuery (2)
      • React (50)
      • Vue.js (6)
    • 백엔드(Backend) (62)
      • 네트워크 (1)
      • 데이터베이스 (49)
      • Spring (6)
      • JSP (6)
    • 협업 도구 (6)
      • Git & GitHub (6)
    • 리뷰 (1)
      • 향수 (1)
    • Game Engine (2)
      • 언리얼 엔진5 (1)
      • Unity (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 블로그관리 홈
  • 글쓰기
  • 글관리

공지사항

인기 글

hELLO · Designed By 정상우.
jjinny_0609

냐냥

데이터베이스 #5 데이터 모델링
백엔드(Backend)/데이터베이스

데이터베이스 #5 데이터 모델링

2023. 2. 26. 00:07
728x90

데이터 모델링의 개념

데이터 모델링은 데이터베이스 설계 과정에서 중요한 단계 중 하나로, 현실 세계에서 발생하는 데이터와 그들 간의 관계를 추상화하여 데이터베이스에 저장하기 위한 구조를 정의하는 과정입니다.

데이터 모델링은 크게 세 가지 유형으로 나눌 수 있습니다.

  • 개념적 데이터 모델링(Conceptual Data Modeling): 현실 세계에서 업무 프로세스가 어떻게 돌아가는지를 이해하고, 엔티티(Entity)와 엔티티 간의 관계를 파악하여 개념적 데이터 모델을 작성하는 과정입니다.
    /
    요구사항을 수집하고 분석한 결과를 토대로 업문의 핵심적인 개념을 구분하고 전체적인 뼈대를 만드는 과정
    개체(entitiy)를 추출하고 각 개체들 간의 관계를 정의하여 ER 다이어그램(ERD, Entity Relationship Diagram)을 만드는 과정까지를 말함.
  • 논리적 데이터 모델링(Logical Data Modeling): 개념적 데이터 모델링을 바탕으로 업무 프로세스와 데이터 요구사항을 분석하여 논리적 데이터 모델을 작성하는 과정입니다. 논리적 데이터 모델은 데이터베이스에 어떻게 저장될 것인지, 데이터베이스의 구조와 제약 조건 등을 정의합니다.
    /
    개념적 모델링에서 만든 ER 다이어그램을 사용하려는 DBMS에 맞게 사상(매핑 mapping)하여 실제 데이터베이스로 구현하기 위한 모델을 만드는 과정
  • 논리적 모델링 과정 1. 개념적 모델링에서 추출하지 않았던 상세 속성들을 모두 추출함. 2. 정규화 수행 3. 데이터 표준화 수행
  • 물리적 데이터 모델링(Physical Data Modeling): 논리적 데이터 모델을 바탕으로 데이터베이스의 실제 구현 방법을 설계하는 과정입니다. 이 과정에서는 데이터베이스의 성능, 보안 등 물리적인 측면을 고려하여 데이터베이스를 구현합니다.
	■ 물리적 모델링 시
	응답시간을 최호화해야 한다.
	얼마나 많은 트랜잭션을 동시에 발생시킬 수 있는지 검토해야 한다.
	데이터가 저장될 공간을 효율적으로 배치해야 한다.

  • 데이터 모델링의 개념 그림

데이터 모델링은 데이터베이스의 구조를 잘 설계함으로써 데이터베이스의 성능과 유지보수를 개선할 수 있습니다. 또한, 데이터 모델링은 업무 프로세스와 데이터 요구사항을 분석하고 이를 추상화하여 데이터베이스에 적합한 형태로 표현하므로, 데이터베이스와 업무 프로세스 간의 원활한 연동을 도모할 수 있습니다.

데이터 모델링 과정

데이터 베이스 생명주기(database life cycle)

  1. 요구사항 수집 및 분석(Requirements) : 사용자들의 요구사항을 듣고 분석하여 데이터베이스 구축의 범위를 정하는 단계
  2. 설계(design) : 분석된 요구사항을 기초로 주요 개념과 업무 프로세스 등을 식별하고(개념적 설계), 사용하는 DBMS의 종류에 맞게 변환(논리적 설계)한 후, 데이터베이스 스키마 도출(물리적 설계)함
  3. 구현(구축_DBMS) : 설계 단계에서 생성한 스키마를 실제 DBMS에 적용하여 테이블 및 관련 객체(뷰, 인덱스 등)를 만듦.
  4. 운영(Operation) : 구현된 데이터베이스를 기반으로 소프트웨어를 구축하여 서비스를 제공함.
  5. 감시 및 개선(모니터링) : 데이터베이스 운영에 따른 시스템의 문제를 관찰하고 데이터베이스 자체의 문제점을 파악하여 개선함.

요구사항 수집 및 분석(Requirements)

  1. 실제 문서를 수집하고 분석함.
  2. 담당자와의 (인터뷰나 설문조사를 통해 요구사항을 직접 수렴함.
  3. 비슷한 업무를 처리하는 기존의 데이터베이스를 분석함.
  4. 각 업무와 연관된 모든 부분을 살펴봄.

ER(Entity Relationship) 모델

  • 개체와 개체 타입
  • 속성
  • 관계와 관계 타입
  • 약한 개체 타입과 식별자
  • (IE) 표기법

◆ ER(Entity Relationship) 모델

  • 세상의 사물을 개체(entity)와 개체 간의 관계(relationship)로 표현함.

◆ 개체

  • 독립적인 의미를 지니고 있는 유무형의 사람 또는 사물
  • 개체의 특성을 나타내는 속성(attribute)에 의해 식별됨. 개체끼리 서로 관계를 가짐.

◆ER 다이어그램
ER 모델은 개체와 개체 간의 관계를 표준화된 그림으로 나타낸것.

개체와 개체 타입

◆ 개체(entitiy)란?

  • 사람, 사물, 장소, 개념, 사건과 같이 유무형의 정보를 가지고 있는 독립적인 실체
  • 데이터베이스에서 주로 다루는 개체는 낱개로 구성된 것.
    낱개가 각각 데이터 값을 가지는 것. 데이터 값이 변하는 것 등이 있음.
  • 비슷한 속성의 개체 타입(entity type)을 구성하며, 개체 집합(entitiy set)으로 묶임.

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

  • ER 다이어그램상 에서 개체 타입은 직사각형으로 나타냄.

◆ 개체 타입의 유형
- 강한 개체(strong entity) : 다른 개체의 도움 없이 독자적으로 존재 할 수 있는 개체
- 약한 개체(weak entity) : 독자적으로는 존재할 수 없고 반드시 상위 개체 타입을 가짐

속성(attribute)

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

속성의 유형(★★★★)

관계와 관계 타입

  • 관계(relationship) : 개체 사이의 연관성을 나타내는 개념.
  • 관계 타입(relationship type) : 개체 타입과 개체 타입 간의 연결 가능한 관계를 정의한 것이며, 관계 집합(relationship set)은 관계로 연결된 집합을 의미한다.

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

◆ 차수에 따른 관계 타입의 유형

  • 차수에 따른 유형 관계 집합에 참가하는 개체 타입의 수를 관계 타입의 차수(degree) 라고 함.

관계 타입의 유형

  • 1진 관계(recursive relation ship) : 한 개의 개체가 자기 자신과 관계를 맺는 경우
  • 2진 관계(binary relationship) : 두 개의 개체가 관계를 맺는 경우
  • 3진 관계(ternary relationship) : 세개의 개체가 관계를 맺는 경우

◆ 관계 대응수(cardinality) : 두 개체 타입의 관계에 실제로 참여하는 개별 개체 수

관계 대응수에 따른 관계 타입의 유형

① 일대일(1:1) 관계
좌측 개체 타입에 포함된 개체가 우측 개체 타입에 포함된 개체와 일대일로 대응하는 관계


② 일대다(1:N), 다대일(N:1) 관계
실제 일상생활에서 가장 많이 볼수 있는 관계로, 한쪽 개체 타입의 개체 하나가 다른 쪽 개체 타입의 여러 개체와 관계를 맺음


③ 다대다(N:M) 관계(N:M) 관계
각 개체 타입의 개체들이 서로 임의의 개수의 개체들과 서로 복합적인 관계를 맺고 있는 관계를 말함.

관계 대응수의 최솟값과 최댓값

  • 관계 대응수 1:1, 1:N, M:N에 1, N, M은 각 개체가 관계에 참여하는 최댓값을 의미함.
  • 관계에 참여하는 개체의 최솟값을 표시하지 않는다는 단점을 보완하기 위해 다이어그램에서는 대응수 외에 최솟값과 최댓값을 관계실선 위에 (최솟값, 최댓값)으로 표기함.

ISA 관계

  • 상위 개체 타입의 특성에 따라 하위 개체 타입이 결정되는 형태

참여 제약 조건

  • 개체 집합 내 모든 개체가 관계에 참여하는지 유무에 따라 전체 참여와 부분 참여로 구분 가능.
  • 전체 참여는 개체집합의 모든 개체가, 부분 참여는 일부만 참여함
  • 전체 참여를 (최솟값, 최댓값)으로 표현할 경우 최솟값이 1이상으로 모두 참여한다는 뜻이고, 부분 참여는 최솟값이 0 이상이다.

역할

  • 개체 타입 간의 관계를 표현할 때 각 개체들은 고유한 역할(role)을 담당함.

순환적 관계(recursive relationship)

  • 하나의 개체 타입이 동일한 개체 타입(자기 자신)과 순환적으로 관계를 가지는 형태

약한 개체 타입과 식별자

  • 약한 개체(weak entitiy) 타입 : 상위 개체 타입이 결정되지 않으면 개별 개체를 식별할 수 없는 종속적인 개체 타입.
  • 약한 개체 타입은 독립적인 키로는 존재할 수 없지만 상위 개체 타입의 키와 결합하여 약한 개체 타입의 개별 개체를 고유하게 식별하는 속성을 식별자(Discriminator)혹은 부분키(partial key)라고 함.

IE 표기법

◆ ER 다이어그램을 더 축약하여 쉽게 표현하던 Erwin) 등 소프트웨어에서 사용함
◆ IE 표기법에서 개체 타입과 속성은 직사각형으로 표현함

◆ IE 표기법에서 관계는 실선 혹은 점선으로 표기함

◆ IE 표기법에서 관계(강한관계, 비식별자 관계)는 점선으로 표기함

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

  • 개체 타입의 사상
  • 관계 타입의 사상
  • 다중 값 속성의 사상
    완성된 ER 모델은 실제 데이터베이스로 구축하기 위해 논리적 모델링 단계를 거치는데 이 단계에서 사상(mapping)이 이루어짐

개체 타입의 사상

◆ [1단계] 강한(정규) 개체 타입, 정규 개체 타입, E의 경우 대응하는 릴레이션 R을 생성함
◆ [2단계] 약한 개체 타입 역할 개체 타입에서 생성된 릴레이션은 자신의 키와 함께 강한 개체 타입의 키를 외래키로 사상하여 자신의 기본키를 구성함.

관계 타입의 사상

[방법1] 오른쪽 개체 타입 E2 를 기준으로 관계 R을 표현한다.
E1(KA1, A2)
E2(KA2, A4, KA1) KA1 : 외래키

[방법2] 왼쪽 개체 타입 E1을 기준으로 관계 R을 표현한다.
E1(KA1, A2, KA2)
E2(KA2, A4)

[방법3] 단일 릴레이션 ER로 모두 통합하여 관계 R을 표현한다.
R(KA1,KA2)

[방법4] 개체 타입 E1, E2와 관계 타입을 R을 모두 독립된 릴레이션으로 표현한다.
E1(KA1, A2)
R(KA1, KA2)
E2(KA2, A4)

[3단계] 이진 1:1 관계 타입
이진 1:1 관계 타입의 경우 [방법1]~[방법4]까지 모든 유형으로 사상 가능.
개체가 가진 정보 유형에 따라 판단.

[4단계] 이진 1:N 관계 타입
이진 1:N 관계 타입의 경우 N의 위치에 따라 [방법1] 또는 [방법2]의 유형으로 사상됨.

[5단계] 이진 M:N 관계 타입
이진 M:N 관계 타입은 [방법4]의 유형으로 사상됨.

[6단계] N진 관계 타입
ER 모델의 차수가 3이상인 다진 관계 타입의 경우 [방법4]의 유형으로 사상된다.

[7단계]
속성의 개수르 ㄹ알 수 없는 경우[방법1]을, 속성의 개수가 제한적으로 정해지는 경우 [방법2]를 사용함.

Modeling 연습문제

1 교수는 교수번호, 이름, 전공 학과를 가진다.
2 학생은 학번, 이름, 주소, 학년을 가지며, 과목은 과목번호, 과목이름, 학점을 가진다.
3 한 교수는 여러 명의 학생을 지도하며, 한 학생은 한 명의 교수로부터 지도를 받는다.
4 한 교수는 여러 개의 과목을 강의하며, 각 강의에 대해서는 시간과 장소를 가진다.
5 한 학생은 여러 개의 과목을 수강할 수 있으며, 한 과목에는 여러 명의 학생이 수강한다.
그리고 수강할 때에는 성적을 가진다.

◆ Erwin : 데이터 모델링을 하기 위한 프로그램. IE 표기법을 지원.

728x90

'백엔드(Backend) > 데이터베이스' 카테고리의 다른 글

데이터베이스 #7 트랜잭션, 동시성 제어, 회복  (0) 2023.02.26
데이터베이스 #6 정규화  (0) 2023.02.26
데이터베이스 #4 SQL고급  (0) 2023.02.26
데이터베이스 #3 SQL 기초  (0) 2023.02.25
데이터베이스 #2 관계 데이터 모델  (0) 2023.02.25
    jjinny_0609
    jjinny_0609
    뉴비 개발자의 학습 내용을 정리한 블로그입니다.

    티스토리툴바