데이터 모델링의 유의점
중복(Duplication)
- 데이터 모델은 같은 데이터를 사용하는 사람, 시간, 장소를 파악하는데 도움을 줌.
이러한 지식 응용은 데이터베이스가 여러 장소에 같은 정보를 저장하는 잘못을 하지 않도록 함.
비유연성(Inflexibility)
- 데이터의 정의를 데이터의 사용 프로세스와 분리함으로써 데이터 모델링은 데이터 혹은 프로세스의 작은 변화가 애플리케이션과 데이터베이스에 중대한 변화를 일으킬 수 있는 가능성을 줄임.
비일관성(Inconsistency)
- 데이터 모델링을 할 때 데이터와 데이터 간 상호 연관 관계에 대한 명확한 정의는 이러한 위험을 사전에 예방.
데이터 모델링의 3단계 (개-논-물)
개념적 데이터 모델링
- 추상화 수준이 높고 업무 중심적이며 포괄적인 수준의 모델링
- 전사적 데이터 모델
- 핵심 엔터티와 그들 간의 관계를 발견하고, 그것을 표현하기 위해서 엔터티-관계 다이어그램을 생성하는 것.
- 개념 정리해서 쓴 것
논리적 데이터 모델링
- 시스템으로 구축하고자 하는 업무에 대해 key, 속성, 관계 등을 정확하게 표현
- 재사용성이 높음
- 이 단계에서 하는 중요한 활동은 정규화
- 표로 정리한 것
물리적 데이터 모델링
- 실제 데이터베이스에 이식할 수 있도록 성능, 저장 등 물리적인 성격을 고려하여 설계
- 이 단계에서 결정되는 것 : 테이블, 칼럼 등으로 표현되는 물리적인 저장구조와 사용될 저장 장치, 자료를 추출하기 위해 사용될 접근 방법 등.
- 직접 사용한 것
데이터베이스 3단계 구조
- 외부스키마는 사용자 관점
- 개념스키마는 통합 관점
- 내부스키마는 물리적 관점
엔터티
- 엔터티는 사람, 장소, 물건, 사건, 개념 등의 명사에 해당
- 엔터티는 업무상 관리가 필요한 관심사에 해당
- 엔터티는 저장이 되기 위한 어떤 것(Thing)
적절한 엔터티의 특징
업무에서 필요로 하는 정보여야 한다.
엔터티는 유일한 식별자가 있어야 한다.
두 개 이상의 인스턴스의 집합이어야 한다.
업무 프로세스에 의해 이용되어야 한다.
반드시 1개 이상의 속성을 포함해야 한다.
다른 엔터티와 관계를 가져야 한다.
엔터티의 명명법
1. 가능하면 현업 업무에서 사용하는 용어를 사용한다.
2. 가능하면 약어를 사용하지 않는다.
3. 단수 명사를 사용한다.
4. 모든 엔터티에서 유일한 이름을 부여해야 한다.
5. 엔터티 생성 의미에 맞는 이름을 부여해야 한다.
속성
1. 업무에서 필요로 한다
2. 의미상 더 이상 분리되지 않는다.
3. 엔터티를 설명하고 인스턴스의 구성 요소가 된다.
엔터티, 인스턴스, 속성, 속성값의 관계
- 한 개의 엔터티는 두 개 이상의 인스턴스의 집합이어야 한다.
- 한 개의 엔터티는 두 개 이상의 속성을 갖는다.
- 한 개의 속성은 한 개의 속성값을 갖는다.
속성이 하나의 값만을 가져야 하는가?
- 엔티티 타입 내에서 하나의 속성은 한 시점에 한 개의 값만을 가져야 합니다.
속성이 하나의 의미만 가지고 있는가?
- 속성은 단 하나의 독립적인 의미를 가지고 있어야 합니다.
속성의 분류
특성에 따른 분류
- 기본속성 : 업무분석을 통해 바로 정의한 속성
- 설계속성 : 원래 업무상 존재하지는 않지만 설계를 하면서 도출해내는 속성
- 파생속성 : 다른 속성으로부터 계산이나 변형이 되어 생성되는 속성
도메인 (Domain)
- 각 속성은 가질 수 있는 값의 범위가 있는데 이를 그 속성의 도메인이라고 한다.
속성의 명명
- 해당 업무에서 사용하는 이름을 부여한다.
- 서술식 속성명은 가급적 사용하지 않는다.
- 약어 사용은 가급적 제한한다.
- 전체 데이터모델에서 유일성을 확보하는 것이 좋다.
관계
- 관계란 엔터티들이 서로 상호 연관성을 가지고 있는 상태
관계의 표기법
- 관계명(Membership) : 관계의 이름
- 관계차수(Cardinality) : 일대일(1:1) , 일대다(1:M), 다대다(M:N)
- 관계선택사양(Optionality) : 필수관계, 선택관계
관계명
- 엔터티가 관계에 참여하는 형태를 지칭
- 각각의 관계는 두 개의 관계명을 가짐
관계차수
관계선택사양
- 고객은 여러번 주문할 수도 있고 한번도 주문하지 않을 수도 있음 (선택관계)
- 그러나 주문은 반드시 고객이 있어야 가능함 (필수관계)
식별자란??
- 식별자는 엔터티 내에서 각각의 인스턴스들을 구분할 수 있는 속성
- ex) 웹사이트에서 특정 회원을 구분하기 위해 계정명이나 이메일을 사용하는 것
식별자의 특징
식별자 분류
대표성 여부
- 주식별자: 엔터티 내에서 각 인스턴스들을 구분할 수 있는 구분자이며, 타 엔터티와 관계를 연결할 수 있는 식별자
(ex: 주문번호, 사원번호)
- 보조식별자: 엔터티 내에서 각 인스턴스들을 구분할 수 있는 구분자이나 대표성을 가지지 못해 관계연결을 못하는 식별자
(ex: 전화번호 : 전화번호는 각 개인마다 유일하긴 하나 자주 바뀔 수 있어서 불변성을 만족하지 못함)
스스로 생성 여부
- 내부식별자: 엔터티 내부에서 스스로 생성되는 식별자
(ex: 게시판글번호)
- 외부식별자: 타 엔터티와의 관계를 통해 들어오는 식별자
(ex: 댓글 엔터티의 원본게시물번호)
속성의 수
- 단일식별자: 하나의 속성만으로 구성된 식별자
(ex: 사원엔터티의 사원번호)
- 복합식별자: 둘 이상의 속성의 조합으로 구성된 식별자
(ex: 주문엔터티의 고객번호와 주문번호)
대체가능 여부
- 본질식별자: 업무에 의해 만들어지는 가공되지 않는 원래의 식별자 (ex: 사원엔터티의 사원번호)
- 인조식별자: 주 식별자의 속성이 두 개 이상인 경우 속성들을 하나의 속성으로 묶어 사용하는 식별자 (ex: 제품엔터티의 씨리얼번호 - SM230301 <제품식별코드+제조일자>)