데이터모델의 이해
- 모델링의 정의
-> 복잡한 "현실세계"를 단순화 시켜 표현하는 것
-> 사물 또는 사관에 관한 양상이나 관점을 연관된 사람이나 그룹을 위하여 명확하게 하는 것
-> 현실 세계의 추상화된 반영
-
모델링의 특징
-> 추상화(모형화, 가설적)는 현실세계를 일정한 형식에 맞추어 표현을 한다는 의미
-> 단순화는 복잡한 현실 세계를 약속된 규약에 의해 제한된 표기법이나 언어로 표현
-> 명확화는 누구나 이해하기 쉽게 하기 위해 대상에 대한 애매모호함을 제거하고 정확하게 현상을 기술
-
모델링의 세 가지 관점
1) 데이터 관점 : 업무가 어떤 데이터와 관련이 있는지 또는 데이터간의 관계는 무엇인지 모델링하는 방법
2) 프로세스 관점 : 업무가 실제하고 있는 일은 무엇인지 또는 무엇을 해야하는지 모델링하는 방법
3) 상관 관점 : 업무가 처리하는 일의 방법에 따라 데이터는 어떻게 영향을 받고 있는지 모델링하는 방법
- 데이터 모델링의 정의
-> 정보 시스템을 구축하기 위한 데이터 관점의 업무 분석기법
-> 현실세계의 데이터에 대해 약속된 표기법에 의해 표현되는 과정
-> 데이터베이스를 구축하기 위한 분석/설계의 과정
-
데이터 모델이 제공하는 기능
1) 시스템을 현재 또는 원하는 모습으로 가시화
2) 시스템의 구조와 행동을 명세화
3) 시스템을 구축하는 구조화된 틀을 제공
4) 시스템을 구축하는 과정에서 결정한 것을 문서화
5) 다양한 영역에 집중하기 위해 다른 영역의 세부 사항은 숨기는 다양한 관점을 제공
6) 특정 목표에 따라 구체화된 상세 수중의 표현방법을 제공
-
데이터 모델링의 3단계 진행
1) 개념적 데이터 모델링
추상화 수준이 높고 업무 중심적이고 포괄적인 수준의 모델링 진행 전사적 데이터 모델링, EA 수립 시 많이 사용
2) 논리적 데이터 모델링
시스템으로 구축하고 하는 업무에 대해 key, 속성, 관계 등을 정확하게 표현, 재사용성이 높음
3) 물리적 데이터 모델링
실제도 데이터베이스에 이식할 수 있도록 성능, 저장 등 물리적인 성격을 고려하여 설계
-
프로젝트 생명주기(Life Cycle)에서 데이터 모델링
-> 프로젝트 생명주기는 정보전략계획 => 분석 => 설계 => 개발 => 테스트 => 전환/이행 단계가 있음
-> 정보전략계획/분석 단계 : 개념적 데이터 모델링
-> 분석 단계 : 논리적 데이터 모델링
-> 설계 단계 : 물리적 데이터 모델링
데이터베이스 3단계 구조
외부 단계
개념적 단계
내부적 단계
1) 외부스키마 (사용자 관점)
- View 단계 여러 개의 사용자 관점으로 구성, 즉 개개 사용자 단계로서 개개 사용자가 보는 개인적 DB 스키마
- DB의 개개 사용자나 응용 프로그래머가 접근하는 DB정의
2) 개념스키마(통합 관점)
- 개념 단계 하나의 개념적 스키마로 구성 모든 사용자 관점을 통합한 조직 전체의 DB를 기술하는 것
- 모든 응용 시스템들이나 사용자들이 필요로 하는 데이터를 통합한 조직 전체의 DB를 기술한 것으로 DB에 저장되는 데이터와 그들간의 관계를 표현하는 스키마
3) 내부스키마(물리적 관점)
- 내부 단계, 내부 스키마로 구성, DB가 물리적으로 저장된형식
- 물리적 장치에서 데이터가 실제적으로 저장되는 방법을 표현하는 스키마
데이터 베이스 3단계 구조에서의 데이터 독립성 2가지
1) 논리적 독립성
- 개념 스키마가 변경되어도 외부 스키마에는 영향을 미치지 않도록 지원하는 것
- 논리적 구조가 변경 되어도 응용 프로그램에 영향 없음
2) 물리적 독립성
- 내부 스키마가 변경되어도 외부/개념 스키마는 영향을 받지 않도록 지원하는 것
- 저장 장치의 구조 변경은 응용 프로그램과 개념 스키마에 영향 없음
사상(매핑) 2가지
1) 외부적/개념적 사상(논리적 사상)
- 외부적 뷰와 개념적 뷰의 상호 호환성을 정의함
- 외부화면이나 사용자에게 인터페이스하기 위한 스키마 구조는 전체가 통합된 개념적 스키마와 연결된다는 것
2) 개념적/내부적 사상(물리적 사상)
- 개념적 뷰와 저장된 데이터베이스의 상호관련성 정의
- 통합된 개념적 스키마 구조와 물리적으로 저장된 구조의 물리적인 테이블 스페이스와 연결되는 구조
데이터 모델링의 세 가지 요소
- 업무가 관여하는 어떤 것(Things)
- 어떤 것이 가지는 성격(Attributes)
- 업무가 관여하는 어떤 것 간의 관계(Realationships)
데이터 모델링 작업순서
- 엔터티를 그린다.
- 엔터티를 적절하게 배치한다.
- 엔터티간 관계를 설정한다.
- 관계명을 기술한다.
- 관계의 참여도를 기술한다.
- 관계의 필수 여부를 기술한다.
엔터티
엔터티의 개념
- 엔터티는 사람, 장소, 물건 사건, 개념 등의 명사에 해당한다.
- 엔터티는 업무상 관리가 필요한 관심사에 해당한다.
- 엔터티는 저장이 되기 위한 어떤 것(Things)이다.
엔터티는 인스턴스의 집합이다.
엔터티의 특징
- 반드시 해당 업무에서 필요하고 관리하고자 하는 정보이어야 한다.
- 유일한 식별자에 의해 식별이 가능해야 한다.
- 영속적으로 존재하는 인스턴스의 집합 이어야 한다.('한개'가 아니라 '두개' 이상)
- 엔터티는 업무 프로세스에 의해 이용되어야 한다.
- 엔터티는 반드시 속성이 있어야 한다.
- 엔터티는 다른 엔터티와 최소 한 개 이상의 관계가 있어야 한다.
속성
속성의 개념
- 업무에서 필요로 한다.
- 의미상 더 이상 분리되지 않는다.
- 엔터티를 설명하고 인스턴스의 구성요소가 된다.
엔터티, 인스턴스, 속성, 속성값의 관계
- 한 개의 엔터티는 두 개 이상의 인스턴스의 집합 이어야 한다.
- 한 개의 엔터티는 두 개 이상의 속성을 갖는다.
- 한 개의 속성은 한 개의 속성 값을 갖는다.
속성의 분류
1) 특성에 따른 분류
- 속성은 업무분석을 통해 바로 정의한 속성을 기본속성
- 원래 업무상 존재하지는 않지만 설계를 하면서 도출해내는 속성을 설계속성
- 다른 속성으로부터 계산이나 변형이 되어 생성되는 속성을 파생속성
2) 엔터티 구성방식에 따른 분류
- 엔터티를 식별할 수 있는 속성을 pk(primary key)속성, 다른 엔터티와의 관계에서 포함된 속성을 fk(foreign key)속성, 엔터티에 포함되어 있고 pk, fk에 포함되지 않은 속성을 일반속성이라고 한다.
도메인
- 각 속성은 가질 수 있는 값의 범위가 있는데 이를 그 속성의 도메인이라고 한다.
- 각 속성은 도메인 이외의 값을 갖지 못한다.
관계
관계의 정의
- 사전적으로 정의하면 상호 연관성이 있는 상태이다.
- 엔터티의 인스턴스 사이의 논리적인 연관성으로서 존재의 형태로서나 행위로서 서로에게 연관성이 부여된 상태 라고 할 수 있다.
관계의 패어링
- 관계는 엔터티 안에 인스턴스가 개별적으로 관계를 가지는 것(패어링)이고 이것의 집합을 관계로 표현하는 것이다.
- 개별 인스턴스가 각각 다른 종류의 관계를 가지고 있다면 두 엔터티 사이에 두 개 이상의 관계가 형성될 수 있다.
- 각각의 엔터티의 인스턴스들은 자신이 관련된 인스턴스들과 관계의 어커런스로 참여하는 형태를 관계 패어링 이라고 한다.
관계의 분류
1) 존재의 의한 관계
2) 행위에 의한 관계
관계의 표기법(관계차수)
1) 1:1
- 관계에 참여하는 각각의 엔터티는 관계를 맺는 다른 엔터티에 대해 단지 하나의 관계만을 가지고 있다
2) 1:M
- 3) N:M
- 관계에 참여하는 각각의 엔터티는 관계를 맺는 다른 엔터티에 대해 하나나 그 이상의 수와 관계를 가지고 있다
관계의 표기법
식별자
식별자의 개념
- 엔터티는 인스턴스들의 집합이라고 하였다. 여러개의 집합체를 담고 있는 하나의 통에서 각각을 구분할 수 있는 논리적인 이름이 있어야 한다 이 구분자를 식별자라고 한다.
- Entity 의 각 Instance를 개별적으로 식별하기 위해 사용되는 Relationship 또는 Attribute들의 조합
식별자의 특징
- 주식별자에 의해 엔터티내에 모든 인스턴스들이 유일하게 구분되어야 한다.
- 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 한다.
- 지정된 주식별자의 값은 자주 변하지 않는 것이어야 한다.
- 주식별자가 지정이 되면 반드시 값이 들어와야한다.
유일성 - 주식별자에 의해 엔터티내에 모든 인스턴스들을 유일하게 구분함.
최소성 - 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 함
불변성 - 주식별자가 한 번 특정 엔터티에 지정되면 그 식별자의 값은 변하지 않아야 함
존재성 - 주식별자가 지정되면 반드시 데이터 값이 존재(null 안됨)
분류 |
식별자 |
설명 |
---|
대표성여부 |
주식별자 |
엔터티 내에서 각 행을 구분할 수 있는 구분자이며, 타 엔터티와 참조관계를 연결할 수 있는 식별자(사원번호, 고객번호)
|
|
보조식별자 |
엔터티 내에서 각 행을 구분할 수 있는 구분자이나 대표성을 가지지 못해 참조관계 연결을 못함(주민등록번호)
|
스스로생성여부 |
내부식별자 |
엔터티 내부에서 스스로 만들어지는 식별자(고객번호)
|
|
외부식별자 |
타 엔터티와의 관계를 통해 타 엔터티로부터 받아오는 식별자(주문엔터티의 고객번호)
|
속성의수 |
단일식별자 |
하나의 속성으로 구성된 식별자(고객엔터티의 고객번호)
|
|
복합식별자 |
둘 이상의 속성으로 구성된 식별자(주문상세 엔터티의 주문번호 + 상세순번)
|
대체여부 |
본질식별자 |
업무에 의해 만들어지는 식별자(고객번호)
|
|
인조식별자 |
업무적으로 만들어지지는 않지만 원조식별자가 복잡한 구성을 가지고 있기 때문에 인위적으로 만든 식별자(주문엔터티의 주문번호(고객번호 + 주문번호 + 순번))
|
식별자 관계와 비식별자 관계의 결정
- 외부식별자는 자기 자신의 엔터티에서 필요한 속성이 아니라 다른 언테티와의 관계를 통해 자식 쪽에 엔터티에 생성되는 속성을 외부식별자라 하며 데이터베이스 생성 시에 Foreign Key 역할을 한다.
- 자식엔터티에서 부모엔터티로부터 받은 외부식별자를 자신의 주식별자로 이용할 것인지(식별자 관계) 또는 부모와 연결이 되는 속성으로서만 이용할 것인지를 결정(비식별자 관계)해야 한다.
식별자 관계
- 자식엔터티의 주식별자로 부모의 주식별자가 상속이 되는 경우를 식별자관계라고 지칭한다.
- 부모로부터 받은 식별자를 자식엔터티의 주식별자를 이용하는 경우 null 값이 오면 안되므로 반드시 부모엔터티가 생성되어야 자기 자신의 언터티가 생성되는 경우이다
비식별자 관계
- 부모엔터티로부터 속성을 받았지만 자식엔터티의 주식별자로 사용하지 않고 일반적인 속성으로만 사용하는 경우가 있다 이와 같은 경우를 비식별자 관계라고 하며 다음의 네가지 경우에 비식별자 관계에 의한 외부속성을 생성한다
- 자식센터티에서 받은 속성이 반드시 필수가 아니어도 무방하기 때문에 부모 없는 자식이 생성될 수 있는 경우이다
- 자식엔터티에 주식별자로 상용하여도 되지만 자식엔터티에서 별도의 주식별자를 생성하는 것이 더 유리하다고 판단될 때 비식별자 관계에 의한 외부식별자로 표현한다
식별자 관계로만 설정할 경우의 문제점
- 지속적으로 식별자 관계를 연결한 데이터 모델의 pk속성의 수는 데이터 모델의 흐름이 길어질수로 증가할 수 밖에 없는 구조를 가지게 된다
- 개발자가 개발할 때 당연히 데이터 모델을 참조하면서 엔터티와 관계를 이용하여 개발해야 하는데 생성된 엔터티 스키마 정보만을 보고 개발하는 경우가 많다
- 조인에 참여하는 주식별자속성의 수가 많을 경우 정확하게 조인관계를 설정하지 않고 즉, 누락하여 개발하는 경우가 간혹 발견되기도 한다
- 식별자 관계만으로 연결된 데이터 모델의 특징은 주식별자 속성이 지속적으로 증가할 수 밖에 없는 구조로서 개발의 복잡성과 오류가능성을 유발시킬 수 있는 요인이 도리 수 있다는 사실을 기억해야 한다