코딩공부/분석
[데이터 분석] 논리 데이터 모델링
리버0827
2022. 11. 14. 15:29
728x90
반응형
1. 논리 데이터 모델링 개념
논리 데이터 모델링 정의 및 절차
본 단계에서는 구현은 모델링하지 않고 비즈니스만 모델링 함
2. 주제 영역 정의
주제 영역이란?
- 주제 영역(Subject Area)
- 데이터에 대한 상위 수준의 분류로, 조직에서 관심을 가지는 기능 또는 주요 토픽에 대한 엔터티의 그룹을 말함
- 주제 영역을 구분하는 이유
- 개발하고자 하는 시스템의 범위를 파악하기 위해
- 한 사람이 모든 업무의 데이터 모델을 작성하기 어렵기 때문
- 업무 사이의 인터페이스가 필요한지 파악하기 위해
- 개발의 우선순위를 결정하기 위해
3. 엔터티
엔터티의 정의
- 엔터티란?
- 엔터티는 업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 것으로 영속적으로 존재하는 단위
- 엔터티는 엔터티 타입 또는 엔터티 클래스라고도 함
엔터티와 어커런스(Occurrence)
엔터티의 개념
과목은 정보공학이나 JAVA 등을 포함하는 동일한 성격의 어커런스들을 보관하는 논리적인 장소
엔터티의 요건
- 반드시 업무에서 필요하고 관리하고자 하는 정보여야 한다 (예: 환자, 토익의 응시...)
- 유일한 식별자에 의해 개별 어커런스의 식별이 가능해야 한다
- 영속적으로 존재하는 어커런스의 집합이어야 한다.("한 개"가 아니라 "두 개 이상")
- 업무 프로세스에 의해 이용되어야 한다
- 반드시 속성이 있어야 한다
- 다른 엔터티와 최소 한 개 이상의 관계가 있어야 한다
[ 엔터티 도출 작업 절차 ]
- 엔터티 도출 방법에 의해 엔터티를 선정한다
- 선정된 엔터티에 대한 엔터티 정의서를 작성한다
- 고객과 검증 회의를 한다
- ERD에 엔터티를 표현한다
엔터티 선정 방법
엔터티 도출 방법에 의해 엔터티를 선정한다.
- 업무 기술서, 장표, 인터뷰 정리 문서 등에서 명사를 구분한다
- 개념이 불분명한 것, 광법위한 것은 제거한다
- 엔터티의 특성이나 속성의 값은 제거한다
- 포괄적인 업무 프로세스에 해당되는 명사는 제거한다
- 중복되는 명사는 제거한다
- 누락된 엔터티가 존재하는지 유추해 본다
엔터티 도출 결과
최종 엔터티 후보 - 업무 기술서에 의한 엔터티 후보 선정
이 시나리오에서 분석된 엔터티의 최종 후보는 물품, 입찰, 접수, 경매공고, 입찰인, 매수신청, 날찰, 낙찰인, 진행이다
엔터티 정의서 작성
선정된 엔터티에 대한 엔터티 정의서를 작성한다
엔터티 확정
- 고객과 검정 회의를 한다
- ERD에 엔터티를 표현한다
4. 관계 정의
관계의 정의
관계란?
- 관계란 두 개의 엔터티 사이의 논리적인 연결 즉 엔터티와 엔터티가 존재의 형태나 행위로서 서로에게 영향을 주는 형태를 말한다
[ 관계의 의미 ]
- 비즈니스에서 중요한 어떤 것(동사)을 표현
- 엔터티 간의 상호적 의미
- 일반적으로 두 엔터티 사이에 존재하거나, 한 엔터티 스스로 관계를 가질 수도 있음(recursive / reflexive relationship)
- 하나의 관계는 두 가지 관점을 가짐(Relationship membership) - 양쪽 측면에서 역할 명을 지정할 수 있음
관계의 분류
관계 페어링(Pairing)
관계 페어링의 예시
관계의 3요소
- 멤버쉽(Membership)
- 관계 시작점과 끝점 모두 이름을 가져야 하며 멤버십의 성격에 따라 능동적이거나 수종적으로 명명한다
- 구체적이어야 한다(관계 된다, 관련 있다, ~이다, ~한다 등은 피한다)
- 고객이 사용하는 용어를 사용한다
- 현재형으로 표현한다
- 카디널리티(Cadinality)
- 관계의 참여도(Optionality)
관계의 멤버쉽
- 멤버십(RELATIONSHIP MEMBERSHIP)
- 멤버십은 엔터티가 참여하는 관계에 대한 자신으로부터의 관점이다.
카디널 리티(Cardinality)
- 1: 1 (ONE-TO-ONE)
- 1: M (ONE-TO-MANY)
- M: M (MANY-TO-MANY)
관계의 참여도
- 선택(Optional)
[ 관계의 특징 ]
- 관계는 엔터티와는 다르게 업무 가술서 나 장표에 정확하게 기술되지 않는다
- 관계는 업무의 흐름의 내용(의미)을 파악하거나 장표의 구성을 보고 모델러가 판단해야 한다
- 관계는 업무에 있어 논리적인 흐름이 표현되는 데이터 모델의 표기이다
[ 관계 정의 절차 ]
- 업무 기술서, 장표, 인터뷰 정리 문서 등에 동사를 구분한다
- 도출된 엔터티와 관계를 이용하여 관계 정의서를 작성하도록 한다
- 고객에게 질문하여 관계에 대해 더 세분화하고 정확하게 도출하는 작업을 한다
- 데이터 모델링 도구(Tool)나 칠판, 포스트잇을 이용하여 직접 모델을 그려본다
- 고객에게 질문하고 협의하여 모델을 검토하는 시간을 갖는다
5. 식별자 정의
식별자 정의
식별자란?
- 식별자는 엔터티 내에서 어커런스들을 구분할 수 있는 구분 자이다
식별자의 분류
- 대표성 여부
- 주 식별자 : 엔터티 내에서 각 어커런스를 구분할 수 있는 구분 자이며, 타 엔터티와 참조 관계를 연결할 수 있는 식별자
- 보조 식별자 : 엔터티 내에서 각 어커런스를 구분할 수 있는 구분 자이나 대표성을 가지지 못해 참조 관계 연결을 못함
- 스스로 생성 여부
- 내부 식별자 : 엔터티 내부에서 스스로 만들어지는 식별자
- 외부 식별자 : 타 엔터티와의 관계를 통해 타 엔터티로부터 받아오는 식별자
- 단일 속성 여부
- 단일 식별자 : 하나의 속성으로 구성된 식별자
- 복합 식별자 : 둘 이상의 속성으로 구성된 식별자
- 대체 여부
- 원조 식별자 : 업무에 의해 만들어지는 식별자
- 대리 식별자 : 업무적으로 만들어지지는 않지만 원조 식별자가 복잡한 구성을 가지고 있기 때문에 인위적으로 만든 식별자
[ 주 식별자의 특징 ]
- 엔터티 내의 모든 어커런스들을 유일하게 구별할 수 있어야 한다
- 일단 특정 엔터티에 주 식별자가 지정되면 그 값은 변하지 않아야 한다
- 주 식별자가 지정되면 데이터 값이 반드시 존재해야 한다
외부 식별자
- 외부 식별자는 다른 엔터티와의 관계를 통해 자식 쪽 엔터티에 생성되는 속성이다
- 외부 식별자는 관계 종류(식별자 관계, 비 식별자 관계)에 따라, 자식 엔터티에서 주 식별자 역할을 할 수도 있고 일반 속성 역할을 할 수도 있다
[ 비식별자 관계를 사용하는 경우]
- 여러 개의 엔터티가 하나의 엔터티로 통합되어 표현될 경우(각각은 식별자 관계로 하여도 무방)
- 자식 엔터티에 별도의 주 식별자를 가지고 있는 것이 더 유리하다고 판단되는 경우
- 자식과 관련이 있는 엔터티로의 주 식별자 상속을 차단하기 위해서
- 부모 없는 자식이 생성될 수 있는 경우
식별자와 비식별자 관계에 따른 SQL 비교
식별자와 비식별자 관계에 따른 SQL 비교
항목 | 식별자 관계 | 비식별자 관계 |
목적 | 강한 연결관계 표현 | 약한 연결관계 표현 |
자식 주 식별자 영향 |
자식 주 식별자의 구성에 포함됨 | 자식 일반 속성에 포함됨 |
표기법 | 실선 표현 | 점선 표현 |
연결 고려 사항 | - 반드시 부모 엔터티 종속 - 자식 주 식별자 구성에 부모 주 식별자 포함 필요 - 상속받은 주 식벼라 속성을 타 엔터티에 이전 필요 |
- 약한 종속관계 - 자식 주 식별자 구성을 독립적으로 구성 - 자식 주 식별자 구성에 부모 주 식별자 부분 필요 - 상속받은 주 식벼라 속성을 타 엔터티에 차단 필요 - 부모 쪽의 관계 참여가 선택 관계 |
6. 속성 정의
속성의 정의
속성이란?
- 속성이란 업무에 필요한 엔터티에서 관리하고자 하는 더 이상 분리되지 않는 최소의 데이터 단위이다.
특성에 따른 속성의 분류
1 Basic 업무상 수집된 기본 속성 2 Designend 업무에 필요한 정보를 주기 위해 시스템에서 고안한 속성(코드 등) 3 Derived 다른 속성에 의해 계산되거나 영향을 받아 생성된 속성(금액 총합, 이자 등)
[ 속성의 명명규칙 - 사례 ]
- 시스템 용어사전에 등록된 용어만을 사용하여 가능하면 5 단어 이내로 작성한다.
- 속성명은 Qualifier + Domain 형태로 명명하며, 다른 속성명과 구분이 어려운 경우 엔터티명을 추가적인 Qualifier로 사용한다
- 반드시 도메인 정의서에서 정의된 관련 칼럼 접미어로 끝나도록 한다
- 논리 데이터 모델의 속성명은 한글로 기입함을 원칙으로 하고, 한들 명사 간에는 '/', '-', 띄어쓰기 등을 넣지 않는다
- 한글 적용이 불가능한 영문 단어일 경우 영문을 사용할 수 있다
- 영문은 대문자 알파벳만 사용하여 단어 간에는 띄어쓰기를 사용하지 않으며, 단어 구분이 필요한 경우 '_'를 사용한다
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
반응형