03_SQLD_제4 절 관계 & 제5 절 식별자
# SQL
제1 장 데이터 모델링의 이해
제4 절 관계(Relationship)
-
관계의 개념
-
관계의 정의
“인스턴스 사이의 논리적인 연관성으로서 존재의 형태 or 행위로서 서로에게 연관성이 부여된 상태”
-
관계의 페어링
“관계는 인스턴스가 개별적으로 관계를 가지는 것(페어링)이고, 이것의 집합을 관계로 표현하는 것”
“따라서 개별 인스턴스가 각각 다른 종류의 관계를 가지고 있다면, 두 엔터티 사이에 두 개 이상의 관계가 형성될 수 도 있다.”
-
-
관계의 분류
-
ERD : 존재의 의한 관계 / 행위에 의한 관계
-
UML(Unified Modeling Language) : 연관 관계 / 의존 관계
-
-
관계의 표기법
-
관계명(Membership) : 관계의 이름을 기록
-
관계차수 : 엔터티간의 관계에서 참여자의 수를 표현
-
1 : 1
-
1 : N
-
N : N
-
-
관계선택사양
-
필수 관계(Mandatory)
ex) 지하철은 반드시 문이 닫혀야, 출발할 수 있다. 에서 “문 닫힘” & “출발” 은 필수참여관계(Mandatory)이다.
-
선택 관계(Optional)
ex) 지하철의 출발을 알리는 안내음성이 나온다. 에서 “안내음성"은 나오면 좋지만 “출발"과 필수적인 관계는 아닌 선택적인(Optional) 관계이다.
-
-
-
관계의 정의 및 읽는 방법
-
관계 체크사항
- 두 개의 엔터티 사이에 관심있는 연관규칙이 존재하는가?
- 두 개의 엔터티 사이에 정보의 조합이 발생하는가?
- 업무기술서, 장표에 관계연결에 대한 규칙이 서술되어 있는가?
- 업무기술서, 장표에 관계연결을 가능하게 하는 동사(Verb)가 있는가?
-
관계 읽기
-
기준(Source) 엔터티를 한 개(One) 또는 각(Each)으로 읽는다.
-
대상(Target) 엔터티의 관계참여도 단수, 복수로 읽는다.
-
관계선택사항과 관계명을 읽는다.
-
-
제5 절 식별자(Identifiers)
-
식별자(Identifiers) 개념
-
엔터티를 대표할 수 있는 속성
-
하나의 엔터티는 반드시 하나의 유일한 식별자가 존재해야 한다.
-
식별자는 엔터티내에서 인스턴스들을 구분할 수 있는 구분자다.
-
-
식별자의 특징
-
주식별자
- 유일성 : 주식별자에 의해 엔터티내에 모든 인스턴스들이 유일하게 구분되어야 한다.
- 최소성 : 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 한다.
- 불변성 : 지정된 주식별자의 값은 자주 변하지 않는 것이어야 한다.
- 존재성 : 주식별자로 지정되면 반드시 값이 들어와야 한다.
-
외부식별자
-
참조무결성 제약조건(Referential Integrity)에 따른 특징을 가진다.
-
-
-
식별자의 분류 및 표기법
-
식별자 분류
-
주식별자 : 엔터티 내에서 대표성을 가지는 식별자 (대표성이 있어 참조 연결 가능)
-
보조식별자 : 엔터티 내에서 대표성을 가지지 않는 식별자 (대표성이 있어 참조 연결 불가능)
-
내부식별자 : 엔터티 내에서 스스로 생성된 식별자
-
외부식별자 : 타 엔터티와의 관계를 통해 받아오는 식별자
-
단일식별자 : 하나의 속성으로 구성된 식별자
-
복합식별자 : 둘 이상의 속성으로 구성된 식별자
-
본질식별자 : 원래 있던 식별자 (업무에 의해 만들어지는 식별자)
-
인조식별자 : 새롭게 만든 식별자 (인위적으로 만든 식별자)
-
-
식별자 표기법
-
-
주식별자 도출 기준
-
해당 업무에서 자주 이용되는 속성을 주식별자로 지정한다.
-
명칭, 내역 등과 같이 이름으로 기술되는 것들은 가능하면, 주식별자로 지정하지 않는다.
(차라리 새로 생성!)
-
복합으로 주식별자로 구성할 경우 너무 많은 속성이 포함되지 않도록 한다.
-
-
식별자관계와 비식별자관계에 따른 식별자 구분
-
식별자관계 or 비식별자관계의 결정방법
- 부모엔터티 쪽의 주식별자를 자식엔터티의 속성으로 내려 보낸다.
- 이때 자식엔터티는 부모엔터티로부터 받은 외부식별자를 자신의 주식별자로 써도 되며 ( == 식별자 관계), 단순히 부모와 연결되는 속성으로만 이용 ( == 비식별자 관계) 할 것인지 결정한다. 이때 외부식별자는 Foreign Key 역할을 한다.
-
식별자 관계
→ 부모엔터티로 부터 속성을 받고, 이를 자식엔터티에서 주식별자로 사용 하는 경우 - 식별자 관계
-
부모로 부터 받은 속성을 자식이 주식별자로 사용하면 / 부모와 자식의 관계는 1:1
-
A부모 엔터티로부터 받은 속성a와 B부모 엔터티로부터 받은 속성b를 포함하거나 / 스스로 가지고 있는 속성과 함께 주식별자를 구성하면 / 부모와 자식의 관계는 1:M
-
-
비식별자 관계
→ 부모엔터티로 부터 속성을 받았지만, 자식엔터티에서 주식별자가 아닌 일반 속성으로 사용하는 경우 - 비식별자 관계
-
식별자 관계로만 설정할 경우 문제점
- 주식별자의 속성이 지속적으로 증가하는 경우 - 복잡성↑ 하고 오류가능성 유발
-
비식별자 관계로만 설정할 경우 문제점
- 상속의 개념이 없어, 쓸데없이 부모엔터티까지 찾아가서 데이터를 관리해야 하는 경우 발생
-
식별자관계 & 비식별자관계 모델링
-
비식별자관계 선택 프로세스
→ 선택적으로 식별자, 비식별자를 구성 (난이도가 높다.)
-
식별자와 비식별자관계 비교
-
식별자와 비식별자를 적용한 데이터 모델 (예시)
-
-