본문 바로가기
책꽂이에 꽂힌 [책]

[데이터모델링] 프로젝트 성패를 결정짓는 데이터 모델링 이야기-김상래 (요약)

by Dayunish 2020. 3. 13.
반응형

[데이터모델링] 프로젝트 성패를 결정짓는 데이터 모델링 이야기-김상래 (요약)

데이터모델링 추천도서

해당문서는 데이터모델링 관련 이해를 돕는 도서 "프로젝트 성패를 결정짓는 데이터 모델링 이야기"의 내용을 요약한 노트형식의 글입니다. 

* 데이터 관점의 주요관심대상=비즈니스 행위

* 업무의 이해→ 업무 데이터의 이해—데이터 구조 모델링→ DB생성
1) 데이터의 근본성격 파악→ 데이터의 집합과 개체 식별
2) 데이터의 종속성 분석→ 데이터의 독립성 확인과 모델 골격 조망

* 관점(디멘션)

* 데이터 모델링=데이터를 이해, 유형화, 구조화하는 과정

* 분석 목적에 따라 아래와 같이 나뉜다. p47
– 처리데이터=OLTP=Online Transaction Processing (i.g 온라인 판매량)
– 분석정보데이터=OLAP=Online Analytical Processing (i.g. 연평균 구매량→ 비즈니스 가치가 높음, 평가/예측이 가능)

* 개체 내부속성과 본질을 따지는 서양인의 사고방식
→ 모델을 기반으로한 classification에 익숙
→ 독립된 개체(entity)와 그 관계(relationship)로 분석하는 데이터 모델링과 닮아있다. p53

* 비즈니스문제 영역의 데이터의 유형과 관계
– 범주화: 유사한것들끼리 묶는 것
- 추상화: 문제영역에서 핵심 특성만 추리는 과정

* 모델러의 역량:
추상화과정에서 복잡화는 단순화하되,
구체성과 다양성이 소거되어 실재를 정확하게 반영하지 못하면 안됨

* 엔터티=데이터를 성격이 유사한 것끼리 모아 놓은 집합

* 데이터모델→ 모형→ 데이터의 저장구조
- 외부스키마: 사용자가 보고자하는 정보단위의 뷰
- 개념스키마(데이터 본질): 개별 사용자 관점을 데이터관점으로 통합한 뷰
- 내부스키마: 데이터가 DBMS 에 저장되는 구조  
※ 개념스키마를 외부스키마처럼 만들지 말 것! 화면이 변결될 때마다 테이블을 수정/삭제해야할 수도 있기 때문→ 데이터 독립성의 가치 이해하기!

1) 개념모델: 최상위의 주요엔터티가 모두 도출되고 식별자(엔터티의 정체성)와 엔터티간의 관계와 주요속성이 그려진 구체적인 모델(데이터 모델링의 반)
2) 논리모델: 모든 엔터티의 속성이 구체화된 모델(정규화=결국 데이터 최적화)→ 개념스키마 고려, 인간이 이해하기 가장 적합, 가능한 테이블과 유사한 상태
3) 물리모델: DBMS가 데이터를 담는 논리적인 구조
- 성능과 자원의 효율성
- 유지보수성
-보안

* 데이터이상현상(Data anomaly): 표 수정/삽입/삭제 시 의도하지 않은 다른 데이터가 영향을 받음 원인-데이터 독립X = 종속성에 영향을 받음

* 정규화이론: 종속성을 기준으로 데이터를 담는 최적의 방법론 → 함수적 종속성이 속성간 종속관계를 추적하는 것
1정규형
2정규형
3정규형

엔터티>주식별자>개체(인스턴스)

엔터티 정의: 집합의 성격에 부합하는 엔터티명 짓기
→ 개체들이 어떤 기준으로 발생되고 관리되는지..
→ 개체의 증가기준도 명확히 정의, 주식별자 정의=엔터티 정의 p97

* 업무행위(관계)와 행위의 주체/대상을 구분하여 데이터를 통합하고 관계를 표현한다.

* 부모(자립) 종속(자식)은 논리적이며 수학적인 집합의 개념, 물리적 개념이 아님! (i.g 상품의 부모는 부품이 아님) ERD(Entity Relationship Diagram)

* 데이터=누가 어떤 것을 대상으로 특정시점에 어떤 업무행위를 했다는 기록 p107

* 트랜잭션 데이터=업무행위에 대한 데이터 p109

“활동근간”=기준

* Account: 업무행위의 최상위 주체로, 관련 업무 처리들을 동일한 성격으로 관리하는 단위 p116

* 모델러의 역량: 업무처리를 묶는 단위로서 상위개체를 잘 정의할 수 있는 능력, 분류와 묶음에 대한 통찰력 p122

정규화이론→ 엔터티 모델링의 어려움과 복잡도 극복
마스터데이터→ 업무행위의 주체와 대상식별
Account→ 접근법

* 서브타입: 전체와 부분을 명시적으로 구분하여 표현하는 방식 p131
- 업무를 입체적으로 조망=논리데이터 모델
- 업무규칙을 쉽게 알아내기 위함(전체, 거버넌스에 꼭 필요한 영향도 분석)
- 엔터티 속성이 아닌 하나의 표현방법
- 집합 내의 개체(row)를 구분하고 유형화하는 도구 p148

* RDB에서의 R은 Relationship이 아닌 Relation으로 관계형이 아닌 2차원 표의 형식을 말하는 것

* 서브타입과 E-R패턴
#1 배타적(Exclusive) i.g. 직급: 동일 차원에서 분할했을 때 분할된 상호간 중복 발생X, 복잡한 조인관계가 형성된다는 단점이 있음
#2 중첩(비배타적 Inclusive) i.g. 역할: 한 사람이 여러일을 동시에 할 수 있음
#3 특정속성이 여러 개의 값을 가질 때, 그 속성을 분리하여 하위 엔터티로 분리하여 관리 → 1정규화의 결과물
#4 값에 상∙하의 관계, 계층이 존재
#5 값에 양방향관계가 존재

* 동질의 통합 엔터티 통합: 배타적 관계가 존재한다는 것은 이들 엔터티가 본질적으로 동질한 집합임을 반증, 이 경우 통합이 필요
- 구조가 단순, 명확해짐
- SQL단순, 코딩량↓, 개발 생산성 증가
- 조인 최소화→ 성능 이슈가 적어짐
- 통합되지 않은 모델 대비 유연성 극대화
→ 단, 통합된 것들의 독립성 유지를 위해 서브타입 명시!

논리모델vs물리모델
- 논리모델: 데이터 발생/존재를 인간이 이해하기 좋은 수준으로 분류
- 물리모델: 하드웨어가 최고의 성능을 발휘하도록 만듦

데이터모델링추천도서 프로젝트의 성패를 결정짓는 데이터 모델링 이야기 - 김상래


* 속성모델링: 속성수준의 메타데이터(용어)정의=데이터 표준화
→ 표준화 목표: 하나의 데이터를 같은 의미, 같은 형태로 사용하는 것 p169
→ 성능저하와 시스템장애를 막기 위해

* 표준도메인: 데이터 저장 형태를 유형화하고 이를 표준화하는 개념 p173

관계(선)의 의미
- 엔터티 사이에 존재하는 연관성, 모델에서는 관계선으로 표현되며 상위 엔터티의 주식별자가 하위 엔터티의 속성으로 관리되는 것 p190
1) 엔터티간의 관련 여부
2) 엔터티간 종속성
3) 업무규칙을 알 수 있음
4) SQL의 조인경로와 조회결과, 집합형태를 알 수 있음
5) 참조무결성 관계를 알 수 있음

* 코드화의 목적: 그룹핑
- 코드: 전사공통 코드, 메타데이터 관리시스템에서 관리(a.k.a자료사전), 분류를 위한 도구
- 식별자: 개별 테이블의 기본 키(실제 업무 행위에 의해 값이 생성), 개별 인스턴스를 유일하게 식별하는 방법 제공, 데이터 집합은 성격에 맞게 분리(종속성), 엔터티명과는 ‘이음동의어’: 명칭은 다르지만 정체성은 같음

식별 vs 비식별
식별: 종속 (i.g. 상품 ---|<- 상품가격)
- 식별관계 처리를 통해 단계를 줄여 접근효율 증대
비식별: 일반속성 (i.g. 신용등급 ---<-고객)
- 비식별관계처리를 통해 주식별자가 단순해짐

<용어정리>

1) 정규화(Normalization) 관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스를 정규화라고 한다. 조금 더 이론적으로 접근해 보면 함수적 종속성을 이용해서 연관성 있는 속성들을 분류하고, 각 릴레이션들에서 이상현상이 생기지 않도록 하는 과정을 말한다. 출처: 데이터베이스 정규화 - 1NF, 2NF, 3NF - YABOONG yaboong.github.io

 2) 데이터베이스 관리 시스템(영어: database management system, DBMS)은 다수의 사용자들이 데이터베이스 내의 데이터를 접근할 수 있도록 해주는 소프트웨어 도구의 집합이다. 출처: 데이터베이스 관리 시스템 - 위키백과, 우리 모두의 백과사전

 3) RDB (Relation Database, 관계형 데이터베이스)란 키(Key)와 값(Value)들의 관계를 테이블화 시킨 데이터베이스를 의미합니다. Entity를 구성하는 논리적 단위로 파일 구조상에서 데이터 항목 내지는 데이터 필드를 의미하며 테이블에서는 하나의 컬럼에 대응합니다. 출처: [Database #7] RDB의 개념 및 구성 - HowUse.net

 4) 참조무결성
데이터베이스의 한곳에서 어떤 특정한 값으로 참조를 하는 정보가 데이터베이스의 다른 곳에 반드시 존재하여야 하는 원칙. 만일 한곳에서 정보를 참조하려고 해도 다른 곳에 정보가 존재하지 않으면 이러한 참조는 잘못된 정보가 된다.
출처: https://ko.dict.naver.com/#/entry/koko/5ae69023395f4da5b60187bad9dd5b77

반응형

댓글