dasp를 공부하면서 논리적 데이터모델링 정리부분이 있어 부록으로 올립니다.
데이터 모델링 이해
논리 데이터 모델링의 핵심은 업무에서 필요로 하는 데이터에 존재하는 사실을 인식, 기록하는 것이다.
→ 어떤 조직의 업무 사실에 기초하여
그 조직에서 필요로 하는 데이터의 구조 및 업무 규칙을 논리 데이터 모델에 기록하는 것이다.
- 논리 데이터 모델링 필수 성공 요소
-
업무를 알고 있는 전문가의 참여는 필수적이다
-
절차보다는 데이터에 초점을 두고 모델링을 진행해라
- 데이터의 구조와 무결성을 함께 고려해라
-
개념화와 정규화 기법을 적용해라
개념화: 현실세계에서 발생하는 업무 데이터를 엔터티, 관계, 속성으로 표현하는 추상화와 동일
정규화: 데이터의 올바른 위치를 찾아주는 기법
-
다이어그램을 이용하여 업무를 표현해라
- 데이터 모델링을 지원하는
데이터 사전을 구축해라.
- 논리데이터 모델링 절차
주제영역 정의
주제영역은 주요 자원, 상품, 활동을 중심으로 조직이 관심을 가지는 영역이다.
주제영역은 조직이 사용하는 데이터의 최상위 집합이다.
예를 들어 제조업체의 경우 인사, 고객, 상품, 구매, 생산, 판매 분야 등의 주제 영역이 있을 수 있다.
하나의 주제 영역 내에 정의되는 엔터티간의 관계는 밀접하고, 다른 주제 영역에 포함되는 엔터티 간의 상호작용은 최소화할 수 있도로 정의해야 한다.
계획수립 단계는 하향식 분석을 원칙으로 하고, 검증을 위해서 상향식 분석을 부분적으로 사용한다.
데이터를 하향식으로 분석하기 위한 개념으로 유용한 것이 주제영역이다.
주제영역은 데이터의 계층 구조를 파악하는데 도움을 주며, 품질 확보에도 기여한다.→ 시간을 단축시키지는 않는다.
엔터티 정의
엔터티란 조직에서 업무를 수행하는데 필요한 사물, 사건 또는 개념을 나타내는 어떤 것
현실 세계에 무수히 존재하는 인스턴스들을 추상화라는 개념을 통해서 엔터티로 정의하여 사용.
- 엔터티분류
유형엔터티: 물리적으로 존재하는 대상(고객, 상품)
활동엔터티: 어떤 사건에 관한 정보(주문, 계약, 장비고장 등)
개념엔터티: 관리할 정보가 있는 무형의 개념(계정과목, 성적)
- 모델관점 분류
독립엔터티: 인스턴스의 식별을 위해 다른 어떤 인스턴스에도 의존적이지 않은 엔터티
종속엔터티: 인스턴스의 식별을 위해 다른 인스턴스에 의존해야만 식별이 가능하다.
- 발생시점 분류키 엔터티
: 자신의 부모를 가지지 않는 엔터티
사원 엔터티에 있는 '홍길동'이란 인스턴스는 아직 부서가 정해지지 않았더라도 사원으로서 정의하는데 아무 문제가 없다.
키 엔터티를 제외한 다른 모든 엔터티는 부모 엔터티를 가지고 있어야만 태어날 수 있다.
메인 엔터티
: 키 엔터티를 제외한 엔터티 중에서 업무의 중심에 해당하는 엔터티
액션 엔터티
: 키엔터티, 메인엔터티를 제외한 전부
모델링이 좀 더 구체적으로 진행되더라도 키 엔터티와 메인 엔터티는 집합의 본질이 크게 달라지지 않는다. 그러나
액션 엔터티는 상위 엔터티들이 어떻게 결정되느냐에 따라서 크게 영향을 받기 떄문에 업무의 본질은 살아있지만 최초에 예상했거나 과거에 정의했던 식별자가 크게 달라질 수도 있따.
- 엔터티 도출
기업의 전략&목표 분석, 현 시스템 분석, 사용자 인터뷰, 정보요구 분석, 문서&보고서 작업
- 엔터티 검증
논리 데이터 모델에 표현되는 모든 엔터티는
1. 데이터 모델의 구현 주체인
조직의 업무를 수행하는데 필요한 의미있는 정보를 나타내야 한다.
조직에 따라서 엔터티의 범위는 천차만별 일 수 있다.
2.
하나하나의 특성 사례가 아닌 유사한 사물들을 대표하는 집합체여야 한다.
'구매부서에서 공급처에 자재를 주문한다'와 같은 업무 분석 사항에서 만약 엔터티를 '구매부서'로 정의하게 되면, 조직 내에 엔터티가 너무 많아 관리가 불가능하다. → 구매부서는 단일사례
이의 경우에 엔터티를 '부서'로 정의하고, 구매부서는 이 엔터티의 인스턴스가 된다.
3. 속성들에 의해 결정된 단일 개념을 나타내야 한다.
4. 엔터티 내 인스턴스의 출현을 구별할 수 있는 능력을 제공해야하며, 정규화 규칙 만족.
엔터티는 인스턴스를 구별할 수 있는 능력을 제공해야한다. 엔터티 무결성
인스턴스를 구별할 수 있는 능력, 즉 식별이란 여러분들이 얘기하고 있는 사물이나 사람을 알고 있냐는 것이다.
엔터티 내 인스턴스의 출현을 구별할 수 있는 능력을 제공하기위해 식별자를 구성하는 일련의
1) 속성값이 반드시 있어야 하고
2) 이 값들이 유일해야 하며
3) 이 일련의 속성이 최소한의 개수로 이뤄져야 한다.
- 엔터티 구체화
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)선분이력
데이터 변경의 시작 시점부터 그 상태의 종료 시점까지 관리
가 통화의 특정기간동안 유효한 환률을 관리
선분이 아무리 길어도 레코드는 하나이다.
- 선분이력관리 유형
인스턴스 레벨 이력관리
속성 레벨 이력관리
주제 레벨 이력관리
'Certification_Note > SQL-D' 카테고리의 다른 글
[SQL-D]#06 데이터 모델과 성능 - 파티셔닝 & 분산 데이터 모델 (0) | 2021.04.20 |
---|---|
[SQL-D]#05 데이터 모델과 성능 - 정규화, 반정규화와 성능 (0) | 2021.04.19 |
[SQL-D]#04 데이터 모델링의 이해 - 물리 데이터 모델링 (1) | 2021.04.19 |
[SQL-D]#02데이터 모델링의 이해 - 엔터티, 속성, 관계, 식별자, 비식별자 (1) | 2021.04.16 |
[SQL-D]#01 데이터 모델링의 이해 - 모델링, 데이터 모델링, ERD (0) | 2021.04.14 |
Uploaded by Notion2Tistory v1.1.0