SKN/02. DB

03. DB Modeling 개요

claovy☘️ 2025. 2. 19. 09:44

1. 모델링

01. 모델링의 필요성

  • 설계도 없이 디딤돌을 만들어 내는 것처럼, 구상하지 않으면 정확한 건설이 힘들다.
  • 이와 같이 복잡한 현실 세계를 단순화하고 목적에 부합하며 정확히 구현할 수 있다.

02. 모델링의 특징

  • 단순화 : 목적에 부합하는 필요한 것만 선택하는 것
  • 추상화 : 현실 세계의 현상을 일정한 형식의 표기법으로 묶어낸 것
  • 명확화 : 누구나 이해할 수 있도록 애매함을 제거하고 정확하게 기술하는 것

2. 데이터 모델링

01. 데이터 모델링의 필요성

  • 파일저장
    • 어플리케이션에서 사용하는 데이터를 메모리에서만 관리하기 때문에 컴퓨터가 꺼지면 데이터가 사라진다.
    • 따라서 데이터 소멸 방지를 위해 디스크에 파일 형식으로 저장하고 읽고 쓴다.
    • 시스템 장애나 파일 입출력 도중 문제가 발생했을 때 원상태로 복구 시키기 힘들다.
    • 이진 파일은 사람이 읽기 힘들다
  • 엑셀 파일저장
    • Excel은 컬럼과 컬럼에 들어갈 데이터가 많아질수록 저장할 데이터가 기하급수적으로 많아진다.
    • 하나의 테이블로 관리 시, 데이터가 늘어날 수록 처리 시간이 많이 걸리고 관리가 힘들다.
    • 중복 데이터 발생 시 삭제, 수정이 번거롭다
  • 관계형 데이터베이스 저장
    • 각 데이터들의 종류를 한눈에 파악하기 쉽다
    • 테이블 간의 관계를 통해 연관 있는 데이터들이 어떻게 누적되는지 파악하기 쉽다
    • 중복이 제거되어 중복 데이터로 인한 문제를 해결할 수 있다.

02. 소프트웨어 개발 절차에 따른 정보 시스템 구축 절차

폭포수 모델 방식의 개발 절차

  • 데이터 관점 모델링 : 업무가 어떤 데이터와 관련이 있는지 또는 데이터 간의 관계는 무엇인지 ERD를 도출하고 물리적 설계와 DB 튜닝까지의 과정이 포함된다.
  • 프로세스 모델링 : 업무가 어떻게 구성되고, 업무의 처리 절차, 방법이 어떻게 되는지를 모델로 표현하는 단계
  • 상관 모델링 : 데이터를 가지고 하는 일에 따라 데이터가 어떻게 영향을 받고 있는지 모델링 하는 단계

03. 데이터 모델링의 이해관계자

  • 정보 시스템을 구축하는 모든 사람은 데이터 모델링을 하거나 모델을 해석할 줄 알아야 함!
  • IT가 아니어도 정보화를 추진하는 위치에 있는 사람은 데이터 모델링에 대한 지식 정도는 알자!

04. 데이터 모델 표현법

IE 표기법 vs 바커 표기법

  • IE 표기법은 범용적인 표기법
  • 바커 표기법은 데이터 아키텍쳐 전문가 관련 자격에서 적용되며 IE 표기법에 비해 논리 모델링 단계에서 배타 관계나 슈퍼 서브 속성에 대한 표기가 있어 더 구체적으로 표현 가능하다

05. 관계형 모델

01. 테이블 구조

 

02. 무결성
  • 무결성 : 데이터 값이 완전하고 정확한 상태를 의미
  • 정합성 : 데이터가 서로 모순 없이 일관되서 일치해야 함을 의미
무결성 종류 무결성 특징
엔터티 무결성 모든 인스턴스는 고유해야 하며 인스턴스를 대표하는 속성에는 널 값을 가지면 안된다는 의미
참조 무결성 엔터티의 외래 식별자 속성은 참조하는 엔터티의 주 식별자 값에 포함되거나 널이어야 함을 의미
도메인 무결성 속성 값과 관련된 것으로 특정 속성 값은 같은 데이터 타입, 길이, 널 여부, 중복 값 허용, 기본 값 등 동일한 범주의 값만 존재해야 함을 의미
업무 무결성 기업에서 업무를 수행하는 방법이나 데이터를 처리하는 규칙을 의미

3. 엔터티

01. 엔터티?

💡 업무의 관심 대상이 되는 정보를 갖고 있거나 그에 대한 정보를 알아야 하는 유, 무형의 사물(개체)를 의미한다.

 

02. 엔터티 도출

[엔터티 도출 과정]

1. 업무 분석 단계 이후, 분석자료로부터 엔터티를 도출한다.

2. 일련의 과정을 거쳐 엔터티 기술서를 작성하게 된다(엔터티 후보 풀과 리스트 그리기, 명사가 속성인지 엔터티인지 구분)

 

[엔터티 도출 원칙]

  • 업무의 관심 대상이 되는 사물이어야 된다.
  • 두 개 이상의 인스턴스를 소유해야 한다.
  • 데이터의 정체성이 분명해야 한다.
    • 데이터 종속성에 의해서 하나의 주제만을 관리하는 정의가 명확한 모델
  • 엔터티의 인스턴스를 식별할 수 있는 식별자(Identifier)가 존재해야 한다.
  • 동일한 성격의 데이터는 유일해야 한다.
  • 엔터티 명은 관리하고자 하는 데이터의 성격(주제)을 가장 잘 표현하는 이름으로 한다.

03. 엔터티 종류

실체 엔터티
  • 보이는 물체의 본질적인 성격을 관리하는 엔터티이다.
  • 수표, 사원, 창고, 제품, 고객, 학생, 입출금전표 등

 

기준 엔터티
  • 실체나 행위 데이터의 기준이 되는 데이터를 관리하는 엔터티이다.
  • 업무를 수행하면서 참조하는 데이터가 있어 참조 엔터티라고도 불린다.
  • 기준이 되는 엔터티의 데이터들이 여러 개면 어떤 것을 참조해야 할지 알 수 없으므로 하나만 존재해야 한다.
  • 우편번호, 이자율, 수수료율, 영업일자 등

 

행위 엔터티
  • 행위나 활동에 의해 발생된 원천 데이터를 관리하는 엔터티이다.
  • 계약, 주문, 신청, 입금 등

 

가공 엔터티
  • 원천 데이터가 아닌 원천 데이터를 추출, 집계한 데이터를 관리하는 엔터티이다.
  • 가공 엔터티에 데이터를 쌓는 방법은 두 가지가 있다.
    • 트랜잭션 데이터가 발생할 때마다 집계하는 방법
    • 특정 시점에 해당하는 기간의 데이터를 집계하는 방법
  • 집계, 임시, 요약 등
  •  

4. 속성 종류

속성은 엔티티가 가지는 항목이며, 인스턴스의 구성 요소이다

분해 여부에 따른 속성의 종류
단일 속성 - 하나의 의미로 구성된 속성
- 부서명, 상품명, 재고 수량 등
복합 속성 - 두 개 이상의 세부 속성으로 구성된 속성
- 전화번호나 주소처럼 의미에 따라 별도로 나눠서 관리할 수도 있고 하나로 관리할 수도 있음
다가 속성 - 속성에 여러 값을 지니고 있는 속성
- 주문내역, 입출고 내역 등
- 1정규형에 의하면 속성은 단일값을 가져야하므로 분리해서 관리해야 함

 

특성에 따른 속성의 종류
기초 속성 - 엔터티의 본질을 설명하는 속성
- 기초 속성만으로도 엔터티의 성격을 알 수 있음
관계 속성 - 타 엔터티와의 연관성을 나타내는 속성
- 관계속성은 다른 엔터티의 주 식별자 속성
추출 속성 - 원본 속성의 값을 연산해서 채울 수 있는 속성

5. 식별자

주식별자
  • 엔터티에 소속된 인스턴스들을 구별하는 기준 역할을 하는 속성이다.
  • 주식별자는 유일성, 최소성, 불변성, 존재성의 특징을 갖는다.
    • 유일성 : 주식별자에 의해 엔티티 내에 모든 인스턴스들을 유일하게 구분되어야 한다. (중복되지 않는다.)
    • 최소성 : 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 한다.
    • 불변성 : 주식별자가 한번 특정 엔터티에 지정되면 그 식별자의 값은 변하지 않아야 한다.
    • 존재성 : 주식별자가 지정되면 반드시 데이터 값이 존재해야한다. (NULL은 허용되지 않는다.)
  • 주식별자는 하나가 아닌 여러 속성일 수 있다. (복합키)
  • 엔터티의 속성 중 주식별자 속성이 없다면 새로운 속성을 만들어 준다.
외래식별자
  • 관계가 있는 두 엔터티를 부모, 자식 엔터티로 구분한 후 부모의 주식별자와 공통 속성이 자식에게도 존재하면 해당 속성을 외래식별자로 지정한다.
  • 자식 엔터티에 부모 엔터티 주식별자 공통 속성이 없을 경우 자식에게 속성을 추가한 후 외래식별자로 지정한

6. 도메인

 

01. 도메인이란?

하나의 속성이 취할 수 있는 동일한 타입의 원자값들의 집합이다.

 

02. 도메인 도출 및 할당

  • 도메인은 다음과 같은 절차로 도출할 수 있다.
    • 모든 속성을 엔터티별로 나열한다.
    • 합성명사를 분리한다.
    • 공통적인 합성명사와 명사들을 나열한다.
    • 공통적인 명사를 도메인으로 설정하고 속성을 도메인에 할당한다.
    • 각 도메인별로 데이터 타입과 길이를 지정한다.

 


7. 관계

01. 관계란?

  • 두 개 이상의 엔터티 간에 존재하는 연관성을 나타낸다.
  • 하위(자식) 엔터티의 속성으로 관리될 때만 관계를 표현한다.
  • 관계에는 종속관계와 참조 관계가 있다.
    • 종속관계 : 부모 엔터티와 자식 엔터티 간의 관계로 부모 엔터티가 존재해야 자식 엔터티가 존재할 수 있다. 반대로 말하면 부모 엔터티 없이 관계를 삭제하고 자식 엔터티만 존재할 수 없다.
    • 참조관계 : 엔터티간에 연관성이 존재하긴 하지만 다른 엔터티가 없다고 존재할 수 없는 관계는 아니다. 단순히 참조 데이터를 관리하므로 관계를 삭제해도 한 속성에 대한 연관성만 문제가 되고 하위 엔티티 존재해는 지장이 없다

02. 관계의 구성 요소

03. 카디널리티

  • 카티널리티는 릴레이션에서 튜플의 개수이자 상위(부모) 엔터티의 인스턴스 하나가 하위(자식)엔터티의 인스턴스 몇 개와 관련이 있는지 혹은 그 반대를 나타내는 것이다.
  • 카디널리티를 통해 관계가 있는 두 엔터티는 일대일(1:1), 일대다(1:M), 다대다(M:M) 관계를 나타낸다.
  • 다대다(M:M) 관계이면 교차 엔터티(Association Entity)를 통해 다대다 관계를 일대다(1:M) 관계로 해소해 주어야 한다.

04. 옵셔널리티

  • 상위(부모) 엔터티와 하위(자식)엔터티가 서로 연관되는 값이 반드시 존재해야 하는지 존재하지 않아도 되는지를 의미한다.
  • 서로 연관되는 값이 반드시 존재하면(최소 1개 이상) Mandatory이다.
  • 서로 연관되는 값이 반드시 존재하지 않아도 된다면(최소 0개 이상) Optional이다.

05. 관계 디그리

  • 하나의 관계에 포함된 엔터티의 개수를 뜻한다.
  • 하나의 관계는 하나의 엔터티나 두개의 엔터티 뿐 아니라 3개 이상의 엔터티에서도 발생한다.
    • 1개체 관계 (Unary Relationship): 한 개의 엔터티가 연관된 관계(재귀 관계(Recursive Relationships))
    • 2개체 관계 (Binary Relationships): 두 개의 엔터티가 연관된 관계
    • 3개체 관계 (Ternary Relationships): 세 개의 엔터티가 연관된 관계
    • N개체 관계 (N-ary Relationships): N개의 엔터티가 연관된 관계

8. 특별한 관계의 종류

01. 일대일 관계

  • 상위(부모)엔터티의 하나의 인스턴스가 하위(자식)엔터티의 하나의 인스턴스와 연관되는 관계를 말한다.
  • 성능이나 업무 규칙에 의해 일대일 관계를 채택할 수 있다.
  • 데이터의 성격이 다르면 업무를 표현하기 위해서 일대일 관계를 채택할 수도 있다.
  • 유사한 속성을 과도하게 일대일로 분해하는 것은 유의해야 한다.

 

02. 배타 관계

  • 두 개 이상의 상위(부모) 엔터티와 관계를 가지며 상호 배타적(하위(자식)엔터티의 하나의 인스턴스가 한번에 하나의 부모 엔터티와 관계를 가지게 됨)일 때의 관계를 말한다.

 

 

03. 재귀 관계

  • 하나의 엔터티에서 인스턴스가 같은 엔터티의 다른 인스턴스와 관계를 가진다.
  • 주로 계층 구조로 상위와 하위의 개념인 계층 구조(레벨이 존재하는 개념)가 생기는 데이터를 관리하는데 사용되며 엔터티의 개수가 늘어나 조인해야 할 엔터티가 늘어나는 것을 방지해준다.

'SKN > 02. DB' 카테고리의 다른 글

07. DDL(Data Definition Language)  (0) 2025.02.19
06. 정규화  (0) 2025.02.19
05. 이상(Anomaly)  (0) 2025.02.19
02. MySQL 개요  (0) 2025.02.18
01. DB 개요  (0) 2025.02.18