데이터 모델링
포스트
취소

데이터 모델링

데이터 모델링이란?

  • 현실 세계에 존재하는 데이터를 컴퓨터 세계의 DB로 옮기는 변환 과정
  • DB 설계의 핵심 과정
  • 종류
    • 개념적 모델링 (conceptual modeling)
      • 현실 세계의 사물의 대한 데이터를 추출하여 개념 세계로 옮기는 작업
    • 논리적 모델링 (logical modeling)
      • 개념 세계의 데이털르 DB에 저장하기 위한 구조를 결정하고,
        해당 구조로 표현하는 작업

일반적으로 개념적 모델링과 논리적 모델링을 명확히 구분하지는 않고
개념적 모델링과 논리적 모델링을 합쳐서 데이터 모델링이라 부른다.

데이터 모델이란?

  • 데이터 모델링을 쉽게 할 수 있도록 도와주는 도구
  • 데이터 모델링의 결과물을 표현하는 도구
  • 종류
    • 개념적 데이터 모델
      • 사람의 머리로 이해할 수 있도록 현실 세계를 개념적 데이터 모델링하여
        DB의 개념적 구조로 표현하는 도구
      • 대표 예시
        • 개체-관계 모델 (Entity-Relationship Model, 통칭 E-R 모델)
    • 논리적 데이터 모델
      • 대표 예시
        • 관계 데이터 모델 (relational data model)
      • 개념적 구조를 논리적 데이터 모델링하여 DB의 논리적 구조로 표현하는 도구
  • 구성
    • 데이터 구조
    • 연산
    • 제약조건

일반적으로 개념적 데이터 모델링과 논맂거 데이터 모델링을 합쳐서
데이터베이스 설계라고 한다.

개체-관계 모델

  • 현실 세계를 개체(Entity)와 개체의 관계를 이용해 개념적 구조로 표현하는 방법
  • 개체-관계 다이어그램 (Entity-Relationship Diagram, 통칭 E-R 다이어그램 또는 ERD)
    • 현실 세계를 개체-관계 모델을 이용해 개념적으로 모델링하여 그림으로 표현한 것

개체 (Entity)

  • 현실 세계에서 조직을 운영하느 데 꼭 필요한 사람이나 사물과 같이 구별되는 모든 것
  • 저장할 만한 가치가 있는데이터를 가지고 있난 사람이나 사물같은 요소
  • 물리적으로 존재하는 것뿐만 아니라 개념적으로만 존재하는 것도 개체로 취급할 수 있다.
  • 개체는 다른 개체와 구별되는 이름을 가지고 있다.
  • 각 개체만의 고유한 특성이나 상태를 하나 이상 가지고 있다.
    • 속성이라고 부른다.
  • 개체 타입 (Entity Type)
    • 개체를 고유의 이름과 속성들로 정의한 것
  • 개체 인스턴스 (Entity Instance)
    • 개체를 구성하고 있는 속성이 실체 값을 가짐으로써 실체화된 개체
    • 개체 어커런스(Entity Occurrence)라고도 부른다.
  • 개체 집합 (Entity Set)
    • 특정 개체 타입에 대한 개체 인스턴스들을 모아놓은 것

속성 (Attribute)

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

단일 값 속성과 다중 값 속성

  • 단일 값 속성 (single-valued attribute)
    • 속성이 가질 수 있는 값이 하나만 존재할 때의 속성의 분류
  • 다중 갑 속성 (multi-valued attribute)
    • 속성이 가질 수 있는 값이 여러 개인 경우의 속성의 분류

단순 속성과 복합 속성

  • 단순 속성 (simple attribute)
    • 의미를 더는 분해할 수 없는 속성
    • 예시
      • 이름
      • 가격
  • 복합 속성 (composite attribute)
    • 의미를 분해할 수 있어 값이 여러 개인 속성
    • 예시
      • 주소 : 도·시·동·우편번호 등으로 분해 가능

유도 속성 (derived attribute)

  • 값이 별도로 저장되는 것이 아니라 기존의 다른 속성의 값에서 유도되어 결정되는 속성
  • 에시
    • 판매가 : 가격과 할인율에 영향을 받음
  • 저장 속성 (stored attribute)
    • 유도 속성을 결정하는 속성
  • 실제 값을 저장하는 것은 저장 속성이고, 유도 속성은 필요할 때마다 계산되므로 값을 따로 저장할 필요는 없다.

널 속성 (null attribute)

  • null 값이 허용되는 속성

키 속성 (key attribute)

  • 개체를 구성하는 속성들 중에서 특별한 역할을 하는 속성
  • 모든 개체 인스턴스의 키 속성 값이 다르므로
    키 속성은 개체 집합에 존재하는 각 개체 인스턴스들을 식별하는데 사용한다.
  • 개체 인스턴스를 식별하기 위한 키 속성은 1개일수도 있고, 필요에 의해서 n개 이상일 수도 있다.

관계 (relationship)

  • 개체와 개체가 맺고 있는 의미 있는 연관성
  • 개체 집합들 사이의 대응 관계(매핑)을 의미한다.
  • 관계 타입 (relationship type)
    • 여러 개체 사이에서 정의되는 관계
  • 관계 인스턴스 (relationship instance)
    • 실제 속성 값으로 구성되어 있는 특정 개체 인스턴스들 간에 맺어진 실제 관게
  • 매핑 카디널리티 (mapping cardinality)
    • 관게를 맺는 두 개체 집합에서 각 개체 인스턴스가 연관성을 맺고 있는
      상대 개체 집합의 인스턴스 개수

관계의 참여하는 개체 타입의 수에 의한 분류

  • 이항 관계
    • 개체 타입 두 개가 맺는 관계
  • 삼항 관계
    • 개체 타입 세 개가 맺는 관계
  • 순환 관계
    • 개체 타입 하나가 자기 자신과 맺는 관계

매핑 카티널리티에 의한 분류

  • 일대일(1:1) 관계
    • 조건 (모두 만족)
      • 개체 A의 인스턴스 하나가 개체 B의 인스턴스 중 하나만 연결 가능
      • 개체 B의 인스턴스 하나가 개체 A의 인스턴스 중 하나만 연결 가능
  • 일대다(1:N) 관계
    • 조건 (모두 만족)
      • 개체 A의 인스턴스 하나가 개체 B의 인스턴스 중 여러 개에 연결 가능
      • 개체 B의 인스턴스 하나가 개체 A의 인스턴스 중 하나만 연결 가능
  • 다대다(N:M) 관계
    • 조건 (모두 만족)
      • 개체 A의 인스턴스 하나가 개체 B의 인스턴스 중 여러 개에 연결 가능
      • 개체 B의 인스턴스 하나가 개체 A의 인스턴스 중 여러 개에 연결 가능

참여 특성에 의한 분류

  • 필수적 참여 관계
    • 개체 A와 개체 B의 관계에서 개체 A의 모든 개체 인스턴스가 반드시 참여하는 관계
  • 선택적 참여 관계
    • 개체 A와 개체 B의 관계에서 개체 A의 일부 개체 인스턴스만 참여해도 되는 관계

관계의 종속성

  • 존재 종속 (existence dependence)
    • 개체 A의 존재 여부에 따라 개체 B의 존재 여부가 달라지는 종속 관계
  • 약한 개체 (weak entity)
    • 종속당하는 의존 개체
  • 오너 개체 (owner entity)
    • 약한 개체를 결정짓는 개체

오너 개체와 일반 개체는 일반적으로 일대다의 관계를 가진다.

약한 개체는 오너 개체와의 관계에 필수적으로 참여한다는 특징이 있다.

약한 개체는 자신이 가지고 있는 속성만으로는 식별이 어려워
일반적으로 오너 개체의 키를 포함하여 키를 구성한다.

구별자 (delimiter)

  • 약한 개체를 구별하는 역할을 하는 속성
  • 부분키(partial key)라고도 부른다.

E-R 다이어그램 그리기

  • 개체
    • 사각형을 그리고 그 안에 개체의 이름을 표기한다.
  • 속성
    • 단일 값 속성
      • 타원을 그리고 그 안에 속성의 이름을 표기한다.
    • 다중 값 속성
      • 이중 타원을 그리고 그 안에 속성의 이름을 표기한다.
    • 유도 속성
      • 점선 타원을 그리고 그 안에 속성의 이름을 표기한다.
    • 키 속성
      • 타원을 그리고 그 안에 속성의 이름을 표기한 뒤 속성의 이름 아래에 밑줄을 긋는다.
  • 관계
    • 관계 타입
      • 마름모를 그리고 그 안에 관계의 이름을 표기한다.
    • 참여 특성
      • 필수적 참여 관계
        • 개체와 관계를 이중선으로 연결한다.
    • 종속성
      • 약한 개체
        • 이중 사각형을 그리고 그 안에 개체의 이름을 표기한다.
      • 약한 개체가 오너 개체와 맺는 관계
        • 이중 마름모를 그리고 그 안에 관계의 이름을 표기한다.

논리적 데이터 모델

  • 데이터베이스 스키마
    • 논리적 데이터 모델로 표현된 데이터베이스의 논리적 구조
    • 논리적 구조는 사용하는 DBMS에 따라 달라진다.

계층 데이터 모델

  • DB의 논리적 구조를 트리 형태로 표편한 모델
  • 일대다 관게만 표현 가능
  • 두 개체 사이에 관계를 하나만 정의할 수 있어 관계에 이름을 붙여 구분할 필요가 없다.
  • 다대다 관계를 표현할 수 없어 별도의 개체를 추가로 생성해서 표현한다.
  • 트리 구조로 표현되기 때문에 루트 역할을 하는 개체가 존재하고 사이클이 존재하지 않는다.
  • 관련 용어
    • 부모 개체
      • 상위에 있는 개체
    • 자식 개체
      • 하위에 있는 개체
    • 부모 자식 관계
      • 부모 개체와 자식 개체 사이의 일대다 관계
  • 개체 사이의 관계 정의 시 여러 제약이 존재하여
    개념적 구조를 논리적 구조를 자연스럽게 모델링하기 어려워
    구조가 복잡해질수도 있다.
  • 데이터의 삽입/수정/삭제 등의 연산이 어렵다.
  • 원하는 데이터의 검색이 쉽지 않다.
  • 표현법
    • 개체
      • 사각형
    • 관계
      • 연결선

네트워크 데이터 모델

  • DB의 논리적 구조를 그래프 형태나 네트워크 형태로 표편한 모델
  • 일대다 관게만 표현 가능
  • 두 개체 간의 관계를 여러 개 정의할 수 있어 관계를 이름으로 구별한다.
  • 오너 개체 하나가 멤버 개체 여러 개와 관계를 맺을 수 있고,
    멤버 개체도 오너 개체 여러 개와 관계를 맺을 수 있다.
  • 같은 개체들 사이의 관계를 두 개 이상 표현할 수 있기 때문에
    개념적 구조를 논리적 구조로 좀 더 자연스럽게 모델링할 수 있다.
  • 계층 데이터 모델보다 구조가 훨씬 복잡해질 수 있어
    데이터 삽입/수정/삭제 등의 연산과 데이터 검색이 더 어렵다.
  • 관련 용어
    • 오너
      • 일대다 관계에서 “일”에 해당하는 개체
    • 멤버
      • 일대다 관계에서 “다”에 해당하는 개체
    • 오너-멤버 관계
      • 오너와 멤버 사이의 관계
  • 표현
    • 개체
      • 사각형
    • 관계
      • 화살표
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.