코딩공부/분석

[데이터 분석] 논리 데이터 모델링

리버0827 2022. 11. 14. 15:29
728x90
반응형

1. 논리 데이터 모델링 개념

논리 데이터 모델링 정의 및 절차

본 단계에서는 구현은 모델링하지 않고 비즈니스만 모델링 함

 

2. 주제 영역 정의

주제 영역이란?
  • 주제 영역(Subject Area)
    • 데이터에 대한 상위 수준의 분류로, 조직에서 관심을 가지는 기능 또는 주요 토픽에 대한 엔터티의 그룹을 말함
  • 주제 영역을 구분하는 이유
    • 개발하고자 하는 시스템의 범위를 파악하기 위해
    • 한 사람이 모든 업무의 데이터 모델을 작성하기 어렵기 때문
    • 업무 사이의 인터페이스가 필요한지 파악하기 위해
    • 개발의 우선순위를 결정하기 위해

3. 엔터티

엔터티의 정의
  • 엔터티란?
    • 엔터티는 업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 것으로 영속적으로 존재하는 단위
    • 엔터티는 엔터티 타입 또는 엔터티 클래스라고도 함
엔터티와 어커런스(Occurrence)

엔터티의 개념

과목은 정보공학이나 JAVA 등을 포함하는 동일한 성격의 어커런스들을 보관하는 논리적인 장소

 

엔터티의 요건
  1. 반드시 업무에서 필요하고 관리하고자 하는 정보여야 한다 (예: 환자, 토익의 응시...)
  2. 유일한 식별자에 의해 개별 어커런스의 식별이 가능해야 한다
  3. 영속적으로 존재하는 어커런스의 집합이어야 한다.("한 개"가 아니라 "두 개 이상")
  4. 업무 프로세스에 의해 이용되어야 한다
  5. 반드시 속성이 있어야 한다
  6. 다른 엔터티와 최소 한 개 이상의 관계가 있어야 한다

[ 엔터티 도출 작업 절차 ]

  1. 엔터티 도출 방법에 의해 엔터티를 선정한다
  2. 선정된 엔터티에 대한 엔터티 정의서를 작성한다
  3. 고객과 검증 회의를 한다
  4. ERD에 엔터티를 표현한다
엔터티 선정 방법

엔터티 도출 방법에 의해 엔터티를 선정한다.

  1. 업무 기술서, 장표, 인터뷰 정리 문서 등에서 명사를 구분한다
  2. 개념이 불분명한 것, 광법위한 것은 제거한다
  3. 엔터티의 특성이나 속성의 값은 제거한다
  4. 포괄적인 업무 프로세스에 해당되는 명사는 제거한다
  5. 중복되는 명사는 제거한다
  6. 누락된 엔터티가 존재하는지 유추해 본다
엔터티 도출 결과

최종 엔터티 후보 - 업무 기술서에 의한 엔터티 후보 선정

이 시나리오에서 분석된 엔터티의 최종 후보는 물품, 입찰, 접수, 경매공고, 입찰인, 매수신청, 날찰, 낙찰인, 진행이다
엔터티 정의서 작성

선정된 엔터티에 대한 엔터티 정의서를 작성한다

엔터티 확정
  1. 고객과 검정 회의를 한다
  2. ERD에 엔터티를 표현한다

4. 관계 정의

관계의 정의

관계란?

  • 관계란 두 개의 엔터티 사이의 논리적인 연결 즉 엔터티와 엔터티가 존재의 형태나 행위로서 서로에게 영향을 주는 형태를 말한다

[ 관계의 의미 ]

  1. 비즈니스에서 중요한 어떤 것(동사)을 표현
  2. 엔터티 간의 상호적 의미
  3. 일반적으로 두 엔터티 사이에 존재하거나, 한 엔터티 스스로 관계를 가질 수도 있음(recursive / reflexive relationship)
  4. 하나의 관계는 두 가지 관점을 가짐(Relationship membership) - 양쪽 측면에서 역할 명을 지정할 수 있음
관계의 분류

관계 페어링(Pairing)

관계 페어링의 예시

관계의 3요소
  1. 멤버쉽(Membership)
    • 관계 시작점과 끝점 모두 이름을 가져야 하며 멤버십의 성격에 따라 능동적이거나 수종적으로 명명한다
    • 구체적이어야 한다(관계 된다, 관련 있다, ~이다, ~한다 등은 피한다)
    • 고객이 사용하는 용어를 사용한다
    • 현재형으로 표현한다
  2. 카디널리티(Cadinality)
  3. 관계의 참여도(Optionality)
관계의 멤버쉽
  1. 멤버십(RELATIONSHIP MEMBERSHIP)
    • 멤버십은 엔터티가 참여하는 관계에 대한 자신으로부터의 관점이다.
카디널 리티(Cardinality)
  1. 1: 1 (ONE-TO-ONE)
  2. 1: M (ONE-TO-MANY)
  3. M: M (MANY-TO-MANY)
관계의 참여도
  1. 선택(Optional)

[ 관계의 특징 ]

  • 관계는 엔터티와는 다르게 업무 가술서 나 장표에 정확하게 기술되지 않는다
  • 관계는 업무의 흐름의 내용(의미)을 파악하거나 장표의 구성을 보고 모델러가 판단해야 한다
  • 관계는 업무에 있어 논리적인 흐름이 표현되는 데이터 모델의 표기이다

[ 관계 정의 절차 ]

  1. 업무 기술서, 장표, 인터뷰 정리 문서 등에 동사를 구분한다
  2. 도출된 엔터티와 관계를 이용하여 관계 정의서를 작성하도록 한다
  3. 고객에게 질문하여 관계에 대해 더 세분화하고 정확하게 도출하는 작업을 한다
  4. 데이터 모델링 도구(Tool)나 칠판, 포스트잇을 이용하여 직접 모델을 그려본다
  5. 고객에게 질문하고 협의하여 모델을 검토하는 시간을 갖는다

5. 식별자 정의

식별자 정의

식별자란?

  • 식별자는 엔터티 내에서 어커런스들을 구분할 수 있는 구분 자이다
식별자의 분류
  • 대표성 여부
    • 주 식별자 : 엔터티 내에서 각 어커런스를 구분할 수 있는 구분 자이며, 타 엔터티와 참조 관계를 연결할 수 있는 식별자
    • 보조 식별자 : 엔터티 내에서 각 어커런스를 구분할 수 있는 구분 자이나 대표성을 가지지 못해 참조 관계 연결을 못함
  • 스스로 생성 여부
    • 내부 식별자 : 엔터티 내부에서 스스로 만들어지는 식별자
    • 외부 식별자 : 타 엔터티와의 관계를 통해 타 엔터티로부터 받아오는 식별자
  • 단일 속성 여부
    • 단일 식별자 : 하나의 속성으로 구성된 식별자
    • 복합 식별자 : 둘 이상의 속성으로 구성된 식별자
  • 대체 여부
    • 원조 식별자 : 업무에 의해 만들어지는 식별자
    • 대리 식별자 : 업무적으로 만들어지지는 않지만 원조 식별자가 복잡한 구성을 가지고 있기 때문에 인위적으로 만든 식별자 

[ 주 식별자의 특징 ]

  1. 엔터티 내의 모든 어커런스들을 유일하게 구별할 수 있어야 한다
  2. 일단 특정 엔터티에 주 식별자가 지정되면 그 값은 변하지 않아야 한다
  3. 주 식별자가 지정되면 데이터 값이 반드시 존재해야 한다
외부 식별자
  • 외부 식별자는 다른 엔터티와의 관계를 통해 자식 쪽 엔터티에 생성되는 속성이다
  • 외부 식별자는 관계 종류(식별자 관계, 비 식별자 관계)에 따라, 자식 엔터티에서 주 식별자 역할을 할 수도 있고 일반 속성 역할을 할 수도 있다

[ 비식별자 관계를 사용하는 경우]

  1. 여러 개의 엔터티가 하나의 엔터티로 통합되어 표현될 경우(각각은 식별자 관계로 하여도 무방)
  2. 자식 엔터티에 별도의 주 식별자를 가지고 있는 것이 더 유리하다고 판단되는 경우
  3. 자식과 관련이 있는 엔터티로의 주 식별자 상속을 차단하기 위해서
  4. 부모 없는 자식이 생성될 수 있는 경우
식별자와 비식별자 관계에 따른 SQL 비교

식별자와 비식별자 관계에 따른 SQL 비교
항목 식별자 관계 비식별자 관계
목적 강한 연결관계 표현 약한 연결관계 표현
자식 주 식별자
영향
자식 주 식별자의 구성에 포함됨 자식 일반 속성에 포함됨
표기법 실선 표현 점선 표현
연결 고려 사항 - 반드시 부모 엔터티 종속
- 자식 주 식별자 구성에 부모 주 식별자 포함 필요
- 상속받은 주 식벼라 속성을 타 엔터티에 이전 필요
- 약한 종속관계
- 자식 주 식별자 구성을 독립적으로 구성
- 자식 주 식별자 구성에 부모 주 식별자 부분 필요
- 상속받은 주 식벼라 속성을 타 엔터티에 차단 필요
- 부모 쪽의 관계 참여가 선택 관계

6. 속성 정의

속성의 정의

속성이란?

  • 속성이란 업무에 필요한 엔터티에서 관리하고자 하는 더 이상 분리되지 않는 최소의 데이터 단위이다.
특성에 따른 속성의 분류
1 Basic 업무상 수집된 기본 속성
2 Designend 업무에 필요한 정보를 주기 위해 시스템에서 고안한 속성(코드 등)
3 Derived 다른 속성에 의해 계산되거나 영향을 받아 생성된 속성(금액 총합, 이자 등)

[ 속성의 명명규칙 - 사례 ]

  1. 시스템 용어사전에 등록된 용어만을 사용하여 가능하면 5 단어 이내로 작성한다.
  2. 속성명은 Qualifier + Domain 형태로 명명하며, 다른 속성명과 구분이 어려운 경우 엔터티명을 추가적인 Qualifier로 사용한다
  3. 반드시 도메인 정의서에서 정의된 관련 칼럼 접미어로 끝나도록 한다
  4. 논리 데이터 모델의 속성명은 한글로 기입함을 원칙으로 하고, 한들 명사 간에는 '/', '-', 띄어쓰기 등을 넣지 않는다
  5. 한글 적용이 불가능한 영문 단어일 경우 영문을 사용할 수 있다
  6. 영문은 대문자 알파벳만 사용하여 단어 간에는 띄어쓰기를 사용하지 않으며, 단어 구분이 필요한 경우 '_'를 사용한다

7. 용어사전, 도메인 정의 등 데이터 표준 이해

용어사전이란?
  • 엔터티와 속성에 업무상 의미가 있고 일관된 명칭을 부여하기 위해 정의한 용어 규칙과 그 용어에 대한 해설을 의미
  • 용어사전(데이터 사전)을 정의하는 이유는 논리 데이터 보델에 기술된 속성명과 엔터티명에 업무적인 용어를 적용시키거나 프로젝트에서 사용하기 위한 이름을 부여하여 데이터 모델과 애플리케이션 인터페이스에서 효율적인 정보 시스템을 구축하는 것을 목적으로 함
  • 용어사전에 등록한 용어에 대해 자세하게 정의를 하는 것이 업무를 이해하는데 도움이 됨

8. 정규화 이해

정규화의 정의

정규화란?

  • 데이터 처리에 있어 입력, 수정, 삭제의 이상현상을 제거하여 안정적 처리를 보장하기 위한 방법
  • 기본 원칙은 테이블에 중복된 데이터가 없도록 하는 것임
  • 다양한 유형의 검사를 통해 데이터 모델을 더욱 구조화하고 개선시켜 나가는 절차에 관련된 이론
정규화(Nomrmalization)의 단계
정규화 정규화 내용
1차 정규화 - 복수의 속성값을 갖는 속성을 분리
- PK에 대한 Atomic Value 확보
2차 정규화 - 주 식별자 전체에 종속적이지 않은 속성의 분리
- 부분 종속 속성(Parital Dependency Attribute)을 분리
3차 정규화 - 속성에 종속적인 속성의 부니
- 이전 종속 속성(Transitive Dependency)의 분리
1차 정규화

1차 정규화 - Romove Repearing Group 

: 반복적인 속성 값이 나타나는 경우 별도의 엔터티로 분리

  • 입력 이상: 하나의 주문에 주문한 제품이 늘어나면 계속 칼럼이 추가되어야 함
  • 수정 이상: 마우스의 재고 수량을 9,702개에서 15,000개로 변경하고자 한다면 데이터를 세 번 수정해야 하며, 하나라도 수정되지 않으면 정확한 재고를 할 수 없음
  • 삭제 이상: 제품번호 1201인 스피커를 주문한 CB231 주문을 삭제하려고 한다면 제품에 대한 정보까지 삭제됨
2차 정규화

2차 정규화 - Remove Partial Dependency

: 주 식별자 전체에 종속적이지 않은 속성을 별로의 엔터티로 분리

  • 입력 이상: 새로운 제품을 추가할 때 주문이 같이 되지 않으면 제품을 추가하는 것이 불가능
  • 수정 이상: 하나의 제품에 대해서 재고 수향을 변경하기 위해서는 주문 목록에서 해당 제품의 모든 재고 수량을 수정해야 함
  • 삭제 이상: 주문 목록을 삭제할 경우 한 번만 주문되었던 제품인 경우 해당 주문 목록도 같이 삭제됨
3차 정규화

3차 정규화 - Romeve Transitive Dependency(이천 종속)

: 비 식별자에 종속적인 속성을 별도의 엔터티로 분리

  • 입력 이상: 새로운 고객을 등록하려고 해도 주문을 하지 않으면 등록할 수 없음
  • 수정 이상: 여러 번 주문한 고객의 사업자 번호를 변경하려고 할 경우 여러번 수정해야 함
  • 삭제 이상: 소객이 주문을 취소한 경우 주문 정보만 삭제되는 것이 아니고 고객의 정보까지 같이 삭제됨
728x90
반응형