데이터 모델링


데이터 모델링

정의

  • 일상 생활에서 자주 사용되는 모델링의 정의
    • 우리가 살고 있는 3차원의 현실 세계를 단순화하여 표현
    • 현실 세계를 추상화하여 그 구조를 표현
    • 현실 세계에 존재하는 사물이나 사건에 관한 관점 및 양상을 연관된 주체를 위하여 명확하게 하는것

핵심

  • 복잡한 것을 단순화시켜 표현 -> 명확하게 함

특징

  • 추상화 : 복잡한 것 -> 일정한 형식에 맞게 표현
  • 단순화 : 서로가 약속한 규약을 준수하는 표기법이나 언어로 표현
    • 모두가 알아들을 수 있게 한다는 의미
  • 명확화
    • 명확하게 기술
    • 애매모호함 제거 -> 여러 사람이 이해하기 쉽게

모델링이란 복잡한 현실 세계를 추상화, 단순화 명확화하기 위해 일정한 표기법으로 모델을 표현하는 기법

모델링의 3가지 관점

  • 데이터 관점(Data, What) : 비즈니스와 관련된 데이터는 무엇인지, 데이터 간의 관계는 무엇인지에 대한 관점
  • 프로세스 관점(Process, How) : 해당 일로 인해 어떤 일이 일어나는지에 대한 관점
  • 상관 관점(Data, Process) : 위의 두 관점 간 서로 어떤 영향을 받는지에 대한 관점

데이터 모델링의 정의

  • 현실 세계의 비즈니스를 IT 시스템으로 구현하기 위해 데이터 관점으로 업무를 분석하는 기법
  • 현실 세계의 비즈니스를 약속된 표기법으로 표현하는 과정
  • DB를 구축하기 위한 분석 및 설계의 과정

대부분의 IT 시스템은 관계형 데이터베이스(RDBMS, Relational DataBase Management System) 기반으로 구축

데이터 모델링을 통해 정의된 데이터 모델을 기반으로 물리적인 DB가 구축

SQL문을 활용 -> 데이터가 INSERT 입력, UPDATE 수정, DELETE 삭제, SELECT 조회

데이터 모델의 기능

  • 가시화 : IT 시스템의 모습을 가시화
  • 명세화 : IT시스템의 구조와 발생하는 동작을 명세화
  • 구조화된 틀 제공 : IT 시스템을 구현하는데 필요한 구조화된 틀 제공
  • 문서화 : IT 시스템 구축 시 산출물로 사용되는 문서 제공
  • 다양한 관점 제공 : 다른 영역의 세부사항을 숨김 -> 다양한 영역에 집중할 수 있는 관점 제공
  • 상세 수준의 표현 방법 제공 : 원하는 목표에 따라 구체화된 상세 수준의 표현 방법을 제공

데이터 모델의 중요성

  • 파급효과(Leverage) : 데이터 설계 과정에서 비효율적인 데이터 설계, 업무 요건을 충족하지 못하는 데이터 설계 -> 개발/테스트/오픈/운영의 전 과정에서 엄청난 비용 발생 가능
  • 복잡한 정보 요구사항의 간결한 표현(Conciseness) : 좋은 데이터 모델 설계 -> IT 시스템에서 구현해야 할 정보 요구사항을 명확하고 간결하게 표현 가능
  • 데이터 품질(Data Quality)
    • 데이터 모델의 잘못된 설계로 인해 데이터 중복, 비유연성, 비일관성 발생 가능
    • 데이터 중복, 비유연성, 비일관성으로 인해 데이터 품질 저하될 수 있다.

데이터 모델링의 3단계 진행

  • 현실 세계 -개념 데이터 모델링(추상적)-> 개념적 구조 -논리 데이터 모델링-> 논리적 구조 -물리 데이터 모델링(구체적)-> 물리 구조(데이터베이스)

데이터 모델링의 3단계

  • 개념적 데이터 모델링
    • IT 시스템에서 구현하고자 하는 대상에 대해 포괄적 수준의 데이터 모델링을 진행
    • 전사적 데이터 모델링 시 많이 사용하는 단계
  • 논리적 데이터 모델링
    • IT 시스템에서 구현하고자 하는 비즈니스를 만족하기 위한 기본키, 속성, 관계, 외래키 등을 정확하게 표현하는 단계
  • 물리적 데이터 모델링
    • 논리 데이터 모델을 기반으로 실제 물리 DB 구축을 위해 성능, 저장공간 등의 물리적인 특성을 고려하여 설계하는 단계

프로젝트 생명 주기에서 데이터 모델링

  • 프로젝트 생명 주기의 각 단계는 정보전략계획 -> 분석 -> 설계 -> 개발 -> 테스트 -> 전환/이행 단계에 따라 진행됨
  • 개념적 데이터 모델링 : 정보전략계획, 분석 단계에 포함됨
  • 논리적 데이터 모델링 : 분석 단계에 포함됨
  • 물리적 데이터 모델링 : 설계 단계에 포함됨

데이터 독립성의 필요성

  • 데이터의 독립성 : 하위 단계의 데이터 구조가 변경, 상위 단계에는 영향을 미치지 않음
    • 데이터 구조가 변경되더라도 응용 프로그램 단에는 아무런 영향을 미치지 않도록 하는것

데이터 독립성의 출현 배경

  • 보유한 데이터 복잡도를 낮추고, 중복된 데이터를 줄임 -> IT 시스템의 유지보수 비용 절감
  • 사용자의 요구사항은 지속적으로 발생, 화면과 물리 DB 간 서로 독립성을 유지

  • 문제점
    • 유지보수 비용 증가
    • 데이터 중복성 증가
    • 데이터 복잡도 증가
    • 요구사항 대응 저하
  • 데이터 독립성 확보
    • 각 View의 독립성을 유지, 계층별 View에 영향을 주지 않고 변경 가능
    • 단계별 Schema에 따라 데이터 정의어(DDL)와 데이터 조작어(DML)가 다름을 제공

데이터베이스 3단계 구조

  • ANSI/SPARC 3단계 구성의 데이터 독립성 모델 : 외부 단계, 개념적 단계, 내부적 단계로 구성. 서로 간섭 X
  • 물리적 데이터 독립성 : 내부 스키마가 변경되어도 개념 스키마에 영향 X
  • 논리적 데이터 독립성 : 개념 스키마가 변경되어도 외부 스키마에 영향 X

  • 데이터베이스의 3단계 구조 표
단계명 설명 비고
외부 스키마 각각의 사용자가 보는 DB스키마
개인 사용자 혹은 응용 프로그램 개발자가 접근하는 DB 스키마
사용자 관점
개념 스키마 모든 사용자의 관점을 하나로 통합한 비즈니스 전체의 DB를 기술한 스키마
응용 프로그램 및 사용자들이 필요한 데이터를 통합한 전체 DB를 기술한 것
DB에 저장되는 데이터와 으용 프로그램 및 사용자들 간의 관계를 표현하는 스키마
통합 관점
내부 스키마 DB가 물리적으로 저장된 형식을 표현한 스키마
물리적 하드웨어 장치에 데이터가 실제로 저장되는 방법을 표현한 스키마
물리적 관점

데이터베이스 3단계 구조에서의 2가지 데이터 독립성

독립성 설명 비고
논리적 데이터 독립성 개념 스키마가 변경되어도 외부 스키마에는 영향을 미치지 않도록 지원하는 것
논리적 구조가 변경되어도 응용 프로그램에 영행을 비치지 않음
사용자 특성에 맞는 변경이 가능
통합 구조의 변경이 가능
물리적 데이터 독립성 내부 스키마가 변경되어도 외부/개념 스키마는 영향을 받지 않도록 지원하는 것
저장 장치의 구조 변경은 응용 프로그램/개념 스키마에 영향을 미치지 않음
물리 구조에 영향 없이 개념 구조의 변경이 가능
개념 구조에 영향 없이 물리 구조의 변경이 가능
  • 각 단계별 데이터 독립성의 보장이 가능한 이유
    • 각 단계와 안계 사이를 연결하는 사상(매핑)이 있기 때문
사상 설명 비고
외부적/개념적 사상(논리적 사상) 외부적 뷰와 개념적 뷰의 상호 호환성을 정의 사용자가 접근하는 형식에 따라 다른 타입의 필드를 가질 수 있다. 개념적 뷰의 필드 타입 변화 X
개념적/내부적 사상(물리적 사상) 개념적 뷰와 저장된 데이터베이스의 상호 관련성을 정의하는 사상 저장된 데이터베이스 구조가 바뀐다면 개념적/내부적 사상이 바뀌어야함. 개념 스키마가 그대로 남아있어야 하기 때문

데이터 모델링의 3가지 요소와 데이터 모델링 용어

  • 데이터 모델링의 3가지 요소
    • 업무가 관여하는 어떤 것(Things)
    • 어떤 것이 가지는 성격(Attributes)
    • 업무가 관여하는 어떤 것 간의 관계(Relationships)
  • 데이터 모델링의 3가지 요소가 결합되어 데이터 모델이 탄생.

  • 데이터 모델링 용어
개념 복수/집합 개념 타입/클래스 개별/단수 개념 어커런스/인스턴스
어떤 것(Thing) 엔터티 타입(Entity Type)
엔터티(Entity)
엔터티(Entity)
인스턴스(instance), 어커런스(occurrence)
어떤 것 간의 연관(Association between Things) 관계(Relationship) 페어링(Pairing)
어떤 것의 성격(characteristic of a Thing) 속성(Attribute) 속성값(Attribute Value)
  • 엔터티 타입 : 어떤 것의 전체를 지칭
  • 인스턴스/어커런스 : 엔터티 내에 실제로 추가된 값
  • 페어링 : 관계에 포함된 개별 연관성
  • 속성 : 어떤 것이 가지는 속성
  • 속성값 : 실제로 속성이 표현된 값

ERD를 그리는 작업 순서

  • ERD 데이터 모델을 표기하는 표기법
    • ERD를 그린다 = 데이터 모델링 작업을 한다

ERD를 그리는 순서

  • 비즈니스에 필요한 엔터티를 그린다
  • 1번에서 그린 엔터티를 적절하게 배치한다
  • 각 엔터티 간의 관계를 설정
  • 설정한 관계의 관계명을 기술
  • 설정한 관계의 참여도를 기술
  • 설정한 관계의 필수 여부를 기술

IT 시스템을 구축하는 모든 사람은 적어도 데이터 모델을 정확하게 해석할 수 있어야 함

좋은 데이터 모델의 요소

  • 완전성 : 업무에 필요한 데이터가 모두 정의되어야 함
  • 중복 배제 : 동일한 사실은 단 한번만 저장
  • 업무 규칙 : 데이터 모델 분석만으로도 비즈니스 로직이 이해되어야 함
  • 데이터 재사용 데이터 통합성과 독립성을 고려하여 재사용이 가능해야함
  • 의사소통 : 데이터 모델을 보고 이해 당사자들끼리 의사소통이 가능해야함
  • 통합성 : 동일한 데이터는 유일하게 정의, 다른 영역에서 참조

엔터티

엔터티의 개념

  • 비즈니스 관점에서 IT 시스템을 통해 저장 및 관리해야 하는 집합적인 어떤 것
    • 사람, 사물, 사건, 개념 등의 명사
    • IT 시스템을 통해 관리고 필요한 관심사
    • 저장해야 하는 어떤 것

엔터티와 인스턴스

  • 엔터티 : 인스턴스의 집합
    • 1:M 관계

엔터티의 표기법

  • 모서리가 둥근 사각형을 그림
    • 맨 위에 엔터티명을 기재

엔터티의 특징

  • 비즈니스 요구 조건 만족을 위해 반드시 필요하고, 저장 및 관리하고자 하는 정보
  • 유일한 식별자에 의해 식별이 가능해야함. 집합 내에서 단 1건을 콕 짚어낼 수 있어야 함
  • 영속적으로 존재하는 인스턴스의 집합
  • 엔터티는 비즈니스 프로세스에 의해 반드시 이용되어야 함
  • 엔터티는 반드시 속성을 가지고 있어야 함
  • 엔터티는 다른 엔터티와 최소 1개 이상의 관계가 있어야 함

엔터티의 특징을 모두 만족하지 않아도 엔터티로 도출되는 경우도 있음

특징 설명
업무에서 필요로 하는 정보 비즈니스 요구 조건 만족을 위해 반드시 필요하고 저장 및 관리하고자 하는 정보여야 한다
식별가능해야함 유일한 식별자에 의해 식별이 가능해야 함
인스턴스의 집합 영속적으로 존재하는 2개 이상의 인스턴스 집합이어야 한다
업무 프로세스에 의해 이용 엔터티는 비즈니스 프로세스에 의해 반드시 이용되어야 한다
업무 프로세스에 의해 INSERT, SELECT, UPDATE, DELETE 등이 발생하지 않는 고립된 엔터티의 경우는 엔터티를 제거하거나 누락된 프로세스가 존재하는지 살펴보고 해당 프로세스를 추가해야 한다
속성을 포함 엔터티에는 반드시 속성이 포함되어야 한다
속성을 포함하지 않고 엔터티의 이름만 가지고 있는 경우는 관계가 생략되어 있거나 업무 분석이 미진하여 속성 정보가 누락되는 경우에 해당
관계의 존재 엔터티는 다른 엔터티와 최소 1개 이상의 관계가 있어야 한다

엔터티의 분류

  • 유무형에 따른 분류
구분 예시 설명
유형 사원, 물품, 강사 실체가 존재하고 물리적인 형태가 있으며 안정적이고 지속적으로 활용되는 엔터티
개념 조직, 보험상품 물리적인 형태가 존재하는 것은 아님. 비즈니스적으로 관리해야 할 개념적 정보를 저장하는 엔터티
사건 주문, 청구, 미납 비즈니스를 수행함으로써 발생되는 엔터티
유행/개념 엔터티에 비해 데이터 발생량이 많으며, 다양한 통계 자료에 이용될 수 있음
  • 발생시점에 따른 분류
구분 예시 설명
기본 사원, 부서, 고객, 상품, 자재 비즈니스에서 스스로 태어난 존재에 대한 정보, 독립적으로 생성이 가능
타 엔터티의 부모 역할을 하게됨
중심 계약, 사고, 매출 등등 기본 엔터티로부터 발생되며 비즈니스에 있어서 중심적인 역할을 하는 엔터티
데이터의 양이 많이 발생됨, 타 엔터티와의 관계 속에서 많은 행위 엔터티를 도출시킴
행위 주문목록, 사원변경이력 2개 이상의 부모 엔터티로부터 발생되는 엔터티
다양하고 복잡한 비즈니스를 처리하는 과정에서 데이터양이 많아질 수 있다
상세 설계 단계 혹은 프로세스와 상관 모델링을 진행하면서 도출됨

엔터티의 명명

  • 규칙
    • 가능한한 업무 담당자들이 사용하는 용어를 사용
    • 약어 사용 지양
    • 단수명사 사용
    • 해당 모델 내에서 유일한 이름
    • 생성 의미에 맞게 이름을 부여

속성

개념

  • 비즈니스에서 필요로 함
  • 엔터티에 대한 설명이며 인스턴스의 구성요소가 됨
  • 의미상 더 이상 분리되지 않는 데이터 단위

엔터티, 인스턴스, 속성, 속성값의 관계

  • 속성은 엔터티에 대한 자세하고 구처적인 정보를 나타냄
  • 각각의 속성은 구체적인 값을 갖게 됨
    • 엔터티 : 지하철역
    • 속성 : 노선명, 역명 : 속성
    • 1호선(노선), 신촌(역명) : 속성값
  • 1개의 엔처치는 여려개의 인스턴스를 가질 수 있음
  • 하나의 인스턴스는 여러개의 속성을 가짐
  • 하나의 속성은 단 하나의 속성값을 가짐

속성의 표기법

  • 엔터티 내의 속성 이름을 표현
  • 속성명에 #을 붙여 식별자임을 표시
  • 속성명에 *을 붙이면 필수값
  • ㅇ을 붙임 -선택값

속성의 특징

  • 반드시 비즈니스에서 필요로 하고 IT 시스템에서 저장 및 관리하고자 하는 정보여야 함
  • 정규화 이론에 따라 속성이 속해 있는 엔터티의 주식별자에 함수적 종속성을 가져야 한다
  • 하나의 속성에는 1개의 값만 가진다.
  • 하나의 속성에 여러 개의 값이 있는 다중 값일 경우 별도의 엔터티를 이용하여 분리

속성의 분류

  • 특성에 따른 분류
특성 설명
기본 속성 비즈니스 분석을 통해 도출된 속성
설계 속성 비즈니스 분성르 통해 도출된 것은 아님
데이터 모델 설계를 하면서 도출하는 속성
파생 속성 다른 속성에 의해서 계산이나 변형이 되어 생성되는 속성
  • 엔터티 구성 방식에 따른 분류
구성방식 설명
PK(Primary Key) 속성 엔터티에서 단 하나의 인스턴스를 식별할 수 있는 속성
FK(Foreign Key) 속성 타 엔터티와의 관계를 통해 포함된 속성
일반 속성 엔터티 내에 존재하면서 PK 혹은 FK 속성이 아닌 속성

도메인

  • 각 속성이 갖는 값의 범위 및 유형
  • 각 속성의 속성값은 정의된 도메인 이외의 값을 가질 수 없다

속성의 명명

  • 비즈니스에 사용하는 이름을 부여
  • 속성명을 서술식으로 명명X
  • 속성 명명시 약어 사용 지양
  • 전체 데이터 모델 내에서 유일한 이름의 속성명으로 명명

관계

관계의 정의

  • 엔터티끼리 상호 연관성이 있는 상태
  • 데이터 모델 내에 존재하는 엔터티 간 논리적인 연관성

관계의 페어링

  • 관계 페어링 : 엔터티 안에 인스턴스가 개별적으로 관계를 가지는 것
  • 이것의 집합을 관계로 표현
  • 개별 인스턴스가 각각 다른 종류의 관계를 가지고 있다면 두 엔터티 사이에 2개 이상의 관계가 형성될 수 있음

관계의 표기법

  • 관계의 표기 시 관계 차수 및 관계 선택사양을 명확하게 해야 함
  • 관계차수 : 2개의 엔터티 간 관계에서 참여자의 수를 표현하는 것
    • 1:1 관계 : 모든게 실선으로 표현됨
    • 1:M 관계 : 포함하는 엔터티는 점선으로 이어가고 포함되는 엔터티는 실선으로 이어감. 포함되는 쪽은 까치발
    • M:M 관계 : 다 점선에 까치발
  • 관계 선택사양
    • 필수참여관계
      • 필수적으로 있어야 하는 관계 ex) 열차의 문이 닫혀야 열차 출발. 이 때 열차문의 완전한 닫힘과 출발은 필수적인 관계
      • 실선
    • 선택참여관계
      • 관련은 있지만 필수적인 상황은 아님 ex) 열차의 안내방송과 열차의 출발은 관련이 있지만 필수적인 관계는 아님. 안내방송이 안나온다고 열차가 출발을 못하는 것이 아님.
      • 점선

관계정의 시 체크 사항

  • 아래의 체크사항을 만족하는지 확인해야함
    • 2개의 엔터티 사이에 관심 있는 연관 규칙이 존재하는가
    • 2개의 엔터티 사이에 정보의 조합이 발생되는가
    • 업무기술서, 장표에 관계연결에 대한 규칙이 서술되어 있는가
    • 업무기술서, 장표에 관계연결을 가능하게 하는 동사가 있는가

식별자

식별자의 개념

  • 단 하나의 인스턴스를 구별해낼 수 있는 논리적인 이름
  • 엔터티의 각 인스턴스를 개별적으로 식별하기 위해 사용되는 단 하나의 속성 혹은 속성들의 집합

식별자의 특징

특징 내용 예시
유일성 엔터티 내에 존재하는 각각의 인스턴스 집합은 주식별자에 의해 유일하게 구분할 수 있다 사원엔터티의 사원번호 속성은 주식별자이다.
최소성 유일성을 만족한다면 주식별자를 구성하는 속성의 수는 최소한의 수로 이루어져야함 사원번호만으로도 충분, 사원분류코드까지 추가되면 최소성을 어김
불변성 엔터티 내 특정 인스턴스에 주식별자가 한번 정해지면 그 값은 변하지 말아야 한다 한번 정해진 사원번호의 값은 다른 값으로 변경되지 말아야 함
존재성 주식별자가 지정되면 반드시 데이터 값이 존재해야 함
주식별자로 정해진 속성은 반드시 데이터 값이 존재해야함. NULL 허용 X
사원번호가 없는 직원은 없음

식별자의 분류

  • 대표성 여부
    • 주식별자
      • 엔터티 내에서 각각의 행을 구분할 수 있는 구분자.
      • 다른 엔터티와 참조관계를 가질 때 연결할 수 있는 식별자
    • 보조식별자
      • 엔터티 내에서 각각의 행을 구분할 수 있다
      • 다른 엔터티와 참고관계를 가질 때 연결 불가능
  • 스스로 생성 여부
    • 내부식별자
      • 엔터티 내부에서 스스로 만들어지는 식별자
    • 외부식별자
      • 다른 엔터티와의 관계를 통해 다른 엔터티로부터 받아오는 식별자
  • 속성의 수
    • 단일식별자
      • 하나의 속성으로 구성된 식별자
    • 복합식별자
      • 둘 이상의 속성으로 구성된 식별자
  • 대체 여부
    • 본질식별자
      • 비즈니스에 의해 만들어지는 식별자
    • 인조식별자
      • 비즈니스적으로 만들어지지는 않지만 본질식별자가 복잡한 구성을 가지고 있기 때문에 인위적으로 만든 식별자

식별자 도출 기준

  • 비즈니스에서 자주 이용되는 속성을 주식별자로 지정
  • 명칭, 장소와 같이 이름으로 기술되는 속성은 가능하면 주식별자로 하지 않음
  • 주식별자를 복합식별자로 할 경우 지나치게 많은 속성이 포함되지 않도록 한다

식별자 관계와 비식별자 관계의 결정

  • 외부식별자 : 자기 자신의 엔터티에서 필요한 속성이 아니라 다른 엔터티와의 관계를 통해 자식쪽 엔터티에 생성되는 속성
    • 데이터베이스 생성 시 외래키 역할을 함
  • 식별자 관계 : 자식 엔터티의 주식별자로 부모 엔터티의 주식별자가 상속이 되는 경우
    • 자식 엔터티에서 외부식별자가 주식별자 역할을 함
    • 부모엔터티의 식별자가 자식 엔터티에서도 식별자 역할을 함
  • 비식별자 관계 : 부모 엔터티로부터 속성을 물려받았지만 자식 엔터티의 주식별자로 사용하지 않고 일반적인 속성으로만 사용하는 경우
    • 비식별자 관계를 갖는 경우
      • 자식 엔터티에서 받은 속성이 반드시 필수가 아니어도 무방 -> 부모 없는 자식이 생성될 수 있는 경우
      • 부모 엔터티의 주식별자를 자식 엔터티의 주식별자 속성으로 사용해도 되지만, 자식 엔터티에서 별도의 주식별자를 생성하는 것이 더 유리하다고 판단될 때, 비식별자 관계에 의한 외부식별자로 표현

식별자 관계로만 설정할 경우의 문제점

  • PK속성의 수가 지속적으로 증가 -> SQL문의 복잡성 증가 -> 조인 조건이 누락되는 실수가 발생할 확률이 높아짐

식별자 관계 VS 비식별자 관계

  • 식별자 관계/비식별자 관계 연결 고려사항
항목 식별자 관계 비식별자 관계
목적 강한 연결 관계를 표현 약한 연결 관계를 표현
자식 주식별자 영향 부모 엔터티의 주식별자 속성이 자식 엔터티의 주식별자의 구성에 포함 부모 엔터티의 주식별자 속성이 자식 엔터니의 일반 속성이 됨
연결 고려사항 부모 엔터티에 종속되는 경우에 사용
자식 엔터티의 주식별자 구성에 부모 엔터티의 주식별자 속성이 필요한 경우에 사용
부모 엔터티에게서 상속받은 주식별자 속성을 타 엔터티에 이전이 필요한 경우 사용
부모/자식 간 약한 종속 관계인 경우에 사용
자식 엔터티의 주식별자 구성을 독립적으로 구성할 경우에 사용
부모 엔터티로부터 상속받은 주식별자 속성을 타 엔터티에게 이전하지 않도록 차단이 필요한 경우에 사용
부모 엔터티의 주식별자가 NULL이 허용되는(선택 관계) 경우에 사용