데이터베이스 설계와 구축 - 성능까지 고려한 데이터 모델링 Part 1 논리설계
Chapter 1. 데이터 모델링 주요 개념
1. 엔티티타입
* 엔티티 : 업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 것으로 영속적으로 존재하는 단위
* 특징
- 업무에서 필요하고 관리하고자 하는 정보
- 유일한 식별자(Unique Indentifier)에 의해 식별이 가능해야 함
- 영속적으로 존재하는 엔티티의 집합이 되어야 함
- 업무프로세스는 그 엔티티타입을 반드시 이용해야함
- 엔티티에는 반드시 속성(Attributes)이 포함되어야 함
- 엔티티 타입은 다른 엔티티타입과 최소 한 개 이상의 관계가 있어야 함
* 분류
- 유무형에 때른 분류
(1) Tangible entity type : 물리 형태 존재, 안정적이며 지속적으로 활용되는 타입(사원, 물품, 강사 등)
(2) Conceptual entity type : 물리 형태 없음, 관리해야 할 개념적 정보 (조직, 상품, 장소 등)
(3) Event entity type : 수행에 따라 발생되는 타입. 비교적 발생량 많으며 각종 통계자료에 이용(주문, 청구 미납 등)
- 발생 시점에 따른 분류
(1) Fundamental Entity Type (기본 엔티티타입) : 독립적으로 생성되며 자신은 타 엔티티의 부모 역할
(2) Main Entity Type (중심 엔티티타입) : 업무의 중심역할, 데이터양 방대, 관계를 통한 행위 엔티티타입 생성
(3) Action Entity Type (행위 엔티티타입) : 두 개 이상의 부모 엔티티타입에서 발생, 잦은 내용변경, 데이터양 증가, 설계/모델링에서 도출됨
※ 엔티티타입을 꼭 구분할 필요는 없으나 분류를 명확히 하면 업무 분석에 효과적임
* 엔티티타입의 명명
- 현업에서 사용하는 용어를 사용
- 약어 사용 X
- 단수 명사 사용
- 유일한 이름 부여
- 생성의미에 따라 이름 부여
2. 속성
* 속성 : 업무에 필요한 엔티티에서 관리하고자 하는, 분리되지 않는 최소 데이터 단위
* 규칙
(1) 한 개의 엔티티타입은 두 개 이상의 엔티티 집합이어야 한다.
(2) 한 개의 엔티티는 두 개 이상의 속성을 갖는다.
(3) 한 개의 속성은 한 개의 속성값을 갖는다.
* 분류
- 특성에 따른 분류
(1) Basic Attribute (기본속성) : 업무분석을통해 바로 정의된 속성 (이름, 주소 등)
(2) Design Attribute (설계속성) : 업무에서는 존재하지 않지만 설계를 통해 도출하는 속성 (코드, 일련번호 등)
(3) Derived Attribute (파생속성) : 다른 속성에서부터 계산 또는 변형되어 생성되는 속성
- 엔티티 구성방식에 따른 분류
(1) PK 속성 : 엔티티 식별 가능한 속성
(2) FK 속성 : 다른 엔티티와의 관계에서 포함된 속성
(3) 일반 속성 : PK, FK에 속하지 않은 나머지 속성
* 속성의 명명
- 해당업무에서 사용하는 이름 부여
- 서술식 속성명은 사용 X
- 약어 사용 가급저거 자제
- 엔티티타입에서 유일하게 식별가능하도록 지정
3. 식별자
* 식별자 : 하나의 엔티티 구분할 수 있는 결정자, 모든 엔티티타입에는 하나 이상의 식별자 존재
* 특징
- 식별자에 의해 모든 엔티티가 유일하게 구별되어야함
- 식별자가 지정되면 그 식별자는 변하지 않아야 함
- 주식별자는 지정되면 주식별자 속성에 반드시 데이터가 존재해야함
* 분류
- 주식별자/보조식별자
(1) 주식별자 : 엔티티타입의 대표성을 나타내는 유일한 식별자
(2) 보조식별자 : 주식별자를 대신하여 보조적으로 엔티티를 식별
- 내부식별자/외부식별자
(1) 내부식별자 : 타 엔티티에서 가져오지 않고 스스로 생성되는 식별자
(2) 외부식별자 : 관계에 의해 주식별자를 상속받아 생성됨
- 단일식별자/복합식별자
(1) 단일식별자 : 한가지 속성으로만 이루어진 경우
(2) 복합식별자 : 두 개 이상의 속성으로 구성된 경우
- 원조식별자/대리식별자
(1) 원조식별자
(2) 대리식별자 : 여러개의 속성을 묶어 하나의 속성으로 활용하는 경우/복합식별자를 일반속성으로 내리고 일련번호 형태를 사용하는 식별자
4. 관계
* 관계 : 두 개의 엔티티타입 사이의 논리적 관계
* 관계 페어링 (Relationship Pairing) : 각 엔티티들은 자신이 관련된 엔티티들과 관계의 어커런스로 참여하는 형태
* 관계의 명명
- 애매한 동사 피하기
- 현재형으로 표현
* 관계의 카디널리티
- 두 엔티티타입 간 관계에서 참여자의 수를 표현하는 것
- 1:1 관계
- 1:M 관계
- M:M 관계
* 관계 참여
- 필수 참여 관계 / 선택 참여 관계
* 관계종류
- 정상 관계 : 엔티티타입이 독립적, 상호간 한가지 관게만 존재
- 자기 참조 관계 : 동일 엔티티타입의 엔티티들 간 계층적으로 데이터 구성
- 병렬 관계 : 엔티티타입이 독립적, 2개 이상의 관계가 상호간에 존재
- 슈퍼타입 서브타입 관계 : 형식은 1:1
- 주식별자/비식별자 관계 : 부모 엔티티타입의 주식별자가 자식 엔티티타입의 주식별자가 되면 => 주식별자
관계가 아니면 => 비식별자 관계
5. 엔티티 슈퍼타입과 서브타입
* 엔티티 슈퍼타입과 서브타입의 개념
- 슈퍼타입 : 여러개의 엔티티타입이 비슷하고 일부 속성, 관계만 다를 경우 하나로 통합하여 표시
- 서브타입 : 슈퍼타입 안에 포함되어 표시된 비슷한 성격의 엔티티타입
* 엔티티 슈퍼타입과 서브타입의 표시방법
- (중요) 슈퍼타입과 서브타입으로 나뉘는 구분이 반드시 존재해야함
* 엔티티 슈퍼타입과 서브타입을 표시하기 위한 특징
- 서브타입간 관계가 서로 배타적 OR 포함하면서 슈퍼타입과 관계를 가지는지 결정
- 각 서브타입은 정확히 하나의 슈퍼타입에만 속해야함
- 구분자가 반드시 있어야 하고, 구분자는 슈퍼타입 속성으로 포함
- 서브타입의 엔티티 어커런스는 구분자에 의해 식별 가능해야 함
- 서브타입의 수준을 1로 유지하는 것이 복잡성이 증가되지 않음
6. 서브젝트 에어리어
* 서브젝트 에어리어 : 해당 업무 내 연관이 많은 엔티티타입을 그룹으로 묶어 표시하는 개념
7. 정규화(Nomalization)
* 데이터 모델을 조금 더 구조화하고 개선시켜 나가는 절차
* 함수 종속성
- 데이터들이 기준값에 의해 종속되는 현상, 기준값=>결정자, 종속되는값=>종속자
1차정규화 |
복수 속성값 정리 Relation 내 모든 Domain이 원자값이고, 반복되는 그룹 X. 기본키 그룹이 각 집합을 고유하게 식별 |
2차정규화 |
부분 종속 속성(주식별자에 종속적이지 않은 속성) 분리 결정자가 여러개일 경우에 (단일일 경우 2정규화에 해당 안됨) 결정자중에 하나만 종속값을 결정할 때 부분함수종속 |
3차정규화 |
이전 종속 속성(속성에 종속적인 속성) 분리 기본키가 아닌 속성은 기본키에만 의존. |
보이스-코드(BCNF) 정규화 |
다수 주식별자 분리 결정자가 한 속성을 결정하나 슈퍼키가 아님. |
4차정규화 |
다치 종속 속성 분리 |
5차정규화 |
결합 종속일 경우는 두 개 이상의 N개로 분리 |
8. ERD 표기법
1) 엔티티타입 배치방법
- 업무 순서에 따라 왼쪽->오른쪽
- 업무 흐름에 중심이 되는 엔티티 타입을 중앙에 배치
- 업무 진행하는 중심 엔티티타입과 관계를 가진 엔티티타입들은 중심 주위에 배치
2) 엔티티 관계 연결
- 중복과 순환 관계가 나타나지 않도록 주의하여 연결
3) ERD 관계명 표시
- 현재형을 사용하며 포괄적 용어는 X
4) ERD 관계 카디널리티와 선택성 표시
- 1:1 / 1:M / M:N 표시
- 필수 ‘o’ / 선택 ‘ ’
'[STUDY] DB모델링 설계 및 구축 실무과정' 카테고리의 다른 글
데이터베이스 설계와 구축 1부 논리 설계 -6. 모델 검토 (0) | 2020.04.02 |
---|---|
데이터베이스 설계와 구축 1부 논리 설계 - 5. 상관 모델링 (0) | 2020.04.02 |
데이터베이스 설계와 구축 1부 논리 설계 - 4. 프로세스 모델링 (0) | 2020.04.02 |
데이터베이스 설계와 구축 1부 논리 설계 - 3. 실전 데이터 모델링 이슈 (0) | 2020.04.02 |
데이터베이스 설계와 구축 1부 논리 설계 - 2. 데이터 분석 및 모델링 (0) | 2020.04.02 |