[데이터베이스 개론 4장] 데이터 모델링

Mh_Go·2020년 12월 30일
1

데이터 모델링과 데이터 모델의 개념

데이터베이스

현실 세계에 존재하는 수많은 데이터 중에서 조직을 운영하는 데 꼭 필요한 데이터만 선별하여 저장한 것

데이터 모델링(data modeling)

현실 세계의 데이터를 컴퓨터 세계의 데이터베이스로 옮기는 변환 과정
데이터베이스 설계의 핵심 과정
필요한 데이터만 선별하기 위해선 많은 고민과 결정이 필요하기에 어려운 작업

  • 추상화(abstraction) - 데이터베이스에 저장하여 관리할 만한 가치가 있는 중요 데이터를 추출하는 것

  • 개념적 모델링(conceptual modeling) - 현실 세계에서 중요 데이터를 추출하여 개념 세계로 옮기는 작업

  • 논리적 모델링(logical modeling) - 개념 세계의 데이터를 데이터베이스에 저장할 구조를 결정하고 이 구조로 표현하는 작업

데이터 모델

데이터 모델링의 결과물을 표현하는 도구
데이터 구조(data structure), 연산(operation), 제약조건(constraint)로 구성

  • 데이터 구조 - 자주 변하지 않고 정적이라는 특징 존재
  • 연산 - 데이터 구조에 따라 개념 세계나 컴퓨터 세계에서 실제로 표현된 값들을 처리하는 작업, 동적이라는 특징 존재
  • 제약조건 - 구조적 측면, 의미적 측면의 제약 사항이 존재

    개념적 데이터 모델에서 데이터 구조 - 현실 세계를 개념 세계로 추상화했을 때 어떤 요소로 이루어져 있는지를 표현하는 개념적 구조
    논리적 데이터 모델에서 데이터 구조 - 데이터를 어떤 모습으로 저장할 것인지를 표현하는 논리적 구조

데이터베이스 설계 = 개념적 데이터 모델링 + 논리적 데이터 모델링
사용하는 데이터 모델에 따라 현실 세계를 표현하는 개념적 구조나 논리적 구조의 모습이 달라짐

대표적으로 많이 사용되는 모델
개체-관계 모델(E-R Model)
관계 데이터 모델(relational data model) 자세한 내용은 5장에서

개체-관계 모델

개체와 개체 간의 관계를 이용해 현실 세계를 개념적 구조로 표현하는 방법
머릿속에 그릴 수 있는 개념적인 구조로 모델링하는 것이기에 어떤 DBMS로 데이터베이스를 구축하는지 상관 없음

개체-관계 모델을 그림으로 표현한 것이 개체-관계 다이어그램(E-R Diagram)

개체(entity)

현실 세계에서 저장할 만한 가치가 있는 중요 데이터를 지닌 사람이나 사물 등을 의미
개념적 모델링을 하는 데 가장 중요한 요소
개념이나 사건처럼 물리적으로 존재하지 않는 것도 개체가 될 수 있음 ex) 대학교의 학과
개체는 다른 개체와 구별되는 이름을 가지고 있고, 각 개체만의 고유한 특성이나 상태, 즉 속성을 하나 이상 지님

  • 개체 타입 - 개체를 고유의 이름과 속성들로 정의한 것
  • 개체 인스턴스 - 개체를 구성하고 있는 속성이 실제 값을 가짐으로써 실체화된 개체
  • 개체 집합 - 개체 인스턴스들의 집합
    개체-관계 모델에서 개체와 속성은 파일 구조에서의 레코드와 필드에 대응됨

속성(attribute)

개체가 가지고 있는 고유의 특성
속성은 그 자체만으로는 의미가 없지만 관련 있는 속성들을 모아 개체를 구성하면 하나의 중요한 의미를 표현할 수 있음
속성은 일반적으로 의미 있는 데이터의 가장 작은 논리적 단위로 인식됨

속성 분류 기준
속성 값의 개수, 의미의 분해 가능성, 기존 속성 값에서 유도

  • 속성 값의 개수
    단일 값 속성- 특정 개체를 구성하는 속성의 값이 하나 ex)고객의 이름
    다중 값 속성 - 특정 개체를 구성하는 속성이 값을 여러 개를 가짐 ex)고객의 연락처(집 전화번호, 휴대폰 번호)

  • 의미의 분해 가능성
    단순 속성 - 의미를 더는 분해할 수 없는 속성
    복합 속성 - 의미를 분해할 수 있어 값이 여러 개의 의미를 포함하는 속성 (여러 개의 단순 속성이 모여 만들어진 속성) - 하나의 단순 속성으로 처리를 하는 경우도 존재 ex)생년월일

  • 기존 속성 값에서 유도
    유도 속성 - 값이 별도로 저장되는 것이 아니라 기존의 다른 속성 값에서 유도되어 결정되는 속성 ex)제품의 판매가격(기존 가격과 할인율을 통해 유도)

  • 널 속성 - 널 값이 허용되는 속성 ex) 병역 속성

    널 값은 데이터베이스에서 여러 가지로 중요한 의미를 지님
    (아직 결정되지 않았거나 모르는 값, 존재하지 않는 값) 공백이나 0과 다른 의미를 지님

  • 키 속성 - 개체 집합에 존재하는 각 객체 인스턴스들을 식별하는 데 사용 ex)고객 아이디
    키를 둘 이상의 속성들로 구성하는 경우도 존재
    개체 타입을 정의할 때 중요한 제약조건은 키 속성의 값이 개체 인스턴스마다 달라서 이 값으로 개체 인스턴스를 식별할 수 있어야 한다는 것

관계(relationship)

개체와 개체가 맺고 있는 의미 있는 연관성
개체 집합들 사이의 대응 관계(correspondence), 즉 매핑(mapping)을 의미
업무 처리에 대한 요구 사항을 개체들을 이용해 하나의 문장으로 만들었을 때 동사에 해당하는 것
ex) 고객은 책을 구매한다.
관계를 통해서만 개체들 간의 연관성을 이용한 업무를 처리할 수 있음
여러 개체 사이에서 정의되는 관계 타입과 개체 인스턴스들 간에 맺어진 실제 관계인 관계 인스턴스로 구분하여 표현하기도 함

관계도 개체처럼 속성을 지닐 수 있음
관계를 맺음으로써 발생하는 중요한 데이터들이 관계의 속성이 됨
ex) 구매 관계 속에 포함되는 [구매일자], [결제방식]

관계의 유형

관계에 참여하는 개체 타입의 수에 의해 이항, 삼항, 순환 관계로 구분

매핑 카디널리티(mapping cardinality)

데이터베이스 설계 과정에서 중요하게 활용되는 관계의 분류 기준 (1:1관계, 1:n관계, n:m관계)

  • 일대일(1:1) 관계
    개체 A의 개체 인스턴스 하나가 다른 개체 B의 개체 인스턴스 하나와 관계를 맺는다면 두 개체의 관계는 일대일 관계
    ex) 혼인 관계
  • 일대다(1:n) 관계
    개체 A의 개체 인스턴스 하나가 다른 개체 B의 여러 개체 인스턴스와 관계를 맺지만, 개체 B의 개체 인스턴스들은 개체 A의 개체 인스턴스 하나만 관계를 맺는 경우 두 개체의 관계는 일대다 관계
    ex) 부서와 사원
  • 다대다(n:m) 관계
    개체 A의 개체 인스턴스 하나가 다른 개체 B의 여러 개체 인스턴스와 관계를 맺고, 개체 B의 인스턴스들도 마찬가지라면 두 개체의 관계는 다대다 관계
    ex) 학생과 강의 관계

관계의 참여 특성

개체 A와 B 사이의 관계에서 개체 A의 모든 개체 인스턴스가 관계에 반드시 참여해야 된다면 개체 A가 관계에 '필수적 참여한다' 또는 '전체 참여한다' 라고 함
개체 A의 개체 인스턴스 중 일부만 관계에 참여해도 되면 개체 A가 관계에 '선택적 참여한다' 또는 '부분 참여한다' 라고 함

관계의 종속성

개체 A가 독자적으로 존재할 수 없고 다른 개체 B의 존재 여부에 의존적이라면 개체 A가 개체 B에 종속되어 있다고 함

  • 존재 종속(existence dependence) - 개체 B가 삭제되면 개체 A도 삭제되어야 함을 의미
  • 약한 개체(weak entity) or 종속 개체 - 다른 개체의 존재 여부에 의존적인 개체
  • 강한 개체(strong entity) or 오너 개체 - 다른 개체의 존재 여부를 결정하는 개체

    강한 개체와 약한 개체는 일반적으로 일대다의 관계이며, 약한 개체는 강한 개체와의 관계에서 필수적으로 참여한다는 특징을 지님
    약한 개체는 자신이 지닌 속성만으로는 식별이 어려워 일반적으로 강한 개체의 키를 포함하여 키를 구성 (직원 개체와 부양가족 개체)
    약한 개체를 구별해주는 속성을 구별자(delimiter) 또는 부분키(partial key)라고 함

E-R 다이어그램

개체-관계 모델을 이용해 현실 세계를 개념적으로 모델링한 결과물을 그림으로 표현한 것
글로 작성하는 것보다 이해하기 쉽기에 많이 선호됨
개체는 사각형, 속성은 타원으로 표기하며, 속성에서 키 속성은 밑줄, 다중 값 속성은 이중 타원, 유도 속성은 점선 타원으로 표현함
관계는 마름모 약한 개체는 이중 사각형, 약한 개체가 맺는 관계는 이중 마름모로 표기하고, 선택적 참여는 실선, 필수적 참여는 이중선으로 표현
일대일, 일대다, 다대다 관계는 레이블로 표기

논리적 데이터 모델

E-R 다이어그램으로 표현된 개념적인 구조를 논리적 데이터 모델을 통해 데이터베이스에 표현하는 형태를 결정하기에 DBMS 종류가 중요
논리적 데이터 모델은 논리적 데이터 모델링의 결과물이고, 사용자가 생각하는 데이터베이스의 모습
논리적 데이터 모델로 표현된 데이터베이스의 논리적 구조가 바로 데이터베이스 스키마(schema)
논리적 구조는 사용하는 DBMS에 따라 달라짐

관계 데이터 모델(relational data model)

데이터베이스의 논리적 구조가 2차원 테이블 형태
일반적으로 많이 사용되는 모델
(자세한 내용은 5장에서 다룸)

계층 데이터 모델(hierarchical data model)

데이터베이스의 논리적 구조가 트리 형태
상위에 있는 개체를 부모 개체, 하위에 있는 개체를 자식 개체라 하고, 이들 사이의 일대다 관계를 부모 자식 관계라고 함
각 부모는 다수의 자식을 가질 수 있고, 자식은 단 하나만의 부모를 가질 수 있음
개체 사이의 관계를 정의할 때 여러 제약이 존재하기에 개념적 구조를 논리적 구조로 자연스럽게 모델링하기 어렵고 구조가 복잡해질 수 있음
데이터의 연산이나 원하는 데이터를 검색하기 쉽지 않음

네트워크 데이터 모델(newtwork data model)

데이터베이스의 논리적 구조가 그래프 또는 네트워크 형태
계층 데이터 모델과 달리 두 개체 간의 관계를 여러 개 정의할 수 있어 관계를 이름으로 구별
같은 개체들 사이의 관계를 두 개 이상 표현할 수 있어 계층 데이터 모델보다 개념적 구조를 논리적 구조로 좀 더 자연스럽게 모델링 가능
하지만 계층 데이터 모델보다 구조가 더 복잡해질 수 있으며, 데이터의 연산과 데이터 검색이 더 여러워질 수 있음

추가적으로 객체지향 데이터 모델, 객체관계 데이터 모델 존재하지만 누구나 쉽게 이해할 수 있는 구조와 데이터의 검색,삭제,수정 등의 연산을 제공하는 관계 데이터 모델이 인기가 많으며 대중적으로 사용

출처 - 김연희저자의 데이터베이스 개론 2판 - 한빛 아카데미

profile
능력있는 DBA가 되고자하는 초짜 DBA

0개의 댓글