[목차]
[내용]
4절 관계
1. 관계의 정의
1) 사전적인 정의 : 상호연관성이 있는 상태
2. 관계의 페어링
1) 관계는 엔터티 안에 인스턴스가 개별적으로 관계를 가지는 것(페어링)이고 이것의 집합을 관계로 표현한다는 것
2) 개별 인스턴스가 각각 다른 종류의 관계를 가지고 있다면 두 엔터티 사이에 2개 이상의 관계가 형성될 수 있다
3) 인스턴스와 인스턴스 사이에 관계가 설정되어 있는 어커런스를 관계 페어링이라고 한다.
* 엔터티가 인스턴스의 집합을 논리적으로 표현하였다면 관계는 관계 페어링의 집합을 논리적으로 표현한 것
3. 관계의 분류
1) 존재에 의한 관계
- 사원은 부서에 항상 속해있다.
- 존재의 형태에 의해 관계가 형성된다
2) 행위에 의한 관계
- 주문은 고객이 주문을 할 때 발생한다
- 주문 엔터티의 주문번호는 고객이 '주문한다'라는 행위에 의해 발생된다.
4. 관계의 표기법
1) 관계명(Membership)
- 엔터티가 관계에 참여하는 형태를 지칭한다
- 각각의 관계는 2개의 관계명을 가지고 있다
- 애매한 동사를 피해 명명해야 한다
(관계된다, 관련이 있다 등은 구체적이지 않아 어떤 행위가 있는지, 두 참여자간 어떤 상태가 존재하는지 파악 어려움)
- 현재형으로 표현해야 한다
(수강신청했다 >> 수강신청한다, 강의를 할 것이다 >> 강의한다 로 표현해야 한다)
2) 관계차수(Cardinality)
- 2개의 엔터티 간 관계에서 참여자의 수를 표현하는 것
- 가장 일반적인 관계차수 표현 방법은 1:M, 1:1, M:M 이다
3) 관계선택사양(Optionality)
- 선택적 관계 : 고객은 여러개의 주문을 할 수도 있고 1개의 주문도 하지 않을 수 있다
- 필수적 관계 : 주문은 반드시 고객을 가진다
5. 관계 정의시 체크사항
1) 2개의 엔터티 사이에 관심있는 연관규칙이 존재하는가?
2) 2개의 엔터티 사이에 정보의 조합이 발생되는가?
3) 업무기술서, 장표에 관계연결에 대한 규칙이 서술되어 있는가?
4) 업무기술서, 장표에 관계연결을 가능하게 하는 동사가 있는가?
5절 식별자
6. 식별자(Identifiers)의 개념
- 엔터티 내에서 인스턴스들을 구분할 수 있는 구분자
- 하나의 엔터티는 반드시 하나의 유일한 식별자가 존재해야 한다.
- 식별자와 Key는 비슷한 개념 (식별자는 논리 데이터 모델링 단계에서 사용, Key는 물리 데이터 모델링 단계에서 사용)
- 고객 엔터티의 고객번호, 사원 엔터티의 사원번호 등..
7. 식별자의 특징
1) 유일성
- 주식별자에 의해 엔터티 내 모든 인스턴스들이 유일하게 구분되어야 한다.
- 예) 사원번호 (주식별자)가 모든 직원들에 대해 개인별로 고유하게 부여됨
2) 최소성
- 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 한다.
- 예) 사원번호만으로도 고유한 구조인데 사원분류코드+사원번호로 식별자가 구성될 경우 부적절한 주식별자 구조임
3) 불변성
- 지정된 주식별자의 값은 자주 변하지 않는 것이어야 한다.
- 예) 사원번호의 값이 변한다는 의미는 이전 기록이 말소되고 새로운 기록이 발생되는 개념임
4) 존재성
- 주식별자가 지정이 되면 반드시 값이 들어와야 한다.
- 예) 사원번호 없는 회사원은 있을 수 없음
8. 식별자 분류
9. 식별자 도출 기준
1) 해당 업무에서 자주 이용되는 속성을 주식별자로 지정한다.
- 주민등록번호도 식별자 후보가 될 수 있지만 해당업무에서 자주 사용하는 직원번호를 주식별자로 지정
2) 명칭, 내역 등과 같이 이름으로 기술되는 것들은 가능하면 주식별자로 지정하지 않는다.
- 직원명과 같은 이름은 주식별자로 지정하지 않음 (동명이인이 없어도 안됨)
3) 복합으로 주식별자로 구성할 경우 너무 많은 속성이 포함되지 않도록 한다.
- 직원번호+주민번호로 복합식별자로 하면 유일성이 보장되나 직원번호만으로도 충분하기 때문에 직원번호로만 지정
10. 식별자관계와 비식별자 관계의 결정
1) 외부식별자는 자기 자신의 엔터티에서 필요한 속성이 아니라 다른 엔터티와의 관계를 통해 자식쪽의 엔터티에 생성되는 속성을 외부식별자라 하며 데이터베이스 생성시에 Foreign Key 역할을 한다.
2) 자식엔터티에서 부모엔터티로부터 받은 외부식별자를 자신의 주식별자로 이용할 것인지 (식별자 관계) 또는
부모와 연결이 되는 속성으로서만 이용할 것인지 (비식별자 관계)를 결정해야 한다
11. 식별자 관계로만 설정할 경우의 문제점
- 식별자 관계만으로 연결된 데이터 모델의 특징은, 주식별자 속성이 지속적으로 증가할 수 밖에 없는 구조로서
개발의 복잡성과 오류가능성을 유발시킬 수 있는 요인이 될 수 있다.
12. 비식별자 관계로만 설정할 경우의 문제점
1) 일반적으로 각각의 엔터티에는 중요한 기준 속성이 있고 부모엔터티의 PK속성이 자식엔터티로 상속되는 경우가 많음
2) 각 엔터티 간의 관계를 비식별자 관계로만 설정하면 자식엔터티에서 데이터를 처리할때 쓸데없이 부모엔터티까지 찾아가야 하는 경우가 발생함
13. 식별자 관계와 비식별자 관계 모델링