대량 데이터에 따른 성능

대량의 데이터가 하나의 테이블에 집약되어 있고 하나의 하드웨어 공간에 저장되어 있으면 성능저하를 피하기 힘들다.

  • 로우체이닝(Row chaining)현상

로우길이가 너무 길어서 데이터 블록 하나에 데이터가 모두 저장되지 않고 두개 이상의 블록에 걸쳐 하나의 로우가 저장되어 있는 형태.

  • 로우마이그레이션(Row migration)현상

데이터 블록에서 수정이 발생하면 수정된 데이터를 해당 데이터 블록에서 저장하지 못하고 다른 블록의 빈 공간을 찾아 저장하는 방식.

대량 데이터 처리방법 → 파티셔닝 - Partitioning

- LIST Partitoning

지점, 사업소, 사업장, 핵심적인 코드값 등으로 PK가 구성되어 있고 대량의 데이터가 있는 테이블이라면 LIST Partitioning 적용가능

하나의 테이블에서 데이터를 처리하기에는 SQL문장의 성능이 저하되어 지역을 나타내는 사업소코드 별로 적용

→ 대용량 데이터를 특정값에 따라 분리 저장할 수는 있으나 RANGE와 같이 데이터 보관주기 따라 쉽게 삭제하는 기능은 제공될 수 없다.

- RANGE Partitioning

요금테이블에 PK가 요금일자+요금번호로 구성되어 있는 경우. 요금의 특성상 항상 월단위로 데이터 처리를 하는 경우가 많으므로 PK인 요금일자의 년+월을 이용하여 12개의 파티션 테이블 생성.

가장많이 사용되는 파티셔닝 기법이며 대상 테이블이 날짜 또는 숫자값으로 분리가 가능하고 각 영역별로 트랜잭션이 분리된다면 RANGE를 사용하는 것이 유리하다.

RANGE 파티셔닝은 데이터보관주기에 따라 테이블에 데이터를 쉽게 지우는 것이 가능하므로 테이블 관리가 매우 용이하다.

- HASH Partitioning

지정된 Hash 조건에 따라 해쉬 알고리즘이 적용되어 테이블이 분리되며 설계자는 테이블에 데이터가 정확하게 어떻게 들어있는지 알 수 없다.

분산 데이터베이스와 성능

데이터베이스를 연결하는 빠른 네트워크 환경을 이용하여 데이터베이스를 여러 지역 여러 노드로 위치시켜 사용성/성능 등을 극대화 시킨 데이터베이스라고 정의할 수 있다.


  • 분산데이터베이스의 투명성(Transparancy)

- 분할투명성

하나의 논리적 Relation이 여러 단편으로 분할되어 각 단편의 사본이 여러 site에 저장

- 위치 투명성

사용하려는 데이터의 저장 장소 명시 불필요. 위치정보가 System catalog에 저장되어 있어야 한다.

- 지역사상 투명성

지역 DBMS와 물리적 DB사이의 Mapping보장. 각 지역시스템 이름과 무관한 이름 사용가능

- 중복 투명성

DB객체가 여러 site에 중복되어 있는지 알 필요가 없는 성질

- 장애 투명성

구성요소(DBMS, Computer)의 장애에 무관한 Transaction의 원자성 유지

- 병행 투명성

다수 Transaction 동시 수행시 결과의 일관성 유지


  • 분산 데이터베이스 적용기법

- 테이블 위치 분산

테이블 위치 분산은 테이블의 구조는 변하지 않는다. 설계된 테이블의 위치를 각각 다르게 위치시키는 것이다.

ex) 자재품목은 본사에서 구입하여 관리하고 각 자사별로 자재품목을 이용하여 제품을 생산할 경우

테이블별 위치 분산은 정보를 이용하는 형태가 각 위치별로 차이가 있을 경우에 이용한다. 테이블의 위치가 위치별로 다르므로 테이블의 위치를 파악할 수 있는 도식화된 위치별 DB문서가 필요하다.

- 테이블 분할(Fragementation) 분산

단순히 위치만 다른 곳에 두는 것이 아니라 각각의 테이블을 쪼개어 분산하는 방법이다. 테이블 분할 분산 방식의 종류로는 수평&수직 분할이 있다.

- 수평분할을 이용하는 경우는 각 지사(Node)별로 사용하는 로우(Row)가 다를때 이용한다.

각 지사에 존재하는 테이블에 대해서 통합처리를 해야하는 경우는 조인(Join)이 발생하여 성능 저하가 예상되므로 통합처리 프로세스가 많은지를 먼저 검토한 이후에 많지 않은 경우에 수평분할해야한다.

한 시점에는 한 지사(Node)에서 하나의 데이터만이 존재하므로 데이터의 무결성은 보장되는 형태


- 수직분할을 이용하는 경우는 각 지사(Node)에 따라 테이블 칼럼을 기준으로 칼럼을 분리한다.

각각의 테이블에는 동일한 Primary key구조와 값을 가지고 있어야 한다.

테이블 전체 칼럼 데이터를 보기 위해서는 각 지사(Node)별로 흩어져 있는 테이블들을 조인(join)하여 가져와야 하므로 가능하면 통합하여 처리하는 프로세스가 많은 경우에는 이용하지 않는다.

- 테이블 복제(Replication) 분산

동일한 테이블을 다른 지역이나 서버에서 동시에 생성하여 관리하는 유형이다.

- 부분복제: 마스터 DB에서 테이블의 이불의 내용만 다른 지역 or 서버에 위치시키는 방법

통합된 테이블을 한군데(본사)가 가지고 있으면서 각 지사별로는 지사에 해당된 로우를 가지고 있는 형태이다. 지사에 존재하는 데이터는 반드시 본사에 존재하게 된다.

본사 데이터 = 지사 데이터들의 합

보통 지사에 데이터가 먼저 발생하고 본사에 데이터는 지사에 데이터를 이용하여 통합하여 발생된다.

- 광역복제

통합된 테이블을 한군데(본사)에 가지고 있으면서 각 지사에도 본사와 동일한 데이터를 모두 소유

본사에서 코드테이블에 데이터에 대해 입력, 수정, 삭제가 발생하고 각 지사에서는 코드데이터를 이용하는 프로세스가 발생한다. 즉 본사에서는 데이터를 관리하고 지사에서는 이 데이터를 읽어 업무프로세스를 발생시키는 것이다.

부분복제의 경우는 지사에서 데이터에 대한 입력, 수정, 삭제가 발생하여 본사에서 이용하는 방식이 많은 반면 광역복제의 경우에는 본사에서 데이터가 입력, 수정, 삭제가 되어 지사에서 이용하는 형태가 차이점이다.

- 테이블 요약(Summarization)분산

지역간에 또는 서버 간에 데이터가 비슷하지만 서로 다른 유형으로 존재하는 경우이다.

- 분석요약(Roll up replication)

각 지사별로 존재하는 요약정보를 본사에 통합하여 다시 전체에 대해서 요약정보를 산출하는 방법

- 통합요약(Consolidation replication)

각 지사별로 존재하는 다른 내용의 정보를 본사에 통합하여 다시 전체에 대해서 요약정보를 산출

- 분석요약과 통합요약의 차이점

EX)제품별 판매실적이라는 테이블이 존재

분석요약에서는 지사1과 지사2에도 동일한 제품이 취급된다. 이를 본사에서 판매실적을 집계할 경우 통합된 판매실적을 관리하는 것

통합요약의 경우에는 각 지사는 타지사와 다른 요약정보를 가지고 있고 본사에는 각 지사의 요약정보를 단지 데이터를 같은 위치에 두는 것으로 통합하여 전체에 대한 요약정보를 가지고 있다.

성능 데이터 모델링 개요

- 성능 데이터 모델링 데이터베이스 성능향상을 목적으로 설계단계의 데이터 모델링 때부터

정규화, 반정규화, 테이블통합, 테이블분할, 조인구조, PK, FK

등 여러 가지 성능과 관련된 사항이 데이터 모델링에 반영될 수 있도록 하는 것으로 정의할 수 있다

 

  • 성능 데이터 모델링 고려사항
  1. 정규화를 정확하게 수행한다.
  1. DB 용량산정을 수행한다.
  1. DB에서 발생되는 트랜잭션의 유형을 파악한다.
  1. 용량과 트랜잭션의 유형에 따라 반정규화를 수행한다.
  1. 이력모델의 조정, PK/FK 조정, 슈퍼타입/서브타입 조정 등을 수행한다.

 

정규화, 반정규화와 성능

정규화만을 강조하다 보면 성능의 이슈가 발생될 수 있고 반정규화를 과도하게 적용하다 보면 데이터 무결성이 깨질 수 있는 위험이 증가하게 된다. → 판단의 주의가 요구된다

 

- 정규화(Normalization)

정규화 수행 모델은 데이터의 입력/수정/삭제할 때 일반적으로 반정규화된 테이블에 비해 처리 성능이 향상된다. 단 데이터를 조회할 때에는 처리 조건에 따라 조회 성능이 향상될 수도 있고 저하될 수도 있다. →

정규화를 수행하면 무조건 조회성능이 저하된다는 것은 아니다.

 

  • 함수적 종속성(Fuctional dependency)

데이터들이 어떤 기준값에 의해 종속되는 현상을 지칭하는 것이다. 기준값을 결정자(Determinant)라고 하고 종속되는 값을 종속자(Dependent)라고 한다.

어떤 사람의 주민등록번호가 신고되면 그 사람의 이름, 출생지, 호주가 생성되어 단지 하나의 값만을 가지게 된다. → "주민등록번호가 이름, 출생지, 호주를 함수적으로 결정한다."

💡
주민등록번호 → (이름, 출생지, 호주)
 

 

cf) 논리적 데이터 모델링

2021.04.19 - [Certification_Note/SQL-D] - 제1장. 데이터 모델링의 이해(추가자료) - 논리적 모델링

 

제1장. 데이터 모델링의 이해(추가자료) - 논리적 모델링

dasp를 공부하면서 논리적 데이터모델링 정리부분이 있어 부록으로 올립니다. 데이터 모델링 이해 논리 데이터 모델링의 핵심은 업무에서 필요로 하는 데이터에 존재하는 사실을 인식, 기록하는

wierd-ds.tistory.com

 

- 반정규화(Denormalization)

성능을 향상시키기 위해 정규화된 데이터 모델에서 중복, 통합, 분리 등을 수행하는 모든 과정

  • 반정규화를 고려하는 상황
  1. 자주 사용되는 테이블에 접근하는 프로세스의 수가 많고 항상 일정한 범위만을 조회하는 경우에 검토한다.
  1. 테이블에 대량의 데이터가 있고 데이터 범위를 자주 처리하는 경우에 처리범위를 일정하게 줄이지 않으면 성능을 보장할 수 없을 경우에 반정규화를 검토한다.
  1. 통계성 프로세스에 의해 통계 정보를 필요로 할 때 별도의 통계테이블을 생성한다.
  1. 테이블에 지나치게 많은 조인이 걸려 데이터를 조회하는 작업이 기술적으로 어려울 경우 반정규화를 고려한다.

 


  • 반정규화의 대상에 대해 다른 방법으로 처리할 수 있는지 검토
  1. 뷰를 사용하여 조회의 성능을 향상시킬 수 있는가
  1. 클러스터링을 적용 or 인덱스를 조정함으로써 성능을 향상시킬 수 있는가
  1. 파티셔닝을 적용하여 성능을 향상시킬 수 있는가
  1. 응용 애플리케이션의 로직을 변경하여 성능을 향상시킬 수 있는가

 

cf)물리적 데이터 모델링

 

 

dasp에서 공부하던 요약자료를 부록형식으로 올립니다.

4.1 - 물리 데이터 모델링의 이해

물리적 모델 정의

물리 데이터

모델이란 논리적 모델을 특정 데이터베이스로 설계함으로써 생성된 데이터를 저장할 수 있는 물리적인 스키마를 말한다

.

데이터 모델의 엔터티와 서브타입은 논리적인 집합이며, 만약 관계형 데이터베이스로 설계한다면 이 단계에 와서 물리적인 테이블로 확정한다.

 

물리 데이터 모델링은 논리 데이터 모델을 사용하고자 하는 각 DBMS의 특성을 고려하여 데이터베이스 저장 구조로 변환하는 것이다.

 

물리 데이터 모델 의의

물리적 데이터 모델링은 관계 데이터 모델링(RDM)이라고도 한다.

사전에 작성된 논리적 데이터 모델을 각각의 관계형 데이터베이스 관리시스템의 특성, 기능, 성능 등을 고려하여 데이터베이스의 물리적인 구조를 작성해나가는 과정이다.

→ 논리적 데이터베이스 모델에서 도출된 내용 변환을 포함하여

데이터의 저장 공간, 데이터의 분산, 데이터 저장 방법 등을 함께 고려

하는 단계이다.

 

논리 데이터 모델-물리 데이터 모델

분산 DB구축, 물리 데이터 모델 비교, 물리적 환경의 변화, 물리적 모델의 형상관리

가. 분산 데이터베이스 구축 시

분산 데이터베이스를 구축하고자 할 경우 노드별로 자신이 원하는 형태의 물리적 모델을 생성하고자 할 때 적용하는 경우이다.


나. 물리 데이터 모델 비교

각자 나름대로의 특징을 가지고 있는 여러 개의 물리적 모데을 생성하여 종합적인 비교 검토를 하기 위하여 적용하는 경우이다.


다. 물리적 환경의 변화

논리적인 모델에는 변화가 발생하지 않지만 물리적인 환경에서는 변경이 발생했을 경우 기존의 물리적 모델을 새로운 목표 물리적 모델로 개선하고자 할 때 적용하는 경우이다.


라. 물리적 모델의 형상 관리

물리적 모델이 세월의 흐름에 따라 조금씩 변해갈 경우 그 이력을 관리할 목적으로 여러 개의 버전을 보유하고자 할 때 사용하는 경우이다.

 

4.2 - 물리 요소 조사 및 분석

시스템 구축 관련 명명 규칙

사내의 시스템 구축과 관련된 명명 규칙을 파악하여 물리 데이터 모델의 각 요소의 내용에 이를 적용

 

하드웨어 자원

가. CPU

중앙처리 장치의 성능과 집중적인 부하가 발생하는 시간 등을 파악한다.

나. MEMORY

전체 메모리의 규모 및 시스템이 사용하는 메모리 영역을 포함하여 사용 가능한 메모리 영역을 파악한다

다. DISK

전체 디스크의 크기, 분할된 형태, 현재 디스크 활용률 등을 파악하고 사용 가능한 공간을 확인한다.

라. I/O Controller

현재 입/출력 컨트롤러의 성능 및 적절하게 운용되고 있는가를 파악한다.

마. Network

현재 처리 가능한 속도, 집중적인 부하가 발생하는 시간대, 동시접속 최대 가용 사이트 수

 

운영체제 및 DBMS 비전 파악

운영체제의 관련 요소를 파악하고 적절하게 관리되고 있는가 파악한다. (인스턴스 관리기법)

 

DBMS 파라미터 정보 파악

환경적용 단계에서 가장 중요하게 고려하는 단계이다.

저장공간 관리 기법과 메모리 관리기법 등에 관련된 파라미터에 관해서 주의를 기울인다. 쿼리에 사용하는 옵티마이저의 운영 방법 등도 중요

 

DB 운영과 관련된 관리요소 파악

사용자 관리 기법 및 정책, 백업/복구 기법 및 정책, 보안 관리 정책

 

4.3 - 논리물리변환

 

데이터 표준 적용

논리 데이터 모델링 과정에서 정의된 엔터티, 속성, 관계들은 여러가지 기준으로 물리 데이터 모델로 변환하다. 이과정에서 필수적으로 엔터티명에 해당하는 테이블명을 생성하고, 속성 또는 관계에 해당하는 칼럼명을 생성한다. 이러한 이름을 변환하는 과정에서 전사적으로 미리 생성된 데이터 표준을 따르게 된다.

 

- 데이터표준 적용대상

DB:

테이블의 집합으로 통합 모델링 단계의 주제 영역이나 애플리케이션 모델링 단계의 업무 영역에 대응되는 객체이다.

 

스토리지그룹:

물리적인 디스크를 묶어서 하나의 그룹으로 정의해 놓은 것이다. 테이블 스페이스, 인덱스 스페이스 생성 시 스토리지 그룹명을 지정하여 물리적 영역에 할당

 

테이블스페이스:

테이블이 생성되는 물리적인 영역이며, 테이블 스페이스에 하나 또는 그 이상의 테이블을 저장할 수 있다.

 

테이블:

논리 설계 단계의 엔터티에 대응하는 객체이다.

 

칼럼:

논리 설계 단계의 속성에 대응하는 객체이다.

 

인덱스:

테이블에서 특정 조건의 데이터를 효율적으로 검색하기 위한 색인 데이터이다. 기본키,외래키

 

뷰:

테이블에 대한 재정의로서 물리적인 테이블의 특정 칼럼, 특정 로우를 뷰로 정의하여 특정 사용자만 접근이 가능하도록 할 수 있다.

 

- 데이터표준 적용방법

1)명명 규칙에 대한 표준화

 

2)표준용어집에 의한 표준화

4.4 - 반정규화(Denormalization)

반정규화

논리 데이터 모델링의 마지막에 진행되었던 정규화 작업이 완료되면 데이터 모델은 데이터의 중복을 최소화하고 데이터의 일관성 정확성, 안정성을 보장하는 데이터 구조가 완성된다.

정규화된 데이터 모델은 시스템의 성능 향상, 개발 과정의 편의성, 운영의 단순화를 위해 정규화의 원칙들에 위배되는 행위를 의도적으로 수행하게 된다→

이러한 과정을 반정규화 과정이라고 한다.

- 반정규화된 데이터 구조는 성능과 관리효율을 증대시킬 수 있지만, 데이터의 일관성 및 정합성을 해칠 위험을 내포하고 있고, 또한 이를 유지하는데도 그만큼 비용이 발생하여 지나치면 오히려 성능에도 악영향을 미칠 수 있기 때문에,

데이터 모델의 각 구성 요소인 엔터티, 속성, 관계에 대해 데이터의 일과성과 무결성을 우선으로 할 지 데이터베이스의 성능과 단순화에 우선순위를 둘 것인지를 적절하게 조정하는 것이 중요하고 다양한 경험이 필수이다.

 

테이블 분할

하나의 테이블을 수직 혹은 수평 분할하는 것을 테이블 분할 또는 파티셔닝이라고 한다.

DB 디자인 단계에서의 데이터를 저장하는 방식의 파티셔닝과는 다른 것이다.

 

  • 수평분할
레코드(Tuple)을 기준으로 테이블을 분할하는 것을 말한다.

- 사용의의

하나의 테이블에 데이터가 많이 있고, 레코드 중에서 특정한 범위만을 주로 엑세스하는 경우에 사용

분할된 각 테이블은 서로 다른 디스크에 위치시켜 물리적인 디스크의 효용성을 극대화할 수 있다.

대표적인 방법으로는 범위(Range), 해쉬(Hash), 목록(List), 복합(Composite) 분할이 있다.

 

  • 수직분할

속성(Attribute)를 기준으로 테이블을 분할하는 것을 말한다.

갱신 위주 수직분할, 자주 조회 수직분할, 특정칼럼 크기 큰 경우 수직분할, 보안적용 수직분할

 

- 갱신 위주의 칼럼 수직 분할

데이터를 갱신하는 작업이 일어날 때 업데이트하려는 레코드, 즉 레코드에 잠금을 수행하기 때문에 분할작업을 실시한다.

잠금은 데이터의 무결성을 지키기 위한 수단으로 하나의 프로세스가 특정 데이터 값을 변경하려고 할때 변경 작업이 끝날 때까지 다른 프로세스가 이 데이터 값을 변경하지 못하도록 금지하는 것이다.

갱신 위주의 칼럼 수직 분할을 통해 데이터 사용의 효율성을 증가시킬 수 있다.

 

 

- 자주 조회되는 칼럼 분할

칼럼 수가 아주 많은 테이블에서 주로 사용되는 칼럼들이 극히 일부라고 가정한다면 일부 칼럼들로 이루어진 테이블을 생성하여 실제 물리적인 I/O양을 줄여서 데이터 엑서스 성능을 향상시킬 수 있다.

 

DBMS는 엑세스하고자 하는 모든 데이터를 초기에 물리적인 데이터 파일에서 메모리로 읽어들이게 된다. 또한

한번 읽어들인 데이터는 읽고 바로 지워지는 것이 아니라 일정기간 메모리에 저장되게 된다.

이러한 DBMS의 메커니즘상에서 보듯이 읽어 들이는 데이터의 양이 적다면 초기 데이터 메모리로 적재하는 비용이 절약되고, 또한 메모리상에 상대적으로 오래 머물 수 있기 떄문에 데이터의 재사용성을 높여주는 효과를 얻을 수 있다.

 

- 특정 칼럼의 크기가 아주 큰 경우 분할

특정 칼럼의 크기가 아주 큰 경우 분할이 일어나는 대개의 경우는 특정 칼럼의 크기가 크다는 것보다는 특정한 데이터 형식에 기인하는 문제가 대부분이다. (이미지 데이터, 대용량 데이터)

이러한 텍스트 및 이미지와 같은 LOB(Large objects)는 백업, 복원과 같은 관리나 프로그래밍과 같은 개발부분에서 성능이 저하될 가능성이 존재한다.

 

 

- 특정 칼럼에 보안을 적용해야 하는 경우의 분할

많은 데이터베이스 시스템이 테이블이나 뷰와 같은 객체들에 대해서는 SELECT, UPDATE, DELETE등과 같은 권한을 제어할 수 있는 기능을 제공하고 있다. 하지만 테이블 내의 칼럼에 대해서는 이러한 권한(Permission) 제어 기능을 제공하고 있지 않다.

이런 경우 해당 칼럼에 대해 권한을 제어하기 위해서는 보안을 적용하고자 하는 칼럼을 분리해 이를 별도의 테이블로 만들어 그 테이블에 대한 제어 권한을 얻을 수 있다.

 

중복 테이블 생성

많은 양의 정보를 자주 Group by, sum 등과 같은 집계 함수를 이용해서 실시간으로 통계 정보들을 계산해낼 수 있다. 하지만 대부분 이러한 계산의 유형은 매우 많은 양의 데이터가 대상이 되고, 하나의 테이블이 아닌 여러 개의 테이블에서 필요한 데이터를 추출하는 경우가 대부분이다.

이를위해 특정

통계 테이블을 두거나 중복 테이블을 추가

할 수 있다.

 

- 중복테이블 생산의 판단근거

정규화에 충실하면 종속성, 활용성은 향상되지만 수행속도 증가가 발생하는 경우

많은 범위를 자주 처리해야 하는 경우

특정 범위의 데이터만 자주 처리되는 경우

처리 범위를 줄이지 않고는 수행 속도를 개선할 수 없는 경우

요약 자료만 주로 요구되는 경우

추가된 테이블의 처리를 위한 오버헤드를 고려

 

1)집계(통계)테이블 추가

단일 테이블의 GROUP BY, 여러 테이블의 조인 GROUP BY

- 로우 수와 활용도를 분석하고 시뮬레이션을 통해 그 효용성에 대한 면밀한 검토 선행

- 집계 테이블에 단일 테이블 클러스트링을 한다면 집계 레벨을 좀 더 낮춰 활용도를 높일 수 있는지 고려해야 한다.

- 클러스터링, 결합 인덱스, 고단위 SQL을 활용하면 굳이 집계 테이블 없이도 양호한 수행속도 낼 수 있음

- 추가된 집계 테이블을 기존 응용 프로그램이 이용할 수 있는지 찾아 보정시키는 노력이 필요하다.

 

2)진행테이블 추가

추가사항

- 여러 테이블의 조인이 빈번히 발생하며 처리 범위도 넓은 경우

- M:M 관계가 포함된 처리의 과정을 추적, 관리하는 경우

- 검색 조건이 여러 테이블에 걸쳐 다양하게 사용되며 복잡하고 처리량이 많은 경우

 

유의사항

- 데이터량이 적절하고 활용도가 좋아지도록 기본키를 설정

- 필요에 따라 추출칼럼을 추가하여 집계 테이블의 역할도 하는 다목적 테이블을 구상

- 다중 테이블 클러스터링이나 조인 SQL을 사용하면 굳이 진행 테이블 안만들어도 쌉가능

 

중복 칼럼 생성

정규화를 통해 중복 칼럼을 최대한 제거하는 작업을 수행한다. 이렇게 중복 데이터를 제거하는 이유는 여러가지가 존재하지만 가장 큰 이유 중 하나는

데이터의 정합성을 유지

하기 위함이다.

 

- 생성상황

빈번하게 조인을 일으키는 칼럼에 대해 고려해볼 수 있다.

속도가 중요한 칼럼에 대해서 중복 칼럼을 고려할 수 있다.

엑세스의 조건으로 자주 사용되는 칼럼에 대해 고려해볼 수 있다.

상세한 조건 부여에도 불구하고 엑세스 범위를 줄이지 못하는 경우에 자주 사용되는 조건들을 하나의 테이블로 모아 조건의 변별성을 극대화할 수 있따.

복사된 칼럼의 도메인은 원본 칼럼과 동일하게 해야 한다. ← 데이터 일관성을 위한 필수사항

접근 경로의 단축을 위해 부모 테이블의 칼럼을 자식 테이블에 중복시킬 수 있다.

상위 레벨의 테이블에 집계된 칼럼추가 가능, 하위레벨 테이블에 중복칼럼 복사가능

판단할 수 없는 값이 검색의 조건으로 사용되는 경우에는 연산의 결과를 중복칼럼으로 생성가능

로우로 관리하던 데이터를 칼럼으로 관리하는 경우이다.

 

 

dasp를 공부하면서 논리적 데이터모델링 정리부분이 있어 부록으로 올립니다.

 

데이터 모델링 이해

논리 데이터 모델링의 핵심은 업무에서 필요로 하는 데이터에 존재하는 사실을 인식, 기록하는 것이다.

→ 어떤 조직의 업무 사실에 기초하여

그 조직에서 필요로 하는 데이터의 구조 및 업무 규칙을 논리 데이터 모델에 기록

하는 것이다.

 

  • 논리 데이터 모델링 필수 성공 요소

-

업무를 알고 있는 전문가의 참여

는 필수적이다

-

절차보다는 데이터

에 초점을 두고 모델링을 진행해라

- 데이터의 구조와 무결성을 함께 고려해라

-

개념화와 정규화 기법

을 적용해라

개념화: 현실세계에서 발생하는 업무 데이터를 엔터티, 관계, 속성으로 표현하는 추상화와 동일

정규화: 데이터의 올바른 위치를 찾아주는 기법

 

-

다이어그램

을 이용하여 업무를 표현해라

- 데이터 모델링을 지원하는

데이터 사전

을 구축해라.

 


  • 논리데이터 모델링 절차
주제영역정의 → 엔터티정의 → 관계정의 → 속성정의 → 식별자확정 → 정규화 → 이력관리

 

주제영역 정의

주제영역은 주요 자원, 상품, 활동을 중심으로 조직이 관심을 가지는 영역이다.

주제영역은 조직이 사용하는 데이터의 최상위 집합이다.

예를 들어 제조업체의 경우 인사, 고객, 상품, 구매, 생산, 판매 분야 등의 주제 영역이 있을 수 있다.

 

하나의 주제 영역 내에 정의되는 엔터티간의 관계는 밀접하고, 다른 주제 영역에 포함되는 엔터티 간의 상호작용은 최소화할 수 있도로 정의해야 한다.

 

계획수립 단계는 하향식 분석을 원칙으로 하고, 검증을 위해서 상향식 분석을 부분적으로 사용한다.

데이터를 하향식으로 분석하기 위한 개념으로 유용한 것이 주제영역이다.

 

주제영역은 데이터의 계층 구조를 파악하는데 도움을 주며, 품질 확보에도 기여한다.→ 시간을 단축시키지는 않는다.

 

엔터티 정의

엔터티란 조직에서 업무를 수행하는데 필요한 사물, 사건 또는 개념을 나타내는 어떤 것

현실 세계에 무수히 존재하는 인스턴스들을 추상화라는 개념을 통해서 엔터티로 정의하여 사용.

 

  • 엔터티분류
- 일반적인 분류

유형엔터티: 물리적으로 존재하는 대상(고객, 상품)

활동엔터티: 어떤 사건에 관한 정보(주문, 계약, 장비고장 등)

개념엔터티: 관리할 정보가 있는 무형의 개념(계정과목, 성적)

 

- 모델관점 분류

독립엔터티: 인스턴스의 식별을 위해 다른 어떤 인스턴스에도 의존적이지 않은 엔터티

종속엔터티: 인스턴스의 식별을 위해 다른 인스턴스에 의존해야만 식별이 가능하다.

 

- 발생시점 분류키 엔터티

: 자신의 부모를 가지지 않는 엔터티

사원 엔터티에 있는 '홍길동'이란 인스턴스는 아직 부서가 정해지지 않았더라도 사원으로서 정의하는데 아무 문제가 없다.

키 엔터티를 제외한 다른 모든 엔터티는 부모 엔터티를 가지고 있어야만 태어날 수 있다.

 

메인 엔터티

: 키 엔터티를 제외한 엔터티 중에서 업무의 중심에 해당하는 엔터티

 

액션 엔터티

: 키엔터티, 메인엔터티를 제외한 전부

모델링이 좀 더 구체적으로 진행되더라도 키 엔터티와 메인 엔터티는 집합의 본질이 크게 달라지지 않는다. 그러나

액션 엔터티는 상위 엔터티들이 어떻게 결정되느냐에 따라서 크게 영향을 받기 떄문에 업무의 본질은 살아있지만 최초에 예상했거나 과거에 정의했던 식별자가 크게 달라질 수도 있따.

 

  • 엔터티 도출

기업의 전략&목표 분석, 현 시스템 분석, 사용자 인터뷰, 정보요구 분석, 문서&보고서 작업

 

  • 엔터티 검증

논리 데이터 모델에 표현되는 모든 엔터티는

 

1. 데이터 모델의 구현 주체인

조직의 업무를 수행하는데 필요한 의미있는 정보

를 나타내야 한다.

조직에 따라서 엔터티의 범위는 천차만별 일 수 있다.

 

2.

하나하나의 특성 사례가 아닌 유사한 사물들을 대표하는 집합체

여야 한다.

'구매부서에서 공급처에 자재를 주문한다'와 같은 업무 분석 사항에서 만약 엔터티를 '구매부서'로 정의하게 되면, 조직 내에 엔터티가 너무 많아 관리가 불가능하다. → 구매부서는 단일사례

이의 경우에 엔터티를 '부서'로 정의하고, 구매부서는 이 엔터티의 인스턴스가 된다.

 

3. 속성들에 의해 결정된 단일 개념을 나타내야 한다.

 

4. 엔터티 내 인스턴스의 출현을 구별할 수 있는 능력을 제공해야하며, 정규화 규칙 만족.

엔터티는 인스턴스를 구별할 수 있는 능력을 제공해야한다. 엔터티 무결성

인스턴스를 구별할 수 있는 능력, 즉 식별이란 여러분들이 얘기하고 있는 사물이나 사람을 알고 있냐는 것이다.

엔터티 내 인스턴스의 출현을 구별할 수 있는 능력을 제공하기위해 식별자를 구성하는 일련의

1) 속성값이 반드시 있어야 하고

2) 이 값들이 유일해야 하며

3) 이 일련의 속성이 최소한의 개수로 이뤄져야 한다.

 

  • 엔터티 구체화
식별자 확정 → 정규화 → M:M관계해소 → 참조무결성 정의

 

1)식별자 확정단계

이제까지 논리적 의미의 식별자(본질 식별자)를 기준으로 관계들이 생성되고 속성들이 정의되었다면 이 단계는 실질적 식별자를 생성한다.

 

2)정규화 단계

정규화는 논리적 데이터 모델의 일관성을 유지하고 중복을 제거하여

보다 안정적인 모델

을 만드는 단계이다.

 

3)M:M 관계해소

개념 데이터 모델에서 핵심 엔터티들간의 M:M관계가 해소되면서 교차 엔터티(Intersection entity)가 생성되는 단계이다.

 

4)참조무결성 정의단계


관계 정의

관계란 하나 또는 두 개의 엔터티로부터 인스턴스를 연관시키는 업무적인 이유이다.

이러한 업무규칙은 업무를 전산화하기 이전에 다시 말해 전산화와는 독립적으로 이미 업무에 존재하는 사실이라는 점을 명심해야한다.

 

  • 관계개념

 

- 부모 자식 엔터티

하나 또는 두개의 엔터티 사이 관계가 있을 때 기수성과 선택성에 따라 부모, 자식엔터티를 구분.

외래키가 나타나는 곳이 자식 엔터티라고 생각하면 쉽다

- 일대다 기수성의 경우에는 '일'쪽이 부모이고 '다'쪽이 자식이다.

- 일대일 기수성의 경우에는

선택성 '필수'쪽이 부모이고 '선택'쪽이 자식

이다.

- 다대다 기수성의 경우에는 일대다의 연관엔터티로 정련한다.

 

* 관계를 해석하는 방식

항상 어느 엔터티에 인스턴스가 입력되는 시점에 관계가 있는 상대편의 엔터티에 인스턴스가 필요한지 필요없는지를 근거로 관계의 선택성을 결정한다.

하나의 주문 입력 시 고객은 반드시 입력되어 있어야한다. <

필수

>

하나의 고객 입력 시 주문은 입력 안 될 수도 있다. <

선택

>

 

  • 관계 도출

관계란 하나 또는 두 개의 엔터티로부터 인스턴스를 연관시키는 업무적인 이유라고 하였다. 만약 엔터티만 알고있고 엔터티의 인스턴스가 무엇인지를 알 수 없으면 정확한 관계를 설정할 수 없다.

EX)

'업무영역' 엔터티의 인스턴스들이, 즉 인스턴스가 '인사', '급여', '구매', '생산' 등이고, 'DB'엔터티의 인스턴스들이 '인사DB', '급여DB', 구매DB'등 업무영역과 동일한 단위의 DB를 관리하는 것이라면 이 두 엔터티의 관계는 1:1 한쪽 필수 한쪽 선택 식별 관계가 될 것이다.

하지만 만약에 DB 인스턴스들이 ORACLE, SQL Server, Sybase와 같이 특정 데이터베이스 관리 시스템을 말하게 된다면 일대다의 관계가 형성될 것이다

→ 엔터티를 그 조직에서 어떻게 정의하느냐에 따라 관계 정의가 달라질 수가 있다.

 

다대다 관계의 경우 카티션 프로덕트가 발생하여 정보의 왜곡이 발생한다. →연관관계로 해소

 

  • 특수관계

 

- 자기참조관계

계층 구조 모델은 자기 참조 관계가 아닌 부모의 식별자를 자식의 식별자의 일부로 사용하면서 조직의 계층 구조를 표현하고 있다.

이러한 계층 구조 모델은 조직 변경이 일어나는 경우, 이에 대한 대응을 원활하게 하기 매우 어렵다.

조직과 같이 계층 구조를 갖는 업무에서 계층구조

순환 전개 모델처럼 관계로 표현해야 조직 변경에 탄력적으로 대응할 수 있다.

 

조직은 계층 구조가 년 단위 내지는 조직 경영의 목적상 필요한 경우 등등 지속적으로 변화한다. 하지만 회계 업무의 계정 과목은 계층 구조가 한 번 결정되고 나면 변화가 거의 없다고 해도 과언이 아니다.

같은 계층구조이지만 업무의 변화 가능성에 따라 이를 모델링하는 방법이 다른 것이다.

→ 계층 구조 변경에 매우 유연하다.

계층구조 변경시 데이터의 수정이 없다

→ 계층 구조이면서 변동이 발생하는 업무에 적용한다.

 

- 배타적관계

어떤 엔터티의 행이 두 개 이상의 다른 엔터티의 행과 관계를 맺는데 있어서

어느 시점에 반드시 하나의 엔터티의 행과 관계를 맺는 형태.

EX)

'출고'의 행이 두 개 이상의 다른 엔터티와('공정', '창고') 관계를 맺는 데 있어서 어느 시점에 반드시 하나의 엔터티의 행과 관계를 맺는 형태를 말한다.

배타적 관계는 항상 필수이거나 선택이어야 한다.

배타적 관계는 반드시 하나의 인스턴스에만 속해야 한다.

 

속성정의

속성: 데이터베이스 내에 저장되는 최소 단위의 정보

 

  • 속성도출

현행 시스템 자료, 현업 장표&보고서, 사용자와 협의, 데이터 흐름도의 데이터 저장소, 전문 서적 및 자료, 다른 시스템 자룦

 

  • 속성 정의사항

- 각 속성에 대한 상세 정보의 중요성

→ 업무 관련 데이터의 본질과 목적을 이해하는데 도움을 준다

→ 속성 수준의 무결성을 설정하고 강화하는데 도움을 준다

→ 데이터 무결성을 개선하여 데이터 품질을 향상시킨다

→ 데이터 사전을 구성한다.

 

- 속성 명

속성명만 보고서도 내용이 무엇인지를 쉽게 이해할 수 있도록 명명하는 것이 좋다.

유일한 복합명사를 사용

속성이란 자신만이 가지는 분명한 독립적인 의미를 가지고 있기 때문에 명칭 또한 단순히 일반 용어만으로 부여해서는 결코 구체적인 의미를 나타낼 수 없다.

 

- 속성 유형

기본속성: 속성 값이 해당 인스터스에 원래 존재하여, 다른 속성 값으로부터 유도될 수 없는 속성

 

유도속성

: 속성 값이 항상 다른 속성의 값으로부터 유도되거나 계산되는 속성

→유도속성은 어떤 상수 값으로 지정되는 것이 아니라, 유도 알고리즘이라는 계산을 수행한 결과를 유도 속성의 값으로 반환한다.

 

설계속성: 업무 제약사항을 반영하거나 시스템 운영을 단순화하기 위하여 생성하는 속성

(기본과 설계는 일반적으로 동일하게 다룬다)

 

  • 속성 검증 및 확정

원자 값 단위까지 분할 → 하나의 값만을 가지는지 검증 → 유도 속성인지 검증

 

가. 원자값 단위까지 분할

데이터 모델 내 모든 속성은 원자적(atomic)이여야 한다. 한 엔터티에 나타난 속성값은 업무적인 이유에 의해 논리적으로 더이상 분해될 수 없는 단위값(Unit value)이다.

EX)계좌번호(16) = 지점코드(3) + 상품코드(2) + 계좌개설일자(8) +;;;;; 이와 같은 식으로 할 경우 원자값 단위까지 분할원칙을 져버리게 된다.

 

나. 하나의 값만을 가지는지 검증

속성에서 관리되어야할 값이 반드시 단 하나만 존재해야 한다.

→ 엔터티에 들어가는 인스턴스마다 반드시 하나의 값만 보유하고 있어야 한다는 것이다.

 

다. 유도속성인지 검증

속성이 원천적인 값인지, 다른 속성에 의해 가공되어서 만들어진 값인지를 검증하는 것이다.

추출 값이란 원천적인 값을 가지고 언제라도 쉽게 재현할 수 있는 속성을 말한다.

cf) 유도 속성은 절대 식별자의 역할을 맡아서는 안된다 절대

 

식별자 확정

후보 식별자 도출 → 보조 식별자 → 인조 식별자 지정 → 식별자 확정

엔터티 내의 모든 인스턴스는 유일하게 구분되어야 한다. 이러한 유일성을 보장하기 위해서 필요한 것이 식별자이다. 현실세계에서 매우 유사한 특성을 가지는 두 개의 사물을 어떻게 구별할 것인가? → 식별자의 중요성

 

본질식별자 - 업무에서 사용하는 속성을 이용하여 유일성을 보장한다.

→ 기준정보 엔터티, 거래처리 엔터티에 따라 다르게 정의된다

 

- 기준정보 엔터티

사원, 고객, 상품과 같이 부모 엔터티 없이도 혼자서 정의될 수 있는 엔터티이다.

 

- 거래처리 엔터티

하나의 인스턴스를 유일하게 발생하시키는 일련의 속성이 어느 부모로부터 상속되었는지를 찾고자 하는 것이며, 결국 자신을 있게 한 근본을 찾는 것이다.

 

1. 후보 식별자 도출

이전 단계에서 정의된 본질 식별자를 기본으로 식별자의 자기 목적인 자기를 식별할 수 있어야한다는 유일성 유지의 목적과 다른 엔터티에서 정보로 참조해야 하는 목적을 적절히 판단하여 최종식별자를 확정해야 한다.

- 하나의 엔터티 내에는 식별자로 사용할 수 있는 하나 이상의 식별자가 있다. 이 중에서 하나의 식별자로 선택되게 된다. 나머지 식별자들을 후보 식별자라고 한다.

→ 널이 될 수 없다.

→ 각 인스턴스들을 유일하게 식별할 수 있어야 한다.

→ 나머지 속성들을 직접 식별할 수 있어야 한다.

→ 후보 식별자로 속성 집합을 선택하는 경우에는 개념적으로 유일해야 한다.

→ 후보 식별자의 데이터는 자주 변경되지 않는 것이여야 한다.

 

  • 보조식별자 → 유일성 O, 대표성 X (회사에서의 주민등록번호)

엔터티 내에서 하나의 인스턴스를 유일하게 식별할 수 있는 속성이지만 대표성을 갖지 못하는 속성

사원 엔터티에 공식적으로 부여된 식별자는 사원번호이지만, 만약 주민등록번호 속성이 유일한 값을 가지면서 필수적으로 정의되었다면, 비록 공식적인 식별자는 아니지만 식별자로서의 역할을 할 자격은 충분히 갖추고 있다.

 

2. 인조식별자 지정

업무에서 사용하는 속성이 아닌 인위적으로 만든 속성으로 유일성을 보장한다. 기존의 본질 식별자를 그대로 인정할 수 없는 여러가지 상황이 발생했을 때, 전부 혹은 일부의 값을 가진 속성들로 대체하여 새롭게 구성한 식별자를 말한다.

-

최대한 범용적인 값을 가진다. - 유일한 값을 만들기 위한 인조 식별자를 사용한다. - 하나의 인조 식별자 속성으로 대체할 수 없는 형태를 주의한다. - 편의성&단순성 확보를 위한 인조 식별자를 사용할 수 있다. - 의미의 체계화를 위한 인조 식별자를 사용할 수 있다. - 내부적으로만 사용하는 인조 식별자

 

3. 식별자 확정

  • 식별관계의 두가지 의미

- 식별자로서의 역할

엔터티 자신의 입장에서 보았을 때 자신의 인스턴스들을 다른 것들과 구별될 수 있도록 유일한 값을 만드는데 일조한다는 의미이다

 

- 정보로서의 역할

참조하는 엔터티의 입장에서 보았을 떄, 상대방의 식별자를 상속 받았기 떄문에 자신이 보유한 정보가 증가했다는 의미도 있다.

 

  • 식별자 확정절차
하향식방식

, 즉 상위 엔터티부터 시작해 하위 엔터티로 순차적으로 결정해가는 것이 좋다. 식별자 상속이란 상위에서 하위로 이루어지기 때문이다.

가. 기준정보 엔터티 식별자 확정

나. 중요거래처리 엔터티 식별자 확정

다. 기타거래처리 엔터티 식별자 확정

 

관계 선택성 VS 관계 식별성

  • 관계선택성 표기법

필수:

다른 엔터티에 어떤 행을 입력하기 전에 상대 엔터티에 적어도 한 건의 행이 반드시 있어야하는경우

선택:

다른 엔터티에 행을 입력하기 전에 상대 엔터티에 어떤 행이 존재할 필요가 없는경우.

 

CASE Method에서는 필수를 실선, 선택은 점선

IE에서는 필수는 동그라미 생략, 선택은 관계선에 동그라미

 

  • 관계식별성 표기법

식별:

부모 엔터티의 식별자가 자식 엔터티의 식별자의 일부분이 되는 관계

 

비식별:

부모 엔터티의 식별자가 자식 엔터티의 식별자의 일부분이 되지않고, 일반 속성이 되는 경우

 

CASE Method에서는 식별을 UID BAR, 비식별 UID BAR생략

IE에서는 식별을 실선, 비식별을 점선

정규화(Normalization)

정규화는 엔터티에 데이터의 입력, 수정, 삭제 연산을 수행할 때 발생하는 이상현상을 제거하여 논리 데이터 모델링의 목적인 정확성, 일관성, 단순성, 비중복성, 안정성을 만족시키는 최적의 데이터 구조를 만들어가는 과정이다.

 

정규화 과정은 중복 데이터를 제거하여 최적의 데이터 구조로 만들기 위해 여러 단계를 거친다.

 

- 정규화의 장점

중복 값이 줄어든다. → 정규화의 최대성과

새로운 요구사항의 발견과정을 돕는다. NULL값이 줄어든다.

복잡한 코드로 데이터 모델을 보완할 필요가 없다. 데이터 구조의 안정성을 최대화한다.

 

  • Anomaly(이상현상)

 

- 입력이상

데이터를 입력하려고 할때 원하지 않는 데이터도 함께 입력해야 하는 구조로 되어 있는 경우


- 수정이상

일부 속성값을 수정함에 있어서 원하지 않는 정보의 이상현상 발생하는 경우


- 삭제이상

일부 정보를 삭제함으로써 유지되어야 할 정보까지도 연쇄삭제되는 현상

 

제 1정규형

- 모든 속성은 반드시 하나의 값을 가져야 한다. 즉 반복 형태가 있어서는 안된다.

- 각 속성의 모든 값은 동일한 형식이여야 하다.

- 각 속성들은 유일한 이름을 가져야 한다.

- 행들은 서로간에 식별이 가능해야 한다.

 

어떤 속성이 다수의 값 또는 반복 그룹 값을 가지고 있다면 일대다 엔터티를 추가한다.

→ 비정규형 릴레이션이 릴레이션으로서의 모습을 갖추기 위해선 여러 개의 복합적인 의미를 가지고 있는 속성이 분해되어 하나의 의미만을 표현하는 속성들로 분해되어야 한다.

 

제 2정규형

식별자가 아닌 모든 속성은 식별자 전체 속성에 완전 종속되어야한다.

부분적 함수의 종속성 제거원칙을 준수한다.

기본키가 2개 이상으로 구성된 엔터티에서 일반속성이 PK속성들 중 일부 속성에 대해서만 부분적 종속성이 있는 속성일 경우 해당속성을 제거한다.

- PK가 1개인 엔터티는 제 2정규화 대상에서 제외한다.

- 한 속성이 PK 모두에 대해서 종속성이 있지 않고 부분적 종속성만 있을 경우 이를 별도 테이블로 관리한다.

- 보통 키가 복합속성일 때, 일부 속성이 일부 키에 종속이 발생하는 것을 말한다.

→2차 정규화를 진행하면 보통 부모 엔터티가 생긴다.

 

EX)

주문번호 + 상품코드로 이루어진 주문상품 엔터티에서 상품명이 상품코드에 종속적이다.

 

제 3정규형

제 2정규형을 만족하고 식별자를 제외한 나머지 속성들 간의 종속이 존재하면 안된다.

기본적으로 엔터티 내 모든 속성들은

기본키에 의존성을 가져야 한다

.

기본키에 의존하지 않고 일반속성에 의존하는 속성을 제거 또는 분리한다.

ex)메일주소 속성은 PK인 글번호에 의존하지 않고 고객아이디에 의존하기 때문에 분리해야 한다.

이력관리

데이터는 현재의 프로세스만 처리하고 버리는 것이 아니라 마치 후손에게 물러주어야 할 귀중한 문화유산처럼 오랜 기간의 데이터를 유지시켜 좀 더 가치있는 정보를 제공할 수 있는 밑거름이 되도록 해야한다.

 

1)발생 이력 데이터

어떤 데이터가 발생할 때마다 이력 정보를 남겨야만 한다면 발생이력이라고 볼 수 있다. 이벤트가 발생할 때에만 이력 데이터를 발생하는 방법이 있고, 이력이 발생하지 않더라도 날마다 데이터를 생성하는 방법이 있다.

 

2)변경 이력 데이터

데이터가 변경될 때마다 변경 전과 후의 차이를 확인해야 한다면 변경이력을 남길 수 있다. 예를들어 고객이 주문을 하고서 주문 정보를 변경하였을 때, 이전 주문과 변경된 새로운 주문 정보를 관리하기 위해 변경된 새로운 주문 정보를 이력 정보로 남겨야한다.

 

3)진행 이력 데이터

업무의 진행에 따라 이 데이터를 이력 정보로 남겨야만 하는 경우. 주문과 같은 업무처리

구매친성 → 입금완료 → 배소중비 중→ 배송중→배송완료 혹은 주문취소

 

  • 이력관리형태

1)시점이력

데이터의 변경이 발생한 시각만을 관리

특정 통화의 환률이 변경되면 새로운 인스턴스가 생겨나고, 그 시점의 해당 통화 환율과 발생시각을 기록&보관함으로써 환율이 어느 시점에 얼마의 값으로 변경되었다는 정보를 관리하는 것이다.

 

2)선분이력

데이터 변경의 시작 시점부터 그 상태의 종료 시점까지 관리

가 통화의 특정기간동안 유효한 환률을 관리

선분이 아무리 길어도 레코드는 하나이다.

 

  • 선분이력관리 유형

인스턴스 레벨 이력관리

속성 레벨 이력관리

주제 레벨 이력관리

엔터티(Entity)

장소, 사람, 물건, 사건, 개념등의 명사, 업무상 관리 필요한 관심사, 저장이 되기 위한 어떤 것(Thing)

업무 활동상 지속적인 관심을 가지고 있어야 하는 대상으로서 그 대상들 간에 동질성을 지닌 인스턴스들이나 그들이 행하는 행위의 집합 → 인스턴스의 집합

  • 엔터티의 특징

업무에서 꼭 필요한 정보 → 반드시 관리되어야하는 정보여야 한다. 유일한 식별자에 의해 식별이 가능해야 함 인스턴스 2개 이상의 집합, Business process에 의해 이용됨 반드시 속성이 있어야 함 (주식별자만 존재하고 일반속성 없어도 적절X, 관계엔터티 예외) 다른 엔터티와의 관계가 최소 1개 이상 존재 (통계성, 코드성, 내부필요 엔터티 예외)


  • 엔터티의 분류

유무형에 따른 분류)

- 유형엔터티(Tangible entity)

물리적인 형태가 있고 안정적이며 지속적으로 활용되는 엔터티로 업무로부터 구분 용이

- 개념엔터티(Conceptual entity)

물리적인 형태는 존재하지 않고 관리해야할 개념적 정보로 구분이 되는 엔터티. ex)조직, 보험상품

- 사건엔터티(Event entity) 업무를 수행함에 따라 발생되는 엔터티로서 비교적 발생량이 많으며 각종 통계자료에 이용.

주문, 청구, 미납 등이 해당

발생시점에 따른 분류)

- 기본엔터티(Basic entity)

그 업무에 원래 존재하는 정보로서 다른 엔터티와 관계에 의해 생성되지 않고 독립적으로 생성이 가능한 엔터티. 자신은 타 엔터티의 부모 역할을 하게 된다.

자신의 고유한 주식별자를 가지게 된다.

- 중심엔터티(Main entity)

기본엔터티로부터 발생되고 그 업무에 있어서 중심적인 역할을 한다.

데이터의 양이 많이 발생되고 다른 엔터티와의 관계를 통해 많은 행위엔터티를 생성. ex) 계약, 사고,

- 행위엔터티

두 개 이상의 부모엔터티로부터 발생되고 자주 내용이 바뀌거나 데이터의 양이 증가된다.

주문목록, 사원변경이력

속성(Attribute)

업무에서 필요로 하는 인스턴스를 관리하고자, 의미상 더이상 분리되지 않는 최소의 데이터 단위

  • 속성의 특징

반드시 해당 업무에서 필요하고 관리하고자하는 정보 정규화 이론에 근간, 정해진 주식별자에 함수적 종속성을 가져야 함 하나의 속성에는 1개의 값만을 가짐. 다중값일 경우 별도의 엔터티 이용하여 분리


  • 속성의 분류

특성에 따른 분류)

- 기본속성

업무로부터 추출한 모든 속성이 여기에 해당하며 가장 일반적이며 많다.

코드성 데이터, 엔터티를 식별하기 위해 부여된 일련번호와 같은 속성을 제외한 모든 속성은 기본속성이다.

- 설계속성

업무상 데이터 이외에 데이터 모델링을 위해, 업무를 규칙화하기 위해 새로 만들거나 정의하는 속성 코드성 속성은 운래 속성을 업무상 필요에 의해 변형하여 만든 설계속성, 일련번호

- 파생속성

다른 속성의 영향을 받아 발생하는 속성으로 보통 계산된 값 등이 해당된다.

프로세스 설계 시 데이터 정합성을 유지하기 위해 유의해야할 점이 많으므로 가급적 적게 정의

구성 방식에 따른 분류)

PK(기본키) / FK(외래키) / 일반속성

  • 도메인(Domain)

각 속성이 가질 수 있는 값의 범위.

엔터티 내에서 속성에 대한 데이터타입/크기/제약사항을 지정하는 것

  • 속성의 명명

해당 업무에서 사용하는 이름 부여 서술식 속성명 사용 X, 약어 사용 가급적 X 전체 데이터 모델에서 유일성 확보하는 것이 좋음

관계(Relationship)

인스턴스 사이의 논리적인 연관성으로서 존재의 형태 or 행위로서 서로에게 연관성이 부여된 상태를 의미한다.

  • 관계와 페어링

관계는 엔터티 안에 인스턴스가 개별적으로 관계를 가지는 것이고 이것의 집합을 관계로 표현.

→ 개별 인스턴스가 각각 다른 종류의 관계를 가진다면 두 엔터티 사이 두개이상의 관계 가능.


  • 관계의 표기법

- 관계차수 - Degree/Cardinality)

1:1 관계)

1:M 관계)

M:M관계)

M:N 관계로 표현된 데이터 모델은 이후에 두 개의 주식별자를 상속받은 관계엔터티를 사용하여 3개의 엔터티로 구분하여 M:N을 해소해야 한다.

- 관계선택사양 - Optionality)

IE 표기법 / Barker 표기법 모두 잘 알고 있어야한다. 매우 헷갈리니 주의

IE 표기법의 경우 선택관계의 대상쪽에 0을 표시하여 확인하고,

Barker 표기법의 경우


  • 관계의 읽기

먼저 관계에 참여하는 기준 엔터티를 하나 또는 각으로 읽고 대상 엔터티의 개수를 읽고 관계선택사양과 관계명을 읽도록 한다.

- 기준(Source)엔터티를 한 개 또는 각으로 읽는다.

- 대상(Target)엔터티의 참여관계도 즉, 개수(하나,하나 이상)을 읽는다.

- 관계선택사양과 관계명을 읽는다.

식별자(Identifier)

엔터티를 구분짓는 논리적인 이름, 엔터티를 대표할 수 있는 속성 엔터티에는 반드시 하나의 유일한 식별자가 존재함

논리 데이터 모델링 단계 → 식별자(Identifier), 물리 데이터 모델링 → 키(Key)

  • 식별자 특징

- 유일성 : 주식별자에 의해 엔터티내에 모든 인스턴스 유일하게 구분함 - 최소성 : 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수여야 함 - 불변성 : 주식별자가 한 번 특정 엔터티에 지정되면 그 식별자 값은 변하지 않아야 함 - 존재성 : 주식별자가 지정되면 반드시 데이터 값이 존재해야 함 (Null X)


  • 식별자 분류

웬만하면 암기하자.

  • 주식별자 도출 기준

- 해당 업무에서 자주 이용되는 속성을 지정

ex) 사원번호 vs 주민번호 → 사원번호 선택

- 명칭, 내역 등과 같이 이름으로 기술되는 것들은 피함

ex) 구분자가 존재하지 않을 경우(부서의 이름 등) 새로운 식별자 생성 (일련번호, 코드 등)

- 복합으로 주식별자 구성할 경우 너무 많은 속성 포함되지 않도록

ex) 주식별자 개수가 많을 경우 새로운 인조식별자를 생성하는 것이 데이터 모델을 한층 더 단순하게 만든다.

식별자와 비식별자 관계

  • 외부식별자의 식별자관계

자식엔터티의 주식별자로 부모의 주식별자가 상속이 되는 경우 → NULL이 오면 안된다.

- 발령엔터티는 반드시 사원엔터티가 있어야 자신도 생성될 수 있고 자신의 주식별자도 부모엔터티의 외부식별자 사원번호와 자신의 속성 발령번호로 이루어져 있음을 알 수 있다. → 1:M 관계

- 사원과 임시직사원의 관계와 주식별자를 보면, 임시직사원의 주식별자는 사원의 주식별자와 동일하게 이용되는 경우를 볼 수 있다. → 1:1 관계


  • 외부식별자의 비식별자 관계

부모로부터 속성을 받아 일반속성으로 사용 (약한 종속) 상속받은 속성 타 엔터티에 차단, 부모쪽 관계참여 선택관계

- 부모 없는 자식 생성 가능한 경우

- 엔터티별로 데이터 생명주기 다르게 관리하는 경우

- 여러개 엔터티가 하나로 통합 표현, 각각 별도의 관계 가질 경우

- 자식 엔터티에서 별도의 주식별자 생성이 더 유리할 경우

계약이 반드시 사원에 의해 이루어져 사원번호와 계약번호를 주식별자로 쓸 수 있지만, 계약번호 단독으로도 계약 엔터티의 주식별자를 구성할 수 있으므로 하나만 가지고 있는 것이 더 효율적이다.

  • 비식별자와 식별자 관계 비교

모델링의 이해

- Modeling

일정한 표기법에 의해 규칙을 가지고 표기하는 것,커뮤니케이션 효율성 극대화한 고급화된 표현방법

 

  • 모델링 특징 3가지

- 추상화

현실세계 일정한 형식에 맞추어 표현 (일정한 양식 표기법)

 

- 단순화

복잡한 헌실세계 약속된 규약에 의해 제한된 표기법/언어로 표현 쉽게 이해

 

- 명확화

누구나 이해하기 쉽게 대상의 애매모호함 제거 정확하게 현상을 기술

 

  • 모델링 관점 3가지

 

- 데이터 관점 (Data, What) : 업무와 데이터 or 데이터간의 관계

- 프로세스 관점 (Process, How): 업무가 실제 하는 일 or 무엇을 해야 하는지

- 상관 관점 (Interaction): 업무가 처리하는 일의 방법에 따라 데이터가 받는 영향

 

데이터 모델의 기본 개념의 이해 및 중요성 및 유의점

- Data modeling

정보시스템 구축 위한 데이터 관점 업부 분석기법, 현실세계 데이터를 약속된 표기법에 의해 컴퓨터로 표현, 데이터베이스 구축 위한 분석/설계 과정

 

  • 기능

시스템 가시화 도움, 구조와 행동 명세화 가능 ,구조화된 틀 제공, 다양한 영역 집중 위해 다른 영역 세부사항 숨김 (다양한 관점 제공)

 

데이터 모델링 중요성)

파급효과(Leverage): 데이터 구조 변경으로 인한 일련의 변경작업 위험요소 해결

 

간결한 표현 (Conciseness): 요구사항, 한계 명확하고 간결하게 함으로써 데이터 정합성을 유지한다.

 

데이터 품질유지 (Data Quality): 오래된 데이터의 정확성, 신뢰성 해결


데이터 모델링 유의점)

중복 (Duplication): 데이터베이스가 여러 장소에 같은 정보 저장하는 것 주의

 

비유연성 (Inflexibility): 사소한 업무변화에 데이터모델 수시로 변경되면 유지보수 어려움 →

데이터의 정의를 데이터의 사용 프로세스와 분리

 

비일관성 (Inconsistency) : 데이터의 중복이 없어도 비일관성 발생 가능 → 모델링 할 때 데이터간 상호 연관관계 명확히 정의

 

데이터 모델링의 3단계

개념적 (추상) → 논리적 → 물리적 (구체)

 

개념적 데이터 모델링)

조직, 사용자의 데이터 요구사항을 찾고 분석하는데서 시작한다.

ERD 생성

추상화 수준이 높고 업무중심적이고 포괄적인 수준의 모델링 진행, EA 데이터 모델링, 수립시 사용

 

논리적 데이터 모델링)

DB 설계 프로세스의 Input으로써 비즈니스 정보의 논리적인 구조와 규칙을 명확하게 표현하는 기법

시스템으로 구축하고자 하는 업무에 대해 Key, 속성, 관계 등을 정확하게 표현, 재사용성이 높음

식별자 확정, 정규화, M:M관계 해소, 참조 무결성 규칙

 

cf) 정규화(Normalization) → 일관성을 확보하고 중복을 제거하여 속성들이 가장 적절한 엔터티에 배치되도록 한다.

 

대개 현실 프로젝트에서는 개념적 DM과 논리적 DM을한꺼번에 수행함

 

데이터 독립성

  • 데이터 독립성 필요성

유지보수 비용,데이터 중복성 & 복잡성 증가, 요구사항 대응 저하<과거의 File 시스템>

 

  • 데이터 독립성 효과

각 View의 독립성 유지, 계층별 View에 영향 주지 않고 변경 가능.

단계별 Schema에 따라 DDL과 DML의가 다름을 제공.

 

  • 데이터독립성 요소

외부스키마)

View단계 여러 개의 사용자 관점으로 구성, 즉 개개 사용자 단계로서 개개 사용자가 보는 개인적 DB 스키마, DB의 개개 사용자나 응용프로그래머가 접근하는 DB정의

 

개념스키마)

개념단계, 하나의 개념적 스키마로 구성, 모든 사용자 관점을 통합한 조직 전체의 DB를 기술

통합적 관점, DB에 저장되는 데이터와 그들간의 관계를 표현하는 스키마

 

내부스키마)

내부단계, 내부 스키마로 구성, DB가 물리적으로 저장된 형식, 물리적 장치에서 데이터가 실제적으로 저장되는 방법을 표현하는 스키마.

 

DB 스키마 구조 각각은 상호 독립적인 의미를 가지고 고유한 기능을 가진다. 최종적으로 데이터 모델링은 통합관점의 뷰를 가지고 있는 개념 스키마를 만들어가는 과정으로 이해할 수 있다.

 


- 두 영역의 데이터독립성

논리적 독립성)

개념 스키마가 변경되어도 외부 스키마에는 영향을 미치지 않도록 지원. 논리적 구조의 변경이 응용 프로그램에 영향을 미치지 않게끔 설계

 

물리적 독립성)

내부스키마가 변경되어도 외부/개념 스키마는 영향을 받지 않도록 지원. 저장장치의 구조변경은 응용프로그램과 개념스키마에 영향을 끼치지 않게끔 설계

 

 

ERD(Entity-Relationship Diagram)의 이해

ERD는 각 업무분석에서 도출된 엔터티간의 관계를 이해하기 쉽게 도식화된 다이어그램으로 표시하는 방법으로서 해당 업무에서 데이터의 흐름과 프로세스와의 연관성을 이야하기하는 데 가장 중요한 표기법이자 산출물이다.

 

  • ERD작업순서
  1. 엔터티를 그린다
  1. 엔터티를 적절하게 배치
  1. 엔터티간 관계를 설정한다.
  1. 관계명을 기술
  1. 관계의 참여도를 기술한다.
  1. 관계의 필수여부를 기술한다.

 

 

  • 좋은 데이터 모델의 요소

- 완전성(Completeness)

업무에 필요한 모든 데이터가 데이터 모델에 정의되어 있어야한다.

 

- 중복배제(Non-Redundancy)

하나의 DB내에 동일한 사실은 한 번만 기록하여야 한다. EX)하나의 테이블에 '나이' & '생년월일'

 

- 업무규칙(Business-rule)

업무규칙에 따라 데이터모델은 얼마든지 바뀔 수 있다.

 

- 데이터 재사용(Data Reusability)

데이터의 재사용성은 기업에 많은 이익을 가져다준다. 독립적 설계 → 재사용성 증대

 

- 의사소통(Comuunication)

여러 이해관계자들이 설계자가 정의한 업무 규칙들을 동일한 의미로 받아들이고 정보시스템 활용

 

- 통합성(Integrity)

 

+ Recent posts