ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [데이터베이스개론] ch4. 데이터 모델링
    DB 2024. 7. 15. 02:36
    728x90

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

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

     

    데이터 모델링 : 현실 세계에 존재하는 데이터를 컴퓨터 세계의 데이터베이스로 옮기는 변환 과정

    개념적 모델링(conceptual modeling) : 코끼리에 대한 중요 데이터를 추출하여 개념 세계로 옮기는 작업

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

     

    보통 합쳐서 데이터 모델링이라고 부르고, 데이터 모델링은 데이터베이스 설계의 핵심 과정이다.

    코끼리 하나를 데이터베이스로 옮기는 일이 쉽지 않았듯, 현실 세계를 데이터베이스로 옮기는 작업은 훨씬 복잡하다. 이러한 데이터 모델링을 쉽게 할 수 있도록 도와주는 도구가 있는데, 이것이 바로 데이터 모델이다.

    데이터 모델은 데이터 구조, 연산, 제약조건으로 구성된다. 데이터 모델에서는 데이터 구조를 강조하지만, 적용 가능한 연산과 제약조건도 이해할 필요가 있다.

    개념적 데이터 모델에서 데이터 구조는 현실 세계를 개념 세계로 추상화 했을 때 어떤 요소로 이루어져 있는지를 표현하는 개념적 구조

    논리적 데이터 모델에서 데이터 구조는 데이터를 어떤 모습으로 저장할 것인지를 표현하는 논리적인 구조이다.

    데이터 구조는 자주 변하지 않고 정적이라는 특징이 존재한다.

    연산은 데이터 구조에 따라 개념 세계나 컴퓨터 세계에서 실제로 표현된 값들을 처리하는 작업으로 값이 연산에 의해 계속 변경될 수 있으므로 동적이라는 특징이 있다.

    데이터 무결성 유지를 위한 조건에는 구조적 측면의 제약사항과 연산을 적용하는 경우 허용할 수 있는 의미적 측명의 제약 사항 존재한다.

    개념적 데이터 모델 중 대표적으로 많이 사용되는 것이 개체-관계 모델(E-R Model; Entity-Relationship Model)이다. 논리적 데이터 모델로는 관계 데이터 모델(relational data model)이 가장 많이 사용된다.

     

    개체-관계 모델

    개체(entity)와 개체 간의 관계를 이용해 현실 세계를 개념적 구조로 표현하는 방법

    현실 세계를 개체-관계 모델을 이용해 개념적으로 모델링하여 그림으로 표현한 것을 개체-관계 다이어그램(Entity-Relationship Diagram) 또는 E-R 다이어그램이라 한다.

     

    개체(entity)

    현실 세계에서 조직을 운영하는 데 꼭 필요한 사람이나 사물과 같이 구별되는 모든 것

    즉, 저장할 만한 가치가 있는 중요 데이터를 가지고 있는 사람이나 사물 등이며 개념적 모델링을 하는 데 가장 중요한 요소

    개념이나 사건처럼 개념적으로만 존재하는 것도 개체가 될 수 있다.

    다른 개체와 구별되는 이름을 가지고 있고, 개체만의 고유한 특성이나 상태, 즉 속성을 하나 이상 가지고 있다.

     

    개체 타입(entity type) : 개체의 고유한 이름과 속성들로 정의한 것

    개체 인스턴스 or 개체 어커런스 : 개체를 구성하고 있는 속성이 실제 값을 가짐으로써 실체화된 개체

    개체 집합(entity set) : 특정 개체 타입에 대한 개체 인스턴스를 모아놓은 것

     

    데이터베이스에서 실제로 저장하고 관리하는 것이 개체 인스턴스의 모임인 개체 집합이라 할 수 있다.

    개체와 속성은 파일 구조에서 레코드와 필드에 대응된다. 개체 타입은 레코드 타입에, 개체 인스턴스는 레코드 인스턴스에 대응된다.

    E-R 다이어그램에서는 개체를 사각형으로 표현하고 사각형 안에 개체의 이름을 표기한다.

     

    속성(attribute)

    개체가 가지고 있는 고유한 특성

    속성은 그 자체만으로는 의미가 없지만, 관련 있는 속성들을 모아 개체를 구성하면 하나의 중요한 의미를 표현할 수 있다.

    일반적으로 의미 있는 데이터의 가장 작은 논리적 단위로 인식된다.

    • 단일 값 속성(single-valued attribute)
      • 특정 개체를 구성하는 속성 값이 하나일 경우
    • 다중 값 속성(multi-valued attribute)
      • 값을 여러 개 가질 수 있는 속성
      • 이중 타원으로 표현
    • 단순 속성(simple attribute)
      • 의미를 더는 분해할 수 없는 속성
      • 의미가 하나인 값
    • 복합 속성(composite attribute)
      • 의미를 분해할 수 있는 속성
      • 값이 여러 개의 의미를 포함
    • 유도 속성(derived attribute)
      • 기존의 다른 속성의 값에서 유도되어 결정되는 속성
      • 점선 타원으로 표현
    • 저장 속성(stored attribute)
      • 판매가격 속성을 계산하는데 사용되는 가격과 할인율 같은 속성
    • 널 속성
      • null 값 : 아직 결정되지 않았거나 모르는 값 / 해당되는 값이 없는, 존재하지 않는 값의 경우
      • 공백이나 0과는 다르다
      • 널 값이 허용되는 속성
    • 키 속성
      • 개체를 구성하는 속성들 중에서 특별한 역할을 하는 속성
      • 모든 개체 인스턴스의 키 속성 값이 다르므로 키 속성은 개체 집합에 존재하는 각 개체 인스턴스들을 식별하는 데 사용
      • 개체 타입을 정의할 때 중요한 제약조건 : 키 속성의 값이 개체 인스턴스마다 달라서 이 값으로 개체 인스턴스를 식별할 수 있어야 한다는 것
      • 밑줄을 그어 표현

     

    관계(relationship)

    개체와 개체가 맺고 있는 의미 있는 연관성

    개체 - 관계 모델의 중요한 요소

    관계는 개체 집합들 사이의 대응 관계(correspondence), 즉 매핑을 의미

    관계를 통해서만 개체들 간의 연관성을 이용한 업무를 처리할 수 있다.

    여러 개체 사이에서 정의되는 관계 타입과 실제 속성 값으로 구성된 특정 개체 인스턴스들 간에 맺어진 실제 관계인 관계 인스턴스로 구분하여 표현하기도 한다.

    관계는 마름모로 표현한다.

    • 관계의 유형
      • 이항 관계
        • 개체 타입 2개가 맺는 관계
      • 삼항 관계
        • 개체 타입 3개가 맺는 관계
      • 순환 관계
        • 개체 타입 1개가 자기 자신과 맺는 관계

    💡 데이터베이스 설계 과정에서 중요하게 활용되는 관계의 분류 기준은 매핑 원소의 수, 즉 매핑 카디널리티(mapping cardinality)다.

    매핑 카디널리티 : 관계를 맺는 두 개체 집합에서, 각 개체 인스턴스가 연관성을 맺고 있는 상대 개체 집합의 인스턴스 개수를 의미

     

    매핑 카디널리티를 기준으로 일대일, 일대다, 다대다 라는 세 가지 유형으로 분류할 수 있다.

    일대일(1:1) 관계

    개체 a의 각 개체 인스턴스가 개체 b의 개체 인스턴스 하나와 관계를 맺을 수 있다.

     

    일대다(1:n) 관계

    개체 a의 각 개체 인스턴스는 개체 b의 개체 인스턴스 여러 개와 관계를 맺을 수 있지만, 개체 b의 각 개체 인스턴스는 개체 a의 개체 인스턴스 하나만 관계를 맺을 수 있다.

     

    다대다(n:m) 관계

    개체 A의 각 개체 인스턴스가 개체 B의 개체 인스턴스 여러개와 관계를 맺을 수 있고, 개체 B의 각 개체 인스턴스도 개체 A의 개체 인스턴스 여러개와 관계를 맺을 수 있다.

    • 관계의 참여 특성
      • 필수적 참여 : 개체 A와 B의 관계에서, 개체 A의 모든 개체 인스턴스가 관계에 반드시 참여해야 하는 관계
        • 이중선으로 관계 표현
      • 선택적 참여 : 개체 A의 개체 인스턴스 중, 일부만 관계에 참여해도 되는 관계
    • 관계의 종속성
      • 존재 종속 : 개체 B가 독자적으로는 존재할 수 없고, 다른 개체 A의 존재 여부에 의존적이라면, 개체 B가 개체 A에 종속되어 있다고 한다.
      • 약한 개체 : 다른 개체의 존재 여부에 의존적인 개체
      • 강한 개체 : 다른 개체의 존재 여부를 결정하는 개체
      • 예를 들어, 학생과 학부모 관계를 살펴보자. 학교 입장에서 보면 학부모 개체만으로는 의미가 없다. 학생 개체가 있어야 학생을 보호하는 학부모 개체가 존재할 수 있으며, 학생 개체가 없으면 학부모 개체도 필요 없다.
      구별자 or 부분키 : 약간 개체를 구별해주는 속성따라서 부양가족 개체의 키는 (직원번호, 이름)이 된다.
    • 강한 개체인 지구언 개체와 약한 개체인 부양가족 개체는 일반적으로 일대다 관계를 맺는다. 한 직원의 부양가족 중 이름이 같은 사람은 없기 때문에 이름 속성이 부양가족을 식별하는 역할을 할 수 있다. 하지만 다른 직원의 부양가족 이름과 같을 수 있으므로 이름 속성만으로 부양가족을 구별하기 어렵다. 이럴 때는 직원번호 속성으로 직원 개체를 식별하고 식별된 직원의 부양가족 개체를 이름 속성으로 구별하면 된다.

     

    E-R 다이어그램

    개체-관계 모델을 이용해 현실 세계를 개념적으로 모델링한 결과물을 그림으로 표현한 것

    개체를 표현하는 사각형, 개체 간의 관계를 표현하는 마름모, 개체나 관계의 속성을 표현하는 타원, 각 요소를 연결하는 연결선으로 구성

     

    논리적 데이터 모델

    논리적 데이터 모델의 개념과 특성

    논리적 데이터 모델 : E-R 다이어그램으로 표현된 개념적 구조를 데이터베이스에 저장할 형태로 표현한 논리적 구조

    데이터베이스 스키마 : 논리적 데이터 모델로 표현된 데이터베이스의 논리적 구조

     

    관계 데이터 모델

    일반적으로 많이 사용되는 논리적 데이터 모델

    데이터베이스의 논리적 구조가 2차원 테이블 형태

     

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

    데이터베이스의 논리적 구조가 트리 형태

    링크는 일대대 관계만 표현 가능, 두 개체 사이에 관계를 하나만 정의할 수 있어 관계에 이름을 붙여 구별할 필요가 없다.

    루트 역할을 하는 개체가 존재, 사이클이 존재하지 않음

    개체들 사이에 상하 관계 성립, 부모 자식 관계

    단점 :

    개체 사이의 관계를 정의할 때 여러 제약이 존재해서 개념적 구조를 논리적 구조로 자연스럽게 모델링 하기 어려워 구조가 복잡해질 수 있다.

    데이터의 삽입, 삭제, 수정 등을 연산하거나 원하는 데이터를 검색하기가 쉽지 않다.

     

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

    데이터베이스의 논리적 구조가 그래프 or 네트워크 형태

    개체는 사각형, 개체들 간의 관계를 화살표로 나타내는데 화살표는 일대다 관계만 표현 가능

    같은 개체들 사이의 관계를 2개 이상 표현할 수 있어 계층 데이터 모델보다 개념적 구조를 논리적 구조로 자연스럽게 모델링 가능

    하지만, 계층 데이터 모델보다 구조가 훨씬 복잡해질 수 있어, 데이터의 삽입, 삭제, 수정 같은 연산과 데이터 검색이 계층 데이터 모델보다 어려워지는 문제 발생

    728x90
Designed by Tistory.