Frinee의 코드저장소

데이터 모델링

by Frinee
이 글은 김연희 저 - "데이터베이스 개론 3판"을 공부하고 정리하여 작성하였습니다.

 

 

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

  • 현실 세계에 존재하는 데이터를 컴퓨터 세계의 데이터베이스로 옮기는 변환 과정을 보통 데이터 모델링이라 함.
  • 현실 세계의 코끼리를 저장하여 관리할 만한 가치가 있는 중요 데이터만 찾아야 하는데 이런 작업을 추상화(abstraction)라 한다.
  • 추상화를 통해 데이터를 저장할 때 어떤 구조로 저장해야 할 지를 결정해야 함.
  • 이때 현실 세계의 코끼리에 대한 중요 데이터를 추출하여 개념 세계로 옮기는 작업을 개념적 모델링(conceptual modeling)이라 함.
  • 그리고 개념 세계의 데이터를 데이터베이스에 저장할 구조를 결정하고 이 구조로 표현하는 작업을 논리적 모델링(logical modeling)이라 함.
  • 이러한 모델링을 쉽게 할 수 있도록 데이터 모델(data model)이 도와주게 된다.

1.1. 데이터 모델

  • 데이터 모델링의 결과물을 표현하는 도구로 개념적 데이터 모델논리적 데이터 모델이 있음
  • 개념적 데이터 모델은 사람의 머리로 이해할 수 있도록 현실 세계를 개념적 데이터 모델링하여 데이터베이스의 개념적 구조로 표현하는 도구
  • 논리적 데이터 모델은 개념적 구조를 논리적 데이터 모델링하여 데이터베이스의 논리적 구조로 표현하는 도구
  • 데이터 모델은 데이터 구조, 연산, 제약조건으로 구성되어 있음
  • 개념적 데이터 모델에서 데이터 구조는 현실세계를 개념 세계로 추상화했을 때 어떤 요소로 이루어져 있는지를 표현하는 개념적 구조이다.
  • 논리적 데이터 모델이서 데이터 구조는 데이터를 어떤 모습으로 저장할 것인지를 표현하는 논리적 구조
  • 데이터 구조는 보통 자주 변하지 않고 정적인 특징을 지니고 있다.
  • 그리고 데이터 무결성 유지를 위한 제약조건에는 구조적 측면의 제약 사항과 연산을 적용하는 경우 허용할 수 있는 의미적 측면의 제약 사항이 있다.
  • 보통은 개념적 데이터 모델링과 논리적 데이터 모델링을 통틀어 데이터베이스 설계라 함.
  • 데이터 모델링 과정을 통해 논리적 구조가 결정되면, 실제로 저장되는 형태를 의미하는 물리적 구조로 변환하는 작업을 통해 현실 세계 데이터를 컴퓨터 세계 데이터로 저장
  • 개념적 데이터 모델 중 가장 많이 쓰이는 것이 개체-관계 모델(E-R model)
  • 논리적 데이터 모델 중에서는 관계 데이터 모델(relational data model)이 있음

 

2. 개체-관계 모델

  • 개체-관계 모델은 개체와 개체 간의 관계를 이용해 현실 세계를 개념적 구조로 표현하는 방법
  • 이 모델을 이용해 개념적으로 모델링하여 그림으로 표현한 것을 개체-관계 다이어그램(ERD: Entity-Relationship Diagram)라 함.

2.1. 개체

  • 현실 세계에서 조직을 운영하는 데 꼭 필요한 사람이나 사물과 같이 구별되는 모든 것을 말함.
  • 저장할 만한 가치가 있는 중요 데이터를 가지고 있는 사람이나 사물 등이며, 개념적 모델링을 하는데 가장 중요한 요소
  • 개체는 다른 개체와 구별되는 이름을 갖고 있고 각 개체만의 고유한 특성이나 상태, 즉 속성을 갖고 있음
  • 개체를 고유한 이름과 속성들로 정의한 것을 개체 타입이라 함.
  • 개체를 구성하고 있는 속성이 실제 값을 가짐으로써 실제화된 개체개체 인스턴스라 함.
  • 특정 개체 타입에 대한 개체 인스턴스들을 모아놓은 것개체 집합이라 함.
  • 개체속성은 파일 구조에서 레코드필드 용어에 대응함
  • 개체 타입은 레코드 타입에, 개체 인스턴스는 레코드 인스턴스에 대응됨

2.2. 속성

  • 개체가 가지고 있는 고유한 특성
  • 속성은 일반적으로 의미 있는 데이터의 가장 작은 논리적 단위로 인식
  • 속성은 다음과 같이 다양한 기준으로 분류할 수 있다

  1. 단일 값 속성과 다중 값 속성
    • 특정 개체를 구성하는 속성 값이 하나면 단일 값 속성으로 분류함.
    • 속성이 값을 여러개 가질 수 있으면 다중 값 속성으로 분류함.
    • 다중값 속성은 이중 타원으로 표현함
  2. 단순 속성과 복합 속성
    • 단순 속성은 의미를 더 분해할 수 없는 속성
    • 복합 속성은 의미를 분해할 수 있어 값이 여러 개의 의미를 포함함.
      • 주소 속성: 시, 도, 동, 우편번호 등으로 분해 가능
  3. 유도 속성
    • 값이 별도로 저장되는 것이 아닌 기존의 다른 속성 값에서 유도되어 결정되는 속성
    • 판매가격 = 가격 * 할인율, 나이 = 현재년도 - 출생년도
    • E-R 다이어그램에서 점선 타원으로 표현
  4. 널(NULL) 속성
    • 아직 결정되지 않았거나 모르는 값을 의미함.
    • 또는 해당되는 값이 없는, 존재하지 않는 값의 경우도 널 값이라 함.
  5. 키 속성
    • 개체를 구성하는 속성들 중에서 특별한 역할을 하는 속성
    • 모든 개체 인스턴스의 키 속성 값이 다르므로 개체 집합에 존재하는 각 개체 인스턴스들을 식별하는 데 사용
    • 키를 둘 이상의 속성들로 구분하기도 함.
    • 개체 타입을 정의할 때 중요한 제약조건은 키 속성의 값이 개체 인스턴스마다 달라서 이 값으로 개체 인스턴스를 구분할 수 있어야 함.
    • 키 속성은 밑줄을 그어 표현

2.3. 관계

  • 개체와 개체가 맺고 있는 의미 있는 연관성이며 개체 집합들 사이의 대응 관계, 즉 매핑을 의미함
  • 고객구매한다.” → 구매고객 개체 사이의 관계가 될 수 있음
  • 관계를 통해서만 개체들 간의 연관성을 이용한 업무를 처리할 수 있음
  • 관계를 여러 개체 사이에서 정의되는 관계 타입과 실제 속성 값으로 구성된 특정 개체 인스턴스들 간에 맺어진 실제 관계인 관계 인스턴스로 구분하여 표현함.
  • 고객 개체와 책 개체 사이에 정의된 구매 관계는 관계 타입
  • 이름 속성의 값이 “정소화”인 고객 개체 인스턴스와 제목 속성의 값이 “데이터베이스개론”인 책 개체 인스턴스 사이에 맺어진 실제 관계는 관계 인스턴스
  • 관계도 개체처럼 속성을 가질 수 있음
  • 관계는 E-R 다이어그램에서 마름모로 표현됨
  • 관계 유형
    1. 일대일(1:1) 관계
      • 개체 A의 각 개체 인스턴스와 개체 B의 개체 인스턴스 하나와 관계를 맺을 수 있고,개체 B의 각 개체 인스턴스와 개체 A의 개체 인스턴스 하나와 관계를 맺을 수 있는 경우
      • 남편 - 아내 혼인 관계
    2. 일대다(1:n) 관계
      • 개체 A의 각 개체 인스턴스는 개체 B의 개체 인스턴스 여러 개와 관계를 맺을 수 있지만,개체 B의 각 개체 인스턴스와 개체 A의 개체 인스턴스 하나와만 관계를 맺을 수 있는 경우
      • 부서 - 사원 소속 관계
    3. 다대다(n:m) 관계
      • 개체 A의 각 개체 인스턴스와 개체 B의 개체 인스턴스 여러 개와 관계를 맺을 수 있고,개체 B의 각 개체 인스턴스와 개체 A의 개체 인스턴스 여러개와 관계를 맺을 수 있는 경우
      • 고객 - 책 구매 관계
  • 관계의 참여 특성
    • 개체 A와 B 사이의 관계에서 개체 A의 모든 개체 인스턴스가 관계에 반드시 참여해야 한다면 개체 A가 관계에 ‘필수적 참여한다’ 또는 ‘전체 참여한다’라고 함.
    • 개체 A의 개체 인스턴스 중 일부만 관계에 참여하면 ‘선택적 참여한다’ 또는 ‘부분참여 한다’라고 함.
    • 필수 참여관계는 이중선으로 표현함
  • 관계의 종속성
    • 두 개체가 관계에 대해 종속성을 갖는 경우도 있음
    • 개체 B가 독자적으로 존재할 수 없고 개체 A에 종속되면 개체 B가 개체 A에 종속된다고 함
    • 이러한 종속을 특별히 존재 종속(existence dependence)라고 함.
    • 이 때 개체 B는 약한 개체라 하고 개체 A를 강한 개체라고 함.
    • 강한 개체와 약한 개체는 일반적으로 일대다의 관계이며, 약한 개체는 강한 개체와의 관계에 필수적으로 참여한다는 특징이 있음
    • 일반적으로 약한 개체는 강한 개체의 키를 포함하여 키를 구성함
    ex) 직원 - 부양가족의 경우
    • 부양가족이 약한 개체인 경우, 부양가족 이름 속성만으로 개체 구별이 어려우므로 직원번호 속성과 부양가족 개체 이름 속성을 조합하여 (직원번호, 이름) 부양가족 개체의 키를 구성할 수 있음
    • 이때 이름과 같이 약한 개체를 구별해주는 속성을 구별자 또는 부분키라 함.
    • 약한 개체는 이중 사각형으로 표현하고 약한 개체가 강한 개체와 맺는 관계는 이중 마름모로 표현함

2.4. E-R 다이어그램

  • 개체-관계 모델을 이용해 현실 세계를 개념적으로 모델링한 결과물을 그림으로 표현한 것
  • 구성
    • 기본 개체: 사각형
    • 개체 간 관계: 마름모
    • 개체나 관계의 속성 표현: 타원
    • 각 요소를 연결: 연결선
    • 관계 유형: 레이블

 

3. 논리적 데이터 모델

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

  • 개념적인 구조를 데이터베이스에 표현하는 형태를 결정하는 논리적 데이터 모델링에서는 데이터베이스 관리 시스템 종류가 중요함
  • 사용자 입장에서 선택한 데이터베이스 관리 시스템에 따라 개념적 구조를 데이터베이스에 어떤 형태로 저장할 지에 대한 구조를 설계하는 데 이 구조를 논리적 데이터 모델이라 함.
  • 논리적 데이터 모델은 논리적 데이터 모델링의 결과물이고 데이터베이스의 모습 또는 구조
  • 논리적 데이터 모델로 표현된 데이터베이스 논리적 구조가 바로 데이터베이스 스키마
  • 일반적으로 많이 사용되는 논리적 데이터 모델은 관계 데이터 모델로 2차원 테이블 형태
  • 이전에는 데이터 모델네트워크 데이터 모델이 많이 사용됨

3.2. 계층 데이터 모델

  • 데이터베이스의 논리적 구조가 트리 형태
  • 개체는 사각형, 개체들 간 관계는 링크로 나타내고 링크는 일대다 관계만 표현 가능
  • 두 개체 사이에 관계를 하나만 정의할 수 있어 관계에 이름을 붙여 구분할 필요가 없음
  • 별도의 개체를 추가로 생성하여 다대다 관계를 표현
  • 트리 구조이기 때문에 루트 역할을 하는 개체가 존재하며 사이클이 없음
  • 일대다 관계를 맺는 개체들 간 상하 관계가 존재
    • 상위 개체를 부모 개체, 하위 개체를 자식 개체라 함
    • 그리고 이 일대다 관계를 부모 자식 관계라 함.

단점

  • 개체 사이의 관계를 정의할 때 여러 제약이 존재하기 때문에 개념적 구조를 논리적 구조로 자연스럽게 모델링하기 어려워 구조가 복잡해질 수 있음
  • 그리고 데이터의 삽입•수정•삭제 등 연산이나 검색이 쉽지 않다는 단점

3.3. 네트워크 데이터 모델

  • 데이터베이스의 논리적 구조가 그래프 또는 네트워크 형태
  • 개체는 사각형, 개체 간 관계는 화살표로 표현하고 일대다 관계만 표현 가능
  • 두 개체 간의 관계를 여러 개 정의할 수 있어 관계에 이름으로 구분
  • 두 개체 사이의 일대다 관계들을 이용해 다대다 관계를 표현함
  • 일대다 관계의 개체를 각각 오너(owner)와 멤버(member)라 부르고 이들 사이의 관계를 오너-멤버 관계라 함.
  • 계층 데이터 모델과 달리 멤버 개체도 오너 개체 여러 개와 관계를 맺을 수 있음
  • 같은 개체들 사이 관계를 2개 이상 표현할 수 있어 계층 데이터 모델보다 개념적 구조를 논리적 구조로 좀 더 자연스럽게 표현할 수 있음

단점

  • 계층 데이터 모델보다 구조가 더 복잡해질 수 있음
  • 그리고 데이터의 삽입•수정•삭제 등 연산이나 검색이 더 어려워지는 단점

 

  • 최근에는 개체지향 데이터 모델이나 객체관계 데이터 모델이 사용되기도 함.
  • 하지만 관계 데이터 모델이 데이터 구조가 이해하기 쉽고 연산이 잘되어 꾸준한 인기를 누림

 

자료

  • 데이터베이스 개론 3판 (김연희 저, 2024.1)

'[컴퓨터 과학자 스터디] > 데이터베이스' 카테고리의 다른 글

관계 데이터 연산  (0) 2024.11.21
관계 데이터 모델  (0) 2024.11.21
데이터베이스 시스템  (1) 2024.11.16
데이터베이스 관리 시스템  (1) 2024.11.14
데이터베이스 기본 개론  (1) 2024.11.14

블로그의 정보

프리니의 코드저장소

Frinee

활동하기