관계
태그 :
- 개념
- 1)두 개의 엔티티 타입사이의 논리적인 관계 즉 엔티티 간 존재의 형태나 행위로서 서로에게 영향을 주는 것 2) 엔티티와 엔티티가 존재의 형태나 행위로서 서로에게 영향을 주며 논리적으로 관련성이 도출되는 상태이며 보다 가시적인 업무의 흐름분석 및 데이터 무결성 보장을 위한 관계
1. 두 개의 엔티티타입 사이의 논리적인 연결, 관계의 개요
가. 관계의 형태
1) 존재에 의한 관계: 정보의 흐름이 정적인 상태(이효리란 사원이 DB팀에 소속되어 있는 상태)
2) 행위에 의한 관계: 정보의 흐름이 동적인 상태(서인영 고객은 “주문한다” 라는 행위를 하여 CTA201이라는 주문번호를 생성)
나. 데이터모델에서 관계의 목적
관계의 의미 |
내용 |
업무흐름 표현 |
관계를 통해 업무의 흐름과 구성이 표현되며 업무규칙에 따라 관계의 표현형식이 달라짐 |
Key의 상속관계 |
부모의 Primary Key가 자식의 Foreign Key로 상속 |
참조무결성 |
엔티티 간의 데이터가 논리적인 모순이 없이 정확성과 일관성을 유지 |
구분 |
설명 |
|
관계타입 (relationship type) |
• 개체 타입과 개체 타입 간에 성립할 수 있는 관계를 총체적으로 정의 • 관계 집합(relationship set) : 개체집합 간 실제로 나타나 있는 관계 인스턴스를 총집합 |
|
관계타입 유형 (분류기준 -사상 원소수) |
1 : 1 (일 대 일) |
• fx : x → y and fy : y→x |
1 : N (일 대 다) |
• not fx : x → y and fy : y→x |
|
N : 1 (다 대 일) |
• fx : x → y not fy : y→x |
|
N : N (다 대 다) |
• not fx : x → y not fy : y→x |
|
관계타입 특성 |
전체참여 & 부분참여 |
• 전체 참여(total participation) : A-B 관계에서 개체 집합A의 모든 개체가 A-B 관계에 참여 ex) 교수-학과 • 부분 참여 (partial participation) : A-B 관계에서 개체 집합A의 일부 개체만 A-B 관계에 참여 ex) 학생 (휴학생 허용시) – 과목 |
존재 종속 (existence Dependence) |
• 어떤 개체 b의 존재가 개체 a의 존재에 종속될 (b는 a에 존재 종속) (a :주개체(dominant entity) b : 종속개체(subordinate entity)) |
2. 관계의 표기
가. 관계의 카디넬러티(Cardinality)의 정의
1) 두 개의 엔티티 타입간 관계에서 참여자의 수를 표현하는 것
2) 가장 일반적인 카디넬러티 표현방법은 1:M, 1:1, M:N
나. 관계의 카디넬러티 종류
1) 1:1(One To One) 관계: 관계에 참여하는 각 엔티티는 관계를 맺는 다른 엔티티에 대해 단지 하나의 관계만을 가짐
2) 1:M(One To Many) 관계: 관계에 참여하는 각 엔티티는 관계를 맺는 다른 엔티티에 대해 하나 이상의 수와 관계를 가짐
3) M:N(Many To maNy) 관계: 관계에 참여하는 각 엔티티는 관계를 맺는 다른 엔티티에 대해 하나 이상의 수와 관계를 가지고 반대의 경우도 마찬가지로 하나 이상의 수와 관계를 가짐
3.관계의 종류와 연결함정의 중류
가. 관계의 종류
종류 |
ERD |
설명 |
정상적인 관계 (Normal Relationship) |
엔티티타입과 엔티티타입이 독립적으로 분리되어 있으면서 한 개의 관계만 상호간 존재하는 형태의 관계 |
|
자기참조관계 (Self Relationship, Recursive Relationship) |
-하나의 엔티티타입내에서 엔티티와 엔티티가 관계를 맺고 있는 형태 -부서, 부품, 메뉴 등과 같이 계층구조 형태를 표현할 때 유용한 관계형식 -예) 컴퓨터는 본체, 마우스, 키보드, 모니터로 조립되며, 본체는 다시 메모리,디스크, CPU 등으로 조립 |
|
병렬관계 (Parallel Relationship) |
엔티티타입과 엔티티타입이 독립적으로 분리되어 있으면서 두 개 이상의 관계가 상호간 존재하는 형태의 관계 |
|
수퍼타입 서브타입관계 (Super-type Sub-type Relationship) |
공통의 속성을 가지는 수퍼 타입과 공통부분을 제외하고 두 개 이상의 엔티티 타입에 속성이 상호간의 차이가 있을 때 별도의 서브타입 으로 존재할 수 있음. 이때 수퍼타입과 서브타입이 1:1 관계를 가지게 되는데 이것이 수퍼타입과 서브 타입의 관계형식임. 이때 서브타입을 구분할 수 있는 구분형식에 따라 수퍼타입의 특정 엔티티가 반드시 하나의 서브타입에만 속해야 하는 배타적관계(Exclusive Relationship)와 수퍼타입의 특정 엔티티가 두 개 이상의 서브타입에 포함될 수 있는 포함관계(Inclusive Relationship)로 구분할 수 있음 |
|
주식별자/비식별자 관계 (Identifying/Non-Identifying Relationship) |
부모엔티티타입의 주식별자가 자식 엔티티타입의 주식별자로 상속되는 주식별자 관계와 부모 엔티티타이브이 주식별자가 자식 엔티티타입의 일반 속성으로 상속되는 비식별자 관계로 구분 |
나. 연결함정의 종류
1) 부채꼴 함정 (Fan Trap): 데이타의 관계가 모호하여 정보를 정확하게 찾지 못하는 현상으로 인해 정확한 데이터를 못가져 오는 현상
부채꼴 함수 발생시 아래와 같이 수정 필요
2) 균열 함정(Fan Trap): 일부의 관계가 선택관계로 누락되어 표기가 되는 현상
일부 관계 누락을 해소하기 위해 추가적인 관계가 요구됨
4. 데이터모델링의 Key
가.Key 의 정의
1) 여러 개의 집합체를 담고 있는 하나의 엔티티 타입에서 각각의 엔티티를 구분할 수 있는 결정자
2) 릴레이션의 튜플(tuple)을 유일하게 식별할 수 있는 속성의 집합
나. Key 의 분류
분류특성 |
명칭 |
설명 |
대표성여부 |
주식별자 |
엔티티타입의 대표성을 나타내는 유일한 식별자 (PK) |
보조식별자 |
주식별자를 대신해 보조적으로 엔티티 식별가능 (unique index) |
|
스스로 생성 여부 |
내부식별자 |
타 엔티티타입으로부터 식별자를 가져오지 않고, 자신의 엔티티타입 내에서 스스로 생성되어 존재하는 식별자 |
외부식별자 |
타 엔티티타입으로부터 관계에 의해 주식별자 속성을 상속받은 식별자 (FK) |
|
단일속성 여부 |
단일식별자 |
주식별자의 구성이 한 가지 속성으로만 이루어진 식별자 |
복합식별자 |
두 개 이상의 속성으로 구성된 식별자 |
|
대체여부 |
원조식별자 |
가공되지 않은 원래의 식별자 |
대리식별자 |
주식별자의 속성이 복합 식별자일경우 여러 개의 속성을 묶어 하나의 속성으로 만들어 주식별자로 활용하는 식별자 |
다. Primary Key(PK)의 특징
특징 |
내용 |
비고 |
유일성 |
식별자에 의해 엔티티타입내 모든 엔티티들이 유일하게 구분 |
주민번호는 고유하다. |
불변성 |
식별자가 한 번 특정 엔티티를 지정되면 그 식별자는 변하지 않아야 함 |
사번, 주민번호 는 퇴사, 말소 외에는 변하지 않음 |
존재성 |
식별자가 지정되면 반드시 데이터 값이 존재 |
사번, 주민번호는 반드시 존재 |