2019. 4. 10. 11:51ㆍDataBase
데이터 모델링이란? - 정보화 시스템을 위해 어떤 데이터가 존재하는지, 업무에 어떤 데이터가 필요한지 분석하는 방법
데이터 모델링을 진행할 때 중요한 세 가지 관점이 있다.
업무에 관여하는 어떤 것(Things), 업무가 관여하는 어떤 것과의 관계(Relationships),
어떤 것의 성격(Attributes)
기본 데이터 모델링 용어
개념 | 타입/클래스 | 어커런스/인스턴스 |
어떤 것(Things) | 엔티티 | 엔티티 |
어떤 것과의 관계(Relationships) | 관계 | 페어링 |
어떤 것의 성격(Attributes) | 속성 | 속성값 |
데이터 모델링 주요 용어 및 개념
엔티티타입 **일반적으로 엔티티라고 부르는 단어가 엔티티타입을 의미**
- 업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 것으로, 영속적으로 존재하는 단위
- 엔티티타입은 데이터베이스 테이블에 해당되는 데이터 모델링에서 가장 중요한 표기법이다.
엔티티타입의 조건
1. 업무에서 필요하고 관리하고자 하는 정보여야 한다.
2. 유일한 식별자를 가지고 있어야 한다.
3. 영속적으로 존재하는 엔티티의 집합이 되어야 한다.
4. 업무 프로세스는 그 엔티티타입을 반드시 이용해야 한다.
5. 속성이 반드시 포함되어야 한다.
6. 최소 한 개 이상의 관계를 가져야 한다.
속성
- 업무에 필요한 엔티티에서 관리하고자 하는, 더 이상 분리되지 않는 최소의 데이터 단위를 말한다.
-> 엔티티타입에 속한 엔티티의 성격을 구체적으로 나타내는 항목이다.
-> 속성값은 각각의 엔티티가 가지는 속성들의 구체적인 내용이다.
기본속성/설계속성/파생(추출)속성
기본속성 - 해당 엔티티가 원래 가지고 있는 속성
설계속성 - 원래 업무에는 존재하지 않지만 시스템의 효율성을 위해 임의로 추가되는 속성
예 ) 코드번호, 일련번호
파생(추출)속성 - 다른 속성으로부터 계산이나 변형되어 생성되는 속성
엔티티타입, 엔티티, 속성값에 대한 관계
1. 한 개의 엔티티타입은 두 개 이상의 엔티티집합 이어야 한다.
2. 한 개의 엔티티는 두 개 이상의 속성을 갖는다.
3. 한 개의 속성은 한 개의 속성값을 갖는다.(원자값)
한 가지 예시를 보자면, 학교에 많은 학생이 있는데 그중, 홍길동이라는 학생이 있다. 이 학생은 나이, 성별, 생년월일을 가지고 있다. 나이는 20, 성별은 남, 생년월일은 000000이다.
여기서 학생들의 집합인 '학생'은 엔티티타입이고, '홍길동'은 엔티티에 속한다. 그리고 '나이, 성별, 생년월일'이 속성에 속한다. 마지막으로 '20, 남, 00000'이 나이, 성별, 생년월일의 속성값이라고 얘기할 수 있다.
식별자
- 여러 개의 집합체를 담고 있는 하나의 엔티티타입에서 각각의 엔티티를 구분할 수 있는 결정자이다.
특징 )
1. 식별자에 의해 유일하게 구분 되어야한다.
2. 식별자는 변하지 않아야 한다.
3. 주식별자 속성에는 반드시 데이터값이 있어야 한다.
식별자의 구분 )
대표성 여부 - 주식별자는 식별자가 한 개, 보조식별자는 식별자가 두 개 이상인 것을 말함
<주/보조 식별자는 유일하게 식별하는 기능을 가짐>
스스로 생성 여부 - 내부식별자는 자신의 엔티티타입에서 스스로 생성되어 존재하는 것이고, 외부식별자는 다른 엔티티타입으로 부터 관계에 의해 생성되는 것을 말함(FK)
단일속성 여부 - 단일식별자는 주식별자가 한 개인것을 말하고, 복합식별자는 두 개 이상의 식별자를 가진 것을 말함
대리식별자는 여러 개의 속성을 묶어서 하나의 속성으로 만들어 주식별자로 활용하는 경우를 말함
엔티티타입에 PK를 설정하는 가장 큰 이유는 엔티티타입 내에 저장/관리되는 자료의 유일성을 식별하기 위함이다.
관계
- 두 개의 엔티티타입 사이의 논리적인 관계, 즉 엔티티와 엔티티가 존재의 형태나 행위로서 서로에게 영향을 주는 것을 관계라고 한다
1:1 관계 - 엔티티는 관계를 맺는 다른 엔티티에 대해 하나의 관계만을 가지고 있다.
1:M 관계 - 엔티티는 관계를 맺는 다른 엔티티타입의 엔티티에 대해 하나 이상의 수와 관계를 가진다. 그러나 반대 방향은 단지 하나의 관계만 가진다.
N:M 관계 - 각각의 엔티티는 관계를 맺는 다른 엔티티타입의 엔티티에 대해 하나 이상의 수와 관계가 있다. 반대 방향도 동일하게 관계에 참여하는 각각의 엔티티에는 관계를 맺는 다른 엔티티타입의 엔티티에 대해 하나 이상의 수와 관계가 있다.
N:M 관계는 최종적으로 완성된 데이터 모델에는 존재할 수 없는 형태이다.
문제 해결 방법)
- 관계 엔티티타입 분리
N:M의 관계를 갖는 엔티티타입에 대해 새로운 부모 엔티티타입을 생성하여 관계를 연결하는 경우
N:M의 관계를 갖는 엔티티타입에 대해 새로운 자식 엔티티타입을 생성하여 관계를 연결하는 경우
- 주식별자 통합
관계 패어링
- 엔티티와 엔티티 사이에 관계가 설정되어 있는 어커런스
외부식별자 (식별관계/비식별관계)
- 식별 관계 : 부모 엔티티로부터 받은 식별자를 자식 엔티티타입의 주식별자로 이용하는 경우를 말함
이것은 PK영역으로, NULL 값이 오면 안 되므로 반드시 부모 엔티티가 생성되어야 자신의 엔티티가 생성된다.
1:1 식별자 관계)
1:M 식별자 관계)
- 비식별 관계 : 부모 엔티티타입의 주식별자가 자식 엔티티타입의 일반속성으로 상속
어떤 상황에서 비식별자를 사용하는가?
- 자식 엔티티타입에서 받은 속성이 반드시 필수가 아니어도 무방한 경우
- 부모 엔티티가 있었지만, 자식만 남겨두고 소멸될 수 있는 경우
- 각각의 엔티티타입이 별도의 관계를 가질 때
- 자식 엔티티타입에서 별도의 주식별자를 생성하는 것이 유리하다고 판단될 때
- 주식별자 상속을 차단하기 위해
자기참조 관계
- 하나의 엔티티타입내에서 엔티티와 엔티티가 관계를 맺고 있는 형태의 관계
부서, 부품, 메뉴등과 같이 계층 구조 형태를 표현할 때 유용한 관계 형식
엔티티 슈퍼타입과 서브타입
- 여러 개의 엔티티타입이 비슷하고 일부의 속성이나 관계만 다를 경우 한 개의 엔티티타입으로 묶어 통합한다.
슈퍼타입은 서브타입에 공통적인 모든 속성을 포함하고 있고, 서브타입은 각 서브타입에 적절한 속성만을 포함하고 있다.
접수라는 엔티티타입이 있다고 가정해보자. 접수에는 인터넷접수, 방문접수, 전화접수 등 접수방법이 다양하게 존재한다.
여기서 접수는 동일한 성격을 지닌 것으로 생각할 수 있고, 인터넷접수, 방문접수, 전화접수는 접수 방법이라고 생각할 수 있다.
이 때, 인터넷접수, 방문접수, 전화접수를 서브타입으로 만들 수 있다.
슈퍼타입/서브타입 모델에서는 자료 원천 구분 표시(접수자명?, 접수구분코드 ...)가 반드시 있어야 한다.
함수의 종속성
- 데이터들이 어떤 기준값에 의해 종속되는 현상을 말함
주민등록번호 -> (이름, 나이, 생년월일) : 주민등록번호가 이름, 나이, 생년월일을 함수적으로 결정한다.
여기서 주민등록번호는 결정자 이고, (이름, 나이, 생년월일)은 종속자가 된다.
정규화
- 다양한 유형의 검사를 통해 데이터 모델을 좀 더 구조화하고 개선함.
** 하나의 테이블에 중복된 데이터를 없애기 위함
1차 정규화 - 복수의 속성값을 갖는 속성을 분리
**모든 엔티티의 속성에는 하나의 속성값만 존재해야한다.**
2차 정규화 - 모든 속성은 반드시 주식별자에 종속되어야 한다. **주식별자에 종속적이지 않는 속성 분리**
3차 정규화 - 주식별자에 의한 종속적인 속성중에서 다시 다른 속성을 결정하는 결정자가 존재할 때 속성을 분리한다.
정규화의 장점
- 중복 값이 줄어든다. -> 정규화의 최대 장점
- NULL 값이 줄어든다.
- 데이터 구조의 안정성을 최대화한다.
[출처 : 데이터베이스 설계와 구축 - 성능까지 고려한 데이터 모델링, 한빛미디어, 저자 이춘식]
'DataBase' 카테고리의 다른 글
모델링 검토 - 1 (0) | 2019.04.16 |
---|---|
프로세스 모델링 (0) | 2019.04.15 |
데이터 모델링 관계 (0) | 2019.04.12 |
데이터 분석과 모델링 (0) | 2019.04.11 |
Oracle DataBase (0) | 2019.03.28 |