모델링의 특징
1. 추상화
: 현실세계를 일정한 형식에 맞추어 표현한다는 의미
: 다양한 현상을 일정한 양식인 표기법에 의해 표현한다는 것
2. 단순화
: 복잡한 현실 세계를 약속된 규약에 의해 제한된 표기법이나 언어로 표현하여 쉽게 이해할 수 있도록 하는 개념을 의미
3. 명확화
: 누구나 이해하기 쉽게 하기 위해 대상에 대한 애매모호함을 제거하고 정확하게 현상을 기술하는 것을 의미
모델링의 세 가지 관점
1. 데이터 관점 : 업무가 어떤 데이터와 관련이 있는지 또는 데이터 간의 관계는 무엇인지에 대해서 모델링하는 방법
2. 프로세스 관점 : 업무가 실제하고 있는 일은 무엇인지 또는 무엇을 해야 하는지를 모델링하는 방법
3. 데이터와 프로세스의 상관 관점 : 업무가 처리하는 일의 방법에 따라 데이터는 어떻게 영향을 받고 있는지 모델링하는 방법
데이터 모델링이란
- 정보시스템을 구축하기 위한 데이터 관점의 업무 분석 기법
- 현실 세계의 데이터에 대해 약속된 표기법에 의해 표현하는 과정
- 데이터베이스를 구축하기 위한 분석/설계의 과정
데이터 모델링의 중요성
- 파급효과
- 간결한 표현
- 데이터 품질
데이터 모델링의 3단계 진행
1. 개념적 데이터 모델링
: 추상화 수준이 높고 업무중심적이고 포괄적인 수준의 모델링 진행, 전사적 데이터 모델링, EA수립시 많이 이용
2. 논리적 데이터 모델링
: 시스템으로 구축하고자 하는 업무에 대해 Key, 속성, 관계 등을 정확하게 표현, 재사용성이 높음
3. 물리적 데이터 모델링
: 실제로 데이터베이스에 이식할 수 있도록 성능, 저장 등 물리적인 성격을 고려하여 설계
데이터 독립성
- 목적 : 지속적으로 증가하는 유지보수 비용을 절감하고 데이터 복잡도를 낮추며 중복된 데이터를 줄이기 위한 목적
- 효과
-> 각 View의 독립성을 유지하고 계층별 View에 영향을 주지 않고 변경이 가능
-> 단계별 스키마에 따라 데이터 정의어(DDL)와 데이터 조작어(DML)가 다름을 제공
데이터베이스 3단계 구조
1. 외부 스키마
: 사용자 관점
: DB의 개개 사용자나 응용프로그래머가 접근하는 DB 정의
2. 개념 스키마
: 통합 관점
: DB에 저장되는 데이터와 그들간의 관계를 표현하는 스키마
3. 내부 스키마
: 물리적 관점
: 물리적 장치에서 데이터가 실제적으로 저장되는 방법을 표현하는 스키마
두 영역의 데이터 독립성
- 논리적 독립성 : 개념 스키마가 변경되어도 외부 스키마에는 영향을 미치지 않도록 지원하는 것
- 물리적 독립성 : 내부 스키마가 변경되어도 외부/개념 스키마는 영향을 받지 않도록 지원하는 것
데이터 모델링의 요소
1. 업무가 관여하는 어떤 것(Things)
2. 어떤 것이 가지는 성격(Attributes)
3, 업무가 관여하는 어떤 것 같의 관계(Relationships)
ERD를 작성하는 작업순서
1. 엔터티를 그린다.
2. 엔터티를 적절하게 배치한다
3. 엔터티 간 관계를 설정한다
4. 관계명을 기술한다.
5. 관계의 참여도를 기술한다.
6. 관계의 필수여부를 기술한다.
엔터티의 개념
- 사람, 장소, 물건, 사건, 개념 등의 명사에 해당한다.
- 업무상 관리가 필요한 관심사에 해당한다.
- 저장이 되기 위한 어떤 것이다.
- 업무 활동상 지속적인 관심을 가지고 있어야 하는 대상
- 인스턴스의 집합이라 할 수 있다.
- 이해할 때 눈에 보이지 않는 개념 등에 대해서도 엔터티로서 인식을 할 수 있어야 한다.
엔터티의 특징
- 반드시 해당 업무에서 필요하고 관리하고자 하는 정보여야 한다.
- 유일한 식별자에 의해 식별이 가능해야 한다.
- 영속적으로 존재하는 인스턴스의 집합이어야 한다.(두 개 이상)
- 업무 프로세스에 의해 이용되어야 한다.
- 반드시 속성이 있어야 한다.
- 다른 엔터티와 최소 한 개 이상의 관계가 있어야 한다.
엔터티의 분류
1. 유무형에 따른 분류
(1) 유형 엔터티
: 물리적인 형태가 있고 안정적이며 지속적으로 활용되는 엔터티로 업무로부터 엔터티를 구분하기가 가장 용이
(2) 개념 엔터티
: 물리적인 형태는 존재하지 않고 관리해야 할 개념적 정보로 구분이 되는 엔터티
(3) 사건 엔터티
: 업무를 수행함에 따라 발생되는 엔터티로서 비교적 발생량이 많으며 각종 통계자료에 이용될 수 있다.
2. 발생시점에 따른 분류
(1) 기본/키엔터티
(2) 중심엔터티
(3) 행위엔터티
엔터티의 명명
- 현업업무에서 사용하는 용어를 사용한다.
- 가능하면 약어를 사용하지 않는다.
- 단수명사를 사용한다.
- 모든 엔터티에서 유일하게 이름이 부여되어야 한다.
- 엔터티 생성 의미대로 이름을 부여한다.
- 단수 명사를 사용해야 한다.
속성의 정의
- 업무에서 필요로 한다.
- 의미상 더 이상 분리되지 않는다.
- 엔터티를 설명하고 인스턴스의 구성요소가 된다.
엔터티, 인스턴스, 속성, 속성값의 관계
- 한 개의 엔터티는 두 개 이상의 인스턴스 집합이어야 한다.
- 한 개의 엔터티는 두 개 이상의 속성을 갖는다.
- 한 개의 속성은 한 개의 속성값을 갖는다.
속성의 표기법
- 속성의 표기법은 엔터티 내에 이름을 포함하여 표현하면 된다.
속성의 특징
- 반드시 해당 업무에서 필요하고 관리하고자 하는 정보이어야 한다.
- 정규화 이론에 근간하여 정해진 주식별자에 함수적 종속성을 가져야 한다.
- 하나의 속성에 여러 개의 값이 있는 다중값일 경우 별도의 엔터티를 이용하여 분리한다.
속성의 분류
1. 속성의 특성에 따른 분류
(1) 기본속성 : 업무 분석을 통해 바로 정의한 속성
(2) 설계속성 : 원래 업무상 존재하지는 않지만 설계를 하면서 도출해내는 속성
(3) 파생속성 : 다른 속성으로부터 계산이나 변형이 되어 생성되는 속성
2. 엔터티 구성방식에 따른 분류
(1) PK속성 : 엔터티를 식별할 수 있는 속성
(2) FK속성 : 다른 엔터티와의 관계에서 포함된 속성
(3) 일반속성 : 엔터티에 포함되어 있고 PK, FK에 포함되지 않은 속성
# 다중값 속성의 경우 하나의 엔터티에 포함될 수 없으므로 1차 정규화를 하거나, 아니면 별도의 엔터티를 만들어 관계로 연결해야 한다.
도메인
- 각 속성이 가질 수 있는 값의 범위
속성명을 부여하는 원칙
1. 해당 없무에서 사용하는 이름을 부여한다.
2. 서술식 속성명은 사용하지 않는다.
3. 약어사용은 가급적 제한한다.
4. 전체 데이터모델에서 유일성 확보하는 것이 좋다.
관계의 페어링
- 개별 인스턴스가 각각 다른 종류의 관계를 가지고 있다면 두 엔터티 사이에 두 개 이상의 관계가 형성될 수 있다.
- 각각의 엔터티의 인스턴스들은 자신이 관련된 인스턴스들과 관계의 어커런스로 참여하는 형태를 관계 페어링이라고 한다.
관계의 분류
1. 존재에 의한 관계
2. 행위에 의한 관계
-> 관계를 연결함에 있어 어떤 목적으로 연결괴었느냐에 따라 분류
관계의 표기법
- 관계명 : 관계의 이름
- 관계차수 : 1:1, 1:M, M:N
- 관계선택사양 : 필수관계, 선택관계
-> 관계 선택사양은 관계를 통한 상대방과의 업무적인 제약조건을 표현하는 것
관계의 정의 및 읽는 방법
1. 관계 체크사항
- 두 개의 엔터티 사이에 관심있는 연관규칙이 존재하는가?
- 두 개의 엔터티 사이에 정보의 조합이 발생되는가?
- 업무기술서, 장표에 관계연결에 대한 규칙이 서술되어 있는가?
- 업무기술서, 장표에 관계연결을 가능하게 하는 동사가 있는가?
2. 관계 읽기
- 기준 엔터티를 한 개 또는 각각으로 읽는다.
- 대상 엔터티의 관계참여도 즉 개수를 읽는다.
- 관계선택사양과 관계명을 읽는다.
식별자의 개념
- 여러 개의 집합체를 담고 있는 하나의 통에서 각각으 구분할 수 있는 구분자를 식별자라고 한다.
- 식별자란 하나의 엔터티에 구성되어 있는 여러 개의 속성 중에 엔터티를 대표할 수 있는 속성을 의미하며 하나의 엔터티는 반드시 하나의 유일한 식별자가 존재해야 한다.
식별자의 특징
- 유일성 : 주식별자에 의해 엔터티 내에 모든 인스턴스들을 유일하게 구분함
- 최소성 : 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 함
- 불변성 : 주식별자가 한 번 특정 엔터티에 지정되면 그 식별자의 값은 변하지 않아야 함
- 존재성 : 주식별자가 지정되면 반드시 데이터 값이 존재
주식별자 도출 기준
- 해당 업무에서 자주 이용되는 속성을 주식별자로 지정한다.
- 명칭, 내역 등과 같이 이름으로 기술되는 것들은 가능하면 주식별자로 지정하지 않는다.
- 복합으로 주식별자로 구성할 경우 너무 많은 속성이 포함되지 않도록 한다.
식별자 관계와 비식별자 관계
1. 식별자 관계 : 자식엔터티의 주식별자로 부모의 주식별자가 상속이 되는 경우
2. 비식별자 관계 : 부모엔터티로부터 속성을 받았지만 자식엔터티의 주식별자로 사용하지 않고 일반적인 속성으로만 사용하는 경우
-> 식별자 관계로만 설정할 경우의 문제점 : 주식별자 속성이 지속적으로 증가할 수 밖에 없는 구조로서 개발자 복잡성과 오류가능성을 유발시킬 수 있는 요인이 될 수 있음
-> 비식별자 관계로만 설정할 경우의 문제점 : 데이터 모델링을 전개할 대 각 엔터티 간의 관계를 비식별자 관계로 설정하면 이런 유형의 속성이 자식엔터티로 상속이 되지 않아 자식엔터티에서 데이터를 처리할 때 쓸데없이 부모엔터티까지 찾아가야 하는 경우 발생
식별자와 비식별자 관계 비교
항목 | 식별자관계 | 비식별자관계 |
목적 | 강한 연결관계 표현 | 약한 연결관계 표현 |
자식 주식별자 영향 | 자식 주식별자의 구성에 포함됨 | 자식 일반 속성에 포함됨 |
표기법 | 실선 표현 | 점선 표현 |
연결 고려사항 | - 반드시 부모엔터티 종속 - 자식 주식별자구성에 부모 주식별자 포함 필요 - 상속받은 주식별자 속성을 타 엔터티에 이전 필요 |
- 약한 종속관계 - 자식 주식별자 구성을 독립적으로 구성 - 자식 주식별자 구성에 부모 주식별자 부분 필요 - 상속받은 주식별자 속성을 타 엔터티에 차단 필요 - 부모 쪽의 관계 참여가 선택관계 |