데이터 모델링

Jin Hur·2022년 5월 22일
0

데이터베이스

목록 보기
4/12
post-thumbnail

reference: "데이터베이스 개론" / 김연희 / 한빛아카데미

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

데이터 모델링

source: https://psun.tistory.com/entry/%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%AA%A8%EB%8D%B8%EB%A7%81

DB는 현실 세계에 존재하는 수많은 데이터 중 조직을 운영하는데 꼭 필요한 데이터만을 선별하여 컴퓨터에 저장한 것이다. 현실 세계에 존재하는 데이터를 컴퓨터 세계의 DB로 옮기는 변환 과정을 데이터 모델링(data modeling)이라 한다.

이러한 변환 과정은 크게 두 가지로 구성될 수 있다.
(1) 머릿속에 현실 세계 객체를 연상시킬 수 있는 중요한 데이터를 찾는 단계
(2) 이를 컴퓨터 세계에 저장하는 구조를 결정해서 표현하는 단계

(1)번 단계를 개념적 모델링이라 하고, (2)번 단계를 논리적 모델링(DB의 논리적 구조)이라 한다.
일반적으로 개념적 모델링과 논리적 모델링을 명확히 구분하지 않고 합쳐서 데이터 모델링이라 한다. 데이터 모델링은 DB 설계의 핵심 과정이라 할 수 있다.


데이터 모델

데이터 모델링을 쉽게 할 수 있도록 도와주는 도구가 있는데 이를 데이터 모델이라 한다.
데이터 모델은 데이터 모델링의 결과물을 표현하는 도구로, 개념적 데이터 모델과 논리적 데이터 모델이 있다.
일반적으로 데이터 모델은 데이터 구조(정적), 연산(동적), 제약조건으로 구성된다.

개념적 데이터 모델과 논리적 데이터 모델

사람들의 요구사항에 맞게 아파트를 짓는 예시를 살펴보면,
사람들의 요구사항을 반영하는 설계도를 그리는 과정을 '개념적 데이터 모델링', 설계도를 그릴 때 사용하는 방법이나 도구가 '개념적 데이터 모델'이라 할 수 있다.
그리고 이 설계도를 토대로 모델하우스를 만드는 과정을 '논리적 데이터 모델링', 모델하우스를 만들 때 사용하는 방법이나 도구가 '논리적 데이터 모델'이라 할 수 있다.
개념적 데이터 모델링과 논리적 데이터 모델링 작업을 지원하는 데이터 모델들의 종류는 다양하다.

  • 개념적 데이터 모델
    • 사람의 머리로 이해할 수 있도록 현실 세계를 개념적 데이터 모델링하여 데이터베이스의 개념적 구조로 표현하는 도구
    • 즉 현실 세계를 개념 세계로 추상화했을 때 어떤 요소로 이루어졌는지를 표현하는 개념적 구조
    • 개념적 데이터 모델 중 대표적으로 가장 많이 사용하는 것은 개체-관계 모델(E-R 모델)
  • 논리적 데이터 모델
    • 개념적 구조를 논리적 데이터 모델링하여 DB의 논리적 구조를 표현하는 도구
    • 데이터를 어떤 모습을 저장할 것인지를 표현하는 논리적 구조
    • 논리적 데이터 모델 중 대표적으로 가장 많이 사용하는 것은 관계 데이터 모델


개념적 데이터 모델인 개체-관계(E-R) 모델

개체-관계 모델이란 현실 세계를 개체(entity)와 개체간의 관계(relationship)을 이용해 개념적 구조로 표현하는 방법이다. 개체-관계 모델을 이용해 개념적으로 모델링하여 그림으로 표현한 것을 개체-관계 다이어그램(E-R 다이어그램)이라 한다.

개체

  • 개체는 저장할 만한 가치가 있는 중요 데이터를 가지고 있는 사람이나 사물 등이며, 개념적 모델링을 하는 데 가장 중요한 요소
  • 물리적인 존재만을 의미한 것은 아님.
  • 개체는 다른 개체와 구별되는 이름을 가지고 있거나 각 객체만의 고유한 특성이나 상태, 즉 속성을 하나 이상 가지고 있음.
  • 개체를 고유의 이름과 속성들로 정의한 것을 개체 타입(entity type)이라 함.
  • 개체를 구성하고 있는 속성이 실제 값을 가짐으로써 실체화된 개체를 개체 인스턴스(entity instance) 또는 개체 어커런스(entity occurrence)라 함.
  • 개체와 속성은 파일 구조에서 레코드(record)필드(field) 용어에 대응. 그리고 개체 타입은 레코드 타입에, 개체 인스턴스는 레코드 인스턴스에 대응됨.

source: https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=gmqgufrn&logNo=220669863989


개체 속성

  • 속성은 개체가 가지고 있는 고유의 특성
  • 속성은 일반적으로 의미 있는 데이터의 가장 작은 논리적 단위로 인식됨.

source: https://mi-nya.tistory.com/11

  • 속성은 다양한 기준으로 분류될 수 있음.

단일 값속성과 다중 값 속성

  • 특정 개체를 구성하는 속성의 값이 하나면 단일 값 속성
    : ex) 고객 개체를 구성하는 '이름', '적립금' 등의 속성은 한 명의 고객 인스턴스에 대해 하나의 값만 가짐.
  • 이와 달리 속성이 값을 여러 개 가질 수 있으면 다중 값 속성
    : ex) 고객 개체를 구성하는 '연락처' 속성은 한 명의 고객 인스턴스에 대해 집 전화번호와 휴대폰 번호 등 값을 여러 개 가질 수 있음.

source: https://mi-nya.tistory.com/11

단순 속성과 복합 속성

  • 의미를 더이상 분해할 수 없는 속성이라면 단일 속성
    : ex) 고객 객체를 구성하는 '적립금' 속성은 의미가 더이상 분해되지 않기에 단순 속성
    ex) 책 개체를 구성하는 '이름', 'ISBN', '가격' 등의 속성도 의미를 더 나눌 수 없으므로 단순 속성

  • 의미를 더 분해할 수 있는 속성이라면 복합 속성
    : ex) 고객 개체를 구성하는 '주소' 속성은 '도', '시', '동', '우편번호' 등으로 의미를 더 나눌 수 있음.
    ex) 고객 개체의 생년월일 속성 또한 '년', '월', '일'로 의미를 더 세분화 시킬 수 있는 복합 속성

source: source: https://mi-nya.tistory.com/11

유도 속성

  • 값이 별도로 저장되는 것이 아니라 기존의 다른 속성의 값에서 유도되어 결정되는 속성
  • 유도 속성를 유도시키는 속성을 '저장 속성'이라 부르기도 함.
    : ex) 책 개체를 구성하는 '가격'과 '할인율' 속성으로 계산되는 '판매 가격'이 유도 속성이 될 수 있음.

source: https://mi-nya.tistory.com/11

널(null) 속성

  • 널(null) 값은 DB에서 중요한 의미를 지님.
  • 널 값은 '아직 결정되 않거나', '모르는' 값을 의미
  • 또는 '해당되는 값이 없는', 즉 '존재하지 않은' 값의 경우도 널 값이라 함.
  • 공백(blank)와 0(zero)와 의미가 다름.
  • 널 값이 허용되는 속성을 널 속성이라 함.
    : ex) 고객 개체 인스턴스의 등급 속성 값이 널이라면 고객의 등급이 아직 결정되지 않음을 의미
    ex) 고객 개체 인스턴스의 취미 속성이 널이라면 가입 시 고객이 취미를 입력하지 않았음을 의미
    ex) 사원 개체를 구성하는 병역 속성은 사원 개체 인스턴스의 성별이 여자인 경우 '해당 사항 없음'을 의미

키 속성

  • 모든 개체 인스턴스의 키 속성 값은 다름. 따라서 키 속성은 개체 집합에 존재하는 각 개체 인스턴스들을 식별하는데 사용
    : ex) 고객 개체의 'ID' 속성, 책 개체의 'ISBN' 속성
  • 키를 둘 이상의 속성들로 구성하기도 함.
    : ex) 고객 개체에 'ID' 속성이 없다면 '고객명'과 '집전화번호' 속성을 조합하여 키를 구성할 수도 있음

_

source: https://mi-nya.tistory.com/11

개체 타입을 정의할 때 중요한 제약조건은 키 속성의 값이 개체 인스턴스마다 달라서 이 값으로 개체 인스턴스를 식별할 수 있어야 한다는 것.


개체 관계

  • 개체와 개체가 맺고 있는 의미있는 연관성으로, 개체-관계 모델의 중요한 요소
  • 개체 집합들 사이의 대응 관계, 즉 매핑(mapping)을 의미
  • 요구 사항을 개체들을 이용해 하나의 문자을 만들었을 때 동사에 해당하는 것

관계의 유형

DB 설계 과정에서 중요하게 활용되는 관계의 분류 기준은 매핑 원소의 수, 즉 '매핑 카디널리티(mapping cardinality)이다.
매핑 카디널리티는 관계를 맺는 두 개체 집합에서, 각 개체 인스턴스가 연관성을 맺고 있는 상대 개체 집합의 인스턴스 개수를 의미한다.
관계는 매핑 카디널리티를 기준으로 일대일, 일대다, 다대다라는 세 가지 유형으로 분류될 수 있다.

1) 일대일 관계

  • 개체 A의 각 개체 인스턴스가 개체 B의 개체 인스턴스 하나와 관계를 맺을 수 있음.
  • 동시에 개체 B의 각 개체 인스턴스가 개체 A의 개체 인스턴스 하나와 관계를 맺을 수 있음.
  • ex) 유저(이름/전화번호/주소) - 유저 이메일(이름/이메일) 관계

source: https://d9249.tistory.com/17

2) 일대다 관계

  • 개체 A의 각 개체 인스턴스는 개체 B의 개체 인스턴스 여러 개와 관계를 맺을 수 있지만, 개체 B의 각 개체 인스턴스는 개체 A의 개체 인스턴스 하나와만 관계를 맺을 수 있음.
  • ex) 유저(이름/전화번호/주소) - 상품(이름/가격/출시일) 관계

source: https://d9249.tistory.com/17

3) 다대다 관계

  • 개체 A의 각 개체 인스턴스가 개체 B의 개체 인스턴스 여러 개와 관계를 맺을 수 있고, 개체 B의 각 인스턴스 또한 개체 A의 개체 인스턴스 여러 개와 관계를 맺을 수 있음.
  • ex) 학생(학생ID/이름/전화번호/주소) - 강의(강의ID/이름/교수명) 관계

source: https://d9249.tistory.com/17


관계의 참여 특성

개체 집합 내 모든 개체 인스턴스가 관계에 참여하는지 유무에 따른 특성(매핑 카디널리티와 관련x)

  • 필수적 참여: 모든 개체 인스턴스가 관계에 반드시 참여해야 된다는 것을 의미
    : ex) 모든 고객은 반드시 책을 구매해야 함

  • 선택적 참여(부분 참여): 개체 인스턴스 중 일부만 관계에 참여해도 되는 것을 의미
    : ex) (고객에 의해) 구매되지 않는 책이 있을 수 있음

source: https://d9249.tistory.com/18?category=848157

: ex) 각 학과는 여러 명의 학생이 소속되지만 학생이 없는 학과가 있을 수 있다. 학생은 반드시 1개의 학과에 소속된다.
=> 학생은 필수적 참여, 학과는 선택적 참여

source: https://d9249.tistory.com/18?category=848157

관계의 종속성

  • 존재 종속
    : 개체 B가 독자적으로는 존재할 수 없고 다른 개체 A의 존재 여부에 의존적이라면, 개체 B가 개체 A에 종속되어 있다고 한다. 이는 개체 A가 존재해야 개체 B가 존재할 수 있고 개체 A가 삭제되면 개체 B도 함께 삭제되어야 함을 의미한다.
  • 다른 개체의 존재 여부에 의존적인 개체 B를 약한 개체(약한 엔티티)라 하고 다른 개체의 존재 여부를 결정하는 개체 A를 오너 개체(강한 엔티티)라 한다.

  • 오너 개체와 약한 개체는 일반적으로 일대다 관계를 가지고, 약한 개체는 오너 개체와의 관계에 필수적으로 참여한다는 특징이 있다.
  • 약한 개체는 자신이 가지고 있는 속성만으로는 식별이 어려워 일반적으로 오너 개체의 키를 포함하여 키를 구성

_

source: https://d9249.tistory.com/18?category=848157

  • 부양가족을 구별하는 방법은 먼저 '직원번호' 속성으로 직원 개체를 식별하고, 식별된 직원의 부양가족 개체를 '이름' 속성으로 구별하면 된다. 여기서 '이름'과 같이 약한 개체를 구별하는 역할을 하는 속성을 구별자(delimiter) 또는 부분키(partial key)라고 한다.

개체-관계 다이어그램

source: https://m.blog.naver.com/gongtong/150135598792



논리적 데이터 모델

개념적 데이터 모델링의 종류는 어떤 DBMS로 구축하든 상관없다. 하지만 E-R 다이어그램으로 표현된 개념적인 구조를 DB에 표현하는 형태를 결정하는 '논리적 데이터 모델링'에서는 DBMS 종류가 중요하다.

E-R 다이어그램으로 표현된 개념적 구조를 DB에 저장할 형태로 표현한 것이 '논리적 구조'이고 논리적 데이터 모델이라 한다. 그리고 이 논리적 구조는 선택한 DBMS에 따라 달라진다.
쉽게 말해 논리적 데이터 모델은 논리적 데이터 모델링의 결과물이고, 사용자가 생각하는 DB의 모습 또는 구조이다. 그리고 논리적 데이터 모델로 표현된 데이터베이스의 구조가 바로 DB 스키마이다.

논리적 구조는 논리적 데이터 모델 외에도 여러 가지 있다.

  • 계층 데이터 모델: DB의 논리적 구조가 트리 형태
  • 네트워크 데이터 모델: DB의 논리적 구조가 그래프 또는 네트워크 형태

DB에 있는 데이터들 간의 관계를 표현하는 방법에 따라 다양한 논리적 데이터 모델이 존재한다. 일반적으로 많이 사용되는 논리적 데이터 모델은 관계 데이터 모델로, DB의 논리적 구조가 2차원 테이블 형태이다.

source: https://velog.io/@mh_go/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EA%B0%9C%EB%A1%A0-5%EC%9E%A5-%EA%B4%80%EA%B3%84-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%AA%A8%EB%8D%B8

0개의 댓글