본문 바로가기
SQLD를 위한 낙서장

[SQLD] SQL 개발자 자격증 공부 메모장 여섯 번째

by Luciditas 2023. 6. 26.
728x90

관계(Relationship)

엔터티의 인스턴스 사이의 논리적인 연관성으로서 존재의 형태, 행위로서 서로에게 연관성이 부여된 상태.

 

 

페어링

엔터티 안에 인스턴스가 개별적으로 관계를 가지는 것

이 페어링을의 집합이 관계.

= > 개별 인스턴스가 각각 다른 종류의 관계를 가진다면 두 엔터티 사이에 두 개 이상의 관계가 형성될 수 있다.

관계 페어링 (Relationship Paring)

각 엔터티와 인스턴스는 본인이 관련된 인스턴스들과 관계의 어커런스로 참여하는 형태.

[이미지] 인스턴스 각각은 자신의 연관성을 가지고 있을 수 있다.

관계의 분류

존재에 의한 관계

위 이미지와 같이 소속되어 있기 때문에 어떤 행위가 없어도 형성되는 관계를 존재에 의한 관계라고한다.

 

행위에 의한 존재

위 이미지를 보면 주문을 해야만 관계가 형성되는 것을 알 수 있다.

이렇게 두 엔터티 사이의 관계는 행위에 의한 관계가 형성되는 것을 행위에 의한 관계라고한다.

 

관계의 표기법

3가지의 핵심 개념이 존재한다.

1. 관계명(Membership) : 관계의 이름

2. 관계차수(Cardinality) : 1:1, 1:M, 1:N

3. 관계선택사양(Optionality) : 필수관계, 선택관계

 

1. 관계명(Membership)

엔터티가 관계에 참여하는 형태

각각의 관계는 두 개의 관계명을 가지고 있다.

또한 각각의 관계명에 의해 두 가지의 관점으로 표현될 수 있다.

관계시작점(The Biginning)

엔터티에서 관계가 시작되는 쪽.

관계끝점(The End)

엔터티에서 관계를 받는 쪽.

관계시작점과 관계끝점은 이름이 능동적, 수동적으로 명명한다.

 

관계 명명 규칙

1. 애매한 동사를 피한다.

예) '관계된다.' '관련이 있다.' 같은 표현은 애매한 표현으로 두 참여자간 어떤 상태가 존재하는지 파악이 불가능하다.

2. 현재형으로 표시한다.

예) '강의를 할 것이다.' 같은 포현보다  '강의를 한다.'와 같이 현재형으로 표기한다.

 

관계차수(Degree / Cardinality)

두 개의 엔터티간 관계에서 참여자의 수를 표현하는 것.

 

표현방법

1:M, 1:1, M:N

 

1:1 관계 표기

1:M 관계 표시

M:M 관계를 표시

관계에 참여하는 각 엔터티는 관계를 맺는 엔터티에 대해 하나 이상의 엔터티와 관계를 가지고 있다.

( 반대의 방향도 같다. )

 

관계 선택 사양(Optionality)

 

필수 참여관계

지하철 출발과 지하철의 문이 닫히는 것은 필수적인 관계듯이 데이터 모델에서, 모든 참여자가 반드시 관계를 가지는 관계, 즉 다른 엔터티의 참여자와 연결이 되어야하는 관계다.

예) 주문서는 반드시 주문 목록을 가진다.

 

선택참여관계

지하철 안내 방송과 지하철의 출발은 필수적인 관계가 아니듯이 데이터 모델에서 모든 참여자가 반드시 관계를 가지지 않아도 되는 관계를 말한다.

예) 목록은 주문이 될 수도 있고 주문이 되지 않는 목록일 수도 있다.

선택참여된 항목은 물리 속성에서 Foreign Key로 연결될 경우 null을 허용할 수 있는 항목이 된다.

 

**선택 참여로 지정해야할 관계를 필수 참여로 잘못 지정하면 데이터가 발생할 때 반드시 한 개의 트랜잭션으로 제어해야하는 제약사항이 발생한다.

ERD에서 관계를 나타내는 선에서 선택 참여하는 엔터티 쪽을 원으로 표시하고 필수 참여는 아무 표시도 하지 않는다.

 

★ 양쪽 엔터티에 모두 선택 참여가 표시된다면 ( 0:0 관계가 된다면 그 관계는 잘못될 확률이 높다. )

 

 

관계 정의 및 읽는 법

 

관계 체크 사항

1. 두 개의 엔터티 사이에 관심있는 연관규칙이 존재하는가?

2. 두 개의 엔터티 사이에 정보의 조합이 발생하는가?

3. 업무 기술서, 장표에 관계 연결에 대한 규칙이 서술돼 있는가?

4. 업무 기술서, 장표에 관계 연결을 가능하게 하는 동사가 있는가?

 

관계 읽기

1. 기준(Source) 엔터티를 한 개(One) 또는 각 (Each)로 읽는다.

2. 대상 (Target) 엔터티의 관계 참여도 즉 개수(하나, 하나 이상)을 읽는다.

3. 관계 선택 사양과 관계명을 읽는다.

728x90