모델링이 업인데... 막상 이론은 아무리 공부해놔도 시간이 지나면 흐릿해 진다.
현업에서 모델링할 때 이런 이론은 몸에 배어 있달까? 거의 감각적으로 처리하긴 하는데...
세미나를 준비한다던가... 인터뷰를 준비할 때는 말로 표현할 수 있어야 하다보니...
상대적으로 정확한 용어가 필요해지곤 한다.
매번 책 찾아보기도 귀찮고 이 참에 한번 정리해 봤다.
- 모델링이란?
- 업무의 내용과 정보 시스템의 모습을 적절한 표기법으로 표현하는 것을 말한다.
- 목적
- 업무 내용의 정확한 분석
- 실제 데이터 베이스를 생성하여 개발하고 데이터를 관리
- 주요 요소
- 데이터 모델링
- 프로세스 모델링
- 데이터-프로세스 상관 모델링
- 업무의 내용과 정보 시스템의 모습을 적절한 표기법으로 표현하는 것을 말한다.
- 주요 개념
- Entity Type (= Entity Set)
업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 것으로 영속적으로 존재하는 단위
- Entity Type은 Entity의 집합 or Entity는 Entity Type의 instance
예) [과목] Entity Type은 [국어], [영어], [수학] Entity의 집합이다. or [국어], [영어], [수학]은 [과목] Entity Type의 Entity이다.
cf) ERD(Entity Relationship Diagram)는 Entity간 realationship을 나타낸 diagram으로 정의될 수 있으나, 여기서의 Entity는 Entity Type을 의미한다.
- Entity Type의 조건
- 업무에서 필요하고 관리하고자 하는 정보여야 한다.
- Identifier(identifier)에 의해 각각의 Entity Type이 유일하게 식별되어야 한다.
- 영속적으로 존재하는 2개이상의 Entity 집합이어야 한다. 즉, 1개이 Entity만을 가진 Entity Type은 의미가 없다.
- Business Process에서 반드시 이용되어야 한다.
- Attribute가 있어야 한다.
- Entity Type간의 relationship이 존재해야 한다. (단, 코드나 통계와 같은 경우 고립된 Entity Type을 허용한다.)
- Entity Type의 분류
- 유/무형에 따른 분류
- Tangible Entity Type : 물리적인 형태가 존재 (사원, 물품, 강사)
- Conceptual Entity Type : 관리해야할 개념적 정보 (부서, 장소)
- Event Entity Type : 업무 수행에 따라 발생하는 정보. 일반적으로 발생량이 많고 각종 통계에 이용 (주문, 청구, 미납)
- 발생시점에 따른 분류
- Fundamental Entity Type
다른 Entity Type간의 relationship에 의해 생성되지 않고 독립적으로 존재하는 Entity Type으로, 주로 타 Entity Type의 parent가 된다. 예) 사원, 부서 - Main Entity Type
Fundamental Entity Type에서 발생하며 업무에서 중심적인 역할을 한다. 예) 접수, 계약 - Activity Entity Type
둘 이상의 Entity Type에서 발생한다. 예) 주문내역
- Fundamental Entity Type
- 유/무형에 따른 분류
- Entity Type의 명명
- 업무에서 사용하는 용어
- 약어 사용을 피한다.
- 단수 명사
- 중복되지 않는 유일한 이름
- 가급적 생성되는 의미에 따라 명명
Main Entity Type과 Activity Entity Type의 이름을 지을 때 특히 중요한 기준
예) 고객이 제품을 주문하는 경우, 고객 Entity Type과 제품 Entity Type 사이에 Intersection Entity Type형태의 Activity Entity Type을 생성하게 되는데
이름 후보로는 [고객제품], [주문] 등이 가능하다.
이 경우 [고객제품]은 "고객이 주문한 제품"외에 "고객의 제품"과 같은 해석이 가능하여 혼돈의 여지가 있으므로 [주문]이 적절하다.
- Entity Type은 Entity의 집합 or Entity는 Entity Type의 instance
- Attribute
Entity를 구성하는 더 이상 분리되지 않는 최소의 데이터 단위
- Attribute의 분류
- Basic Attribute : 업무로부터 추출한 가장 일반적인 속성
- Designed Attribute : 코드, 일련번호와 같은 업무의 규칙화를 위해 설계된 속성
- Derived Atrribute : 계산된 속성과 같이 다른 속성에서 파생되는 속성
- Attribute의 명명
- 업무에서 사용하는 용어 사용
- 서술식 또는 소유격의 속성명은 사용하지 않는다.
- 약어 사용을 피한다.
- Entity Type에서 유일한 이름이라야 한다.
가급적 모든 Attribute의 이름을 유일하게 작성한다.
- Attribute의 분류
- Identifier
Entity Type에서 각각의 Entity를 구분할 수 있는 결정자이며, 모든 Entity Type에는 하나 이상의 Identifier가 있어야 한다.
- 구분
- Primary Identifier vs. Alternative Identifier
- Internal Identifier vs. Foreign Identifer
- Single Identifier vs. Composite Identifer
- Original Identifer vs. Artificial Identifer (= Surrogate Identifier)
- 구분
- Relationship
두개의 Entity Type이 존재 또는 행위로 서로에게 영향을 주는 것
"부서 - 사원" : 존재에 의한 관계
"고객 - 주문" : 행위에 의한 관계
- Relationship pairing
- Entity간의 관계 (영업부 - 홍길동, 영업부 - 일지매)
- Entity간의 관계 (영업부 - 홍길동, 영업부 - 일지매)
- Relationship의 종류
- Normal Relationship
- Recursive Relationship
- Parallel Relationship
- Super-Type Sub-Type Relationship
- Identifying Relationship / Non-Identifying Realtionship
- Cardinality
- Entity Type간 Relationship에서 참여자의 수를 표현한 것
- 1 : M
- 1 : 1
- M : N
- Relationship에 대한 Membership
- Mandatory Membership
- Optional Membership
- Relationship의 명명
- 두개의 Entity Type을 각각 시작점과 끝점으로 하는 두개의 Relationship 이름이 필요
- 애매한 동사를 피한다. (관계되다, 관련이 있다, 이다, 한다 등)
- 현재형을 사용한다.
- Relationship을 읽는 방법
- 일반적인 부서 - 사원 관계의 경우
- 하나의 부서는 여러 사원을 포함한다.
- 한명의 사원은 하나의 부서에 소속된다.
- 일반적인 부서 - 사원 관계의 경우
- Relationship pairing
- Entity Type (= Entity Set)
- 정규화
반복적인 데이터를 분리하고 각 데이터를 종속 테이블에 적절히 배치하는 것
- 1차 정규화
복수의 속성 값을 갖는 속성을 분리한다.
- 2차 정규화
Primary Identifier에 종속적이지 않거나 부분적으로 종속적인 속성을 분리한다.
- 3차 정규화
속성에 종속적인 속성을 분리한다.
- 보이스-코드 정규화
Composite Identifier의 경우 Identifer에서 발생하는 중복을 분리한다.
- 4차 정규화
하나의 Entity Type에 복수의 독립적인 다가 속성을 가지고 있는 경우 이를 분리한다.
예) 사원-기술-프로젝트 => 사원-기술, 사원-프로젝트 (기술과 프로젝트는 서로 독립적임)
- 5차 정규화
- 1차 정규화
- 반정규화
정규화된 엔티티 타입, 속성, 관계에 대해 시스템의 성능향상과 개발(development)과 운영(maintenance)의 단순화를 위해 데이터모델을 조정하는 프로세스
- 1차 정규화에 대한 반정규화
최대 발생 값이 고정되어 있는 경우 동일 속성에 대해 복수의 속성값을 인정한다.
예) 업체의 연락처를 최대 2개까지 저장한다는 규칙이 있을 때 업체 Entity Type에 연락처 속성을 2개로 한다.
- 2차 정규화에 대한 반정규화
1:M관계에 있는 두 Entity Type을 하나의 Entity Type으로 통합하고 각 Entity Type의 Primary Identifer로 만든다.
- 3차 정규화에 대한 반정규화
1:1관계에 있는 두 Entity Type을 하나의 Entity Type으로 통합하고 Primary Identifier 중 하나를 일반 속성으로 만든다.
예) 접수, 접수확인을 하나의 Entity Type으로 통합
- Relationship의 반정규화
Join하는 Entity Type의 수를 줄이기 위해 간접적인 Relationship관계의 두 Entity Type간에 직접적인 Relationship을 추가한다.
예) 고객 - 주문 - 주문목록 - 배송의 관계가 있다고 할때, 특정 배송 건에 대한 고객 정보를 빠르게 얻기 위해 고객 - 배송 관계를 추가한다.
- 기타
1:M의 M에 해당하는 이력 정보 중 최근 이력을 1에 해당하는 Entity Type에 속성으로 추가한다.
예) 고객 - 상담이력 관계에서 고객 별 최근 상담 1건을 보여줘야 하는 빈도가 높다면, 최근 상담내용을 고객 Entity Type에 속성으로 추가한다.
- 1차 정규화에 대한 반정규화
'SQL Server > SQL Server Tip & Tech' 카테고리의 다른 글
데이터베이스 명명 규칙 - Database Naming Conventions (3) | 2008.05.14 |
---|---|
Windows Vista에 SQL 2005 Reporting Service 설치 (0) | 2008.03.27 |
테이블 정보 조회 SP (2) | 2008.02.29 |
SQL 2005 기본 템플릿 변경 (2) | 2007.12.24 |
SQL 서버 통합 (0) | 2007.12.09 |