본문 바로가기
공부/데이터 베이스

<핵심 데이터 모델링> - 데이터 모델링이란?

by xladmt 2024. 7. 1.

데이터 모델이란?

현실 세계의 정보나 데이터를 시스템으로 구축하기 위해 추상화하여 체계적으로 표현한 모형

 

데이터 모델링이란?

영속성을 갖는 데이터에 대한 시스템 구조를 사람이 이애할 수 있도록 형상화하는 과정

 

*용어 구분

ER : 엔티티 간의 관계
ER모델 : ER을 표현한 것
ERD : 엔티티 간 관계를 그림으로 표현
*Entity(엔티티) : 속성들의 집합

 

 

ER 모델의 구성요소

  • 엔티티(Entity)
  • 관계(Relationship)
  • 속성(Attribute)
  • 식별자(Identifier)

 

엔티티(Entity)

정의)

엔티티란? 데이터의 집합이다. 쉽게 말해서 업무를 구현하는 데 필요하고 관리해야 하는 주체, 대상, 행위 등의 모든 집합적인 것(Thing)으로 정의할 수 있다.

 

특징) 

1. 적어도 둘 이상의 인스턴스가 존재할 수 있어야 한다.

2. 최소한 둘 이상의 속성이 있어야 한다.

3. 반드시 각 인스턴스를 식별할 수 있는 속성이나 관계가 하나 이상 정의되어야 한다.

4. 해당 업무에서 필요하고 관리하고자 하는 정보이어야 한다.

 

엔티티의 확장)

슈퍼타입 엔티티 : 하나 이상의 서브타입 엔티티와 관계된 일반화된 엔티티

서브타입 엔티티 : 각각의 서브 타입에만 존재하는 고유한 속성을 관리하며, 슈퍼타입의 식별자, 속성, 관계 등 모든 특성을 상속받는다.

 

  • 일반화
    • 엔티티 각각이 가지고 있는 고유한 특징을 일반화하여 공통의 속성으로 재정의한 것
    • 보편적인 의미보다는 공통적인 의미에 더 가깝다.
    • 두 개 이상의 하위 수준 엔티티를 결합하여 상위 수준의 엔티티로 통합하는 상향식 접근 방식

하위 수준 엔티티 일반화

  • 특수화
    • 하나의 상위 수준 엔티티를 두 개 이상의 하위 수준 엔티티로 분할하는 하향식 접근 방식

 

관계(Relationship)

관계는 관계수, 선택성, 식별성, 관계명 등으로 구성된다.

 

IE 표기법

 

구성요소 설명
관계수
(cardinality)
어떤 엔티티의 인스턴스 하나가 다른 엔티티 몇개(1, m) 인스턴트와 대응될 수 있는지를 표시한 것으로, 상대 엔티티 쪽에 까마귀 발(Crow's Foot)로 표시한다. 최대 인스턴스 수와 관련이 있다.
ex) 1:1, 1:M, M:N
선택성
(optionality)
해당 엔티티 인스턴스에 대해 상대 엔티티에 인스턴스가 반드시 존재해야 하는지(Mandatory),  존재하지 않아도 되는지(Optional) 표시한다. 최소 인스턴스 수와 관련이 있다.
ex) 양쪽 필수, 한쪽 필수, 양쪽 선택
식별자 상속
(Identifier Inheritance)
엔티티 간의 관계를 정의하면서 엔티티의 식별자를 다른 엔티티에서 상속받을 때 식별자로 상속받을지(식별관계), 일반 속성으로 상속받을지(비식별관계) 표시한다.
관계명
(Relationship Name)
관계의 의미나 이름을 표시한다. 의미를 명확하게 표시한다는 측면에서 양쪽에 모두 기술하기도 하며, 관계선만으로도 의미가 통하는 경우 이름을 생략해도 무방하다.
ex) 관계 유형 - 기본 관계, 재귀적 관계, 병렬 관계, 슈퍼타입/서브타입 관계

 

* 관계(교차) 테이블은 언제 사용할까?

① m:n 관계 해소
② 병렬 관계 해소

 

 

속성(Attribute)

  • 데이터를 표현하는 가장 작은 단위
  • 속성이 가지는 의미를 통해 엔티티 특성이나 상태를 알 수 있음.
  • 하나의 엔티티는 두 개 이상의 속성을 가지며, 속성명, 식별자여부(PK), 옵셔널리티(Null/Not Null), 도메인(데이터 혀식과 범위) 등으로 구성

 

속성의 분류)

단순 속성 속성을 더 분해할 수 없는 원 값을 갖음
복합 속성 단순 속성들의 조합
저장 속성 원래 존재하는 속성          ex)상품단가, 주문 수량, ...
파생 속성 저장 속성이나 다른 파생 속성으로부터 파생된 속성(저장되어 있지 않은 속성)       ex) 상품단가*주문수량
단일 값 속성 성별, 생일처럼 사원에 대해 하나의 값만 가지는 속성
다중 값 속성 하나의 속성이 여러 개의 값을 가지는 속성

 

 

식별자(Identifier)

엔티티에서 인스턴스를 개별적으로 식별할 수 있는 속성(들)

 

식별자의 특징)

  • 유일성(Uniqueness) : 사원 엔티티의 사원번호 속성처럼 엔티티의 모든 인스턴스를 유일하게 식별할 수 있어야 함.
  • 최소성(Minimum) : 식별자를 구성하는 속성은 유일성을 만족하는 최소 속성들로 구성해야 함. (부서코드+사원번호 또는 사원번호 속성으로 유일한 경우 최소성의 원칙에 따라 사원번호 속성을 식별자로 함)
  • 불변성(Stability) : 일단 엔티티의 식별자를 지정하면 그 식별자의 값은 변하지 않아야 함
  • 존재성(Mandatory) : 모든 직원은 사원번호를 가지 듯이 식별자는 반드시 데이터 값이 존재해야 함.

 

  • 고유 식별 여부
    • 본질 식별자 : 업무에서 일반적으로 통용되는 식별자 ex) 주민등록번호, 사원번호
    • 인조 식별자 : 업무에서 사용하진 않지만, 데이터를 효율적으로 관리하기 위해 별도로 추가한 식별자 ex) 주문일련번호, 입출급일련번호
  • 대표성 여부
    • 주 식별자 
    • 대체(보조) 식별자

          * 어떤 본질 식별자 또는 인조 식별자가 주 식별자일 때 다른 본질 식별자는 대체 식별자가 됨

 

 

관계형 데이터 모델

릴레이션의 구성

 

 

 

키 종류)

슈퍼키
(Super Key)
 튜플을 고유하게 식별 할 수 있는 속성 집합을 말한다. 릴레이션은 한 개 이상의 슈퍼키를 가질 수 있으며, 슈퍼키 값은 모든 튜플에서 유일해야 한다.
후보키
(Candidate Key)
 튜플을 고유하게 식별 할 수 있는 최소한의 속성 집합을 후보키라고 한다. 후보키는 유일성과 최소성을 가진다.
기본키
(Primary Key)
 릴레이션은 하나 이상의 후보 키가 있을 수 있으며 그 중 하나만을 기본키로 선택할 수 있다. 후보키와 마찬가지로 유일성, 최소성을 가진다.
대체 키
(Alternate Key)
 후보키 중에 기본키가 아닌 후보 키가 대체키에 해당한다.
외래키
(Foreign Key)
 어떤 릴레이션의 어트리뷰트 값이 다른 릴레이션에 속한 어트리뷰트의 기본키를 참조하는 경우를 말한다.

 

 

제약조건)

  • 키 제약조건 : 키는 튜플을 유일하게 식별할 수 있는 어트리뷰트들로 구성하며, 다른 튜플의 키 값과 중복된 값이 있어서는 안된다.
  • 실체 무결성 : 릴레이션의 기본키를 구성하는 모든 어트리뷰트는 Null 값이 아니어야 하고, 릴레이션 내에서 오직 하나의 값만 존재해야 한다.
  • 영역 무결성 : 릴레이션 내의 각 어트리뷰트 값은 반드시 정의된 도메인에 속한 값이어야 한다.
  • 참조 무결성 : 자식 릴레이션의 외래키는 참조하는 부모 릴레이션의 기본키 값 이외의 값을 가질 수 없으며, 두 릴레이션 값의 일관성을 유지해야 한다.

 

 

함수 종속

관계형 데이터베이스를 설계할 때 정규화 과정을 거치게 되는데 이 때 함수 종속성(어떤 기준으로 쪼갤 것인가) 개념이 중요하게 사용된다.

 

완전 함수종속 릴레이션에서 속성 집합 Y가 속성 집합 X에 함수적으로 종속되어 있지만, 속성 집합 X의 전체가 아닌 일부분에는 종속되지 않음을 의미. Y는 X에 대하여 완전 함수 종속성을 갖는다.
ex) 당첨여부는 {고객아이디, 이벤트 번호}에 완전 함수 종속됨
부분 함수종속 릴레이션에서 속성 집합 Y가 속성 집합 X의 전체가 아닌 일부분에도 함수적으로 종속됨을 의미
ex) 고객 이름은 {고객 아이디, 이벤트 번호}에 부분 함수 종속됨
이행적 함수종속 함수 종속 관계 X → Y와 Y → Z가 성립되면, 논리적 결과로 X → Z가 성립한다. 이 때 속성 Z는 X에 이행적 함수 종속성을 갑는다. 

 

 

정규화

  • 데이터를 입력, 수정, 삭제할 때 발생하는 이상 현상을 최소화하기 위해 좀 더 작은 단위의 테이블로 설계하는 과정

 

장점) 

  1. 데이터를 입력, 수정, 삭제하는 과정에서 발생하는 이상 현상을 최소화할 수 있다.
  2. 상호 종속성이 강한 데이터 요소들을 분리하여 독립된 개념(엔티티)으로 정의함에 따라 높은 응집력과 낮은 결합도 원칙에 충실하면서, 데이터 구조 변경 시 유연성이 증가한다.
  3. 개념을 좀 더 작은 단위로 세분할 경우 해당 개념에 대한 재활용성이 높아진다.
  4. Non-key 데이터 요소가 한 번만 표현됨에 따라 중복을 최소화하고, 데이터 품질 문제를 줄일 수 있으며, 저장공간을 최소화 할 수 있다.
  5. 데이터 입력, 수정, 삭제에 대한 작업을 최소화하여 수행속도가 향상된다.

 

 

 

 

[참고]

<핵심 데이터 모델링 - 유동오 저>