본문 바로가기
데이터베이스/SQLD

[SQLD 과목1 1장-4절] 관계(Relationship)

by kgvovc 2021. 2. 27.
반응형

1. 관계의 개념

가. 관계의 정의

관계란?

 

  • 상호 연관성이 있는 상태(사전적 정의)
  • 엔터티의 인스턴스 사이의 논리적인 연관성으로서 존재의 형태로서나 행위로서 서로에게 연관성이 부여된 상태

 

 

나. 관계의 패어링

패어링이란?

 

  • 엔터티 안의 인스턴스가 개별적으로 맺는 관계

엔터티가 인스턴스의 집합을 논리적으로 표현했다면 관계는 관계 패어링의 집합을 논리적으로 표현한 것이다.

 

 

2. 관계의 분류

  • 존재에 의한 관계
  • 행위에 의한 관계

 

 

3. 관계의 표기법

가. 관계명(Membership)

관계명은 엔터티가 관계에 참여하는 형태를 지칭한다. 각각의 관계는 두 개의 관계명을 가지고 있다. 또한 각각의 관계명에 의해 두 가지의 관점으로 표현될 수 있다.

 

 

엔터티에서 관계가 시작되는 편을 관계시작점(The Beginning)이라 부르고 받는 편을 관계끝점(The End)이라 부른다. 관계 시작점과 끝점 모두 관계이름을 가져야 하며 참여자의 관점에 따라 능동적이거나 수동적으로 명명된다.

관계명은 다음과 같은 명명규칙에 따라 작성해야 한다.

 

  • 애매한 동사를 피한다. 예를 들면 '관계된다', '관련이 있다', '이다', '한다' 등은 구체적이지 않아 어떤 행위가 있는지 또는 두 참여자간 어떤 상태가 존재하는지 파악할 수 없다.
  • 현재형으로 표현한다. 예를 들면 '수강을 신청했다', '강의를 할 것이다' 라는 식으로 표현해서는 안 된다.

 

나. 관계차수(Degree/Cardinality)

 

두 개의 엔터티간 관계에서 참여자의 수를 표현하는 것을 관계차수(Cardinality)라고 한다. 가장 일반적인 관계차수 표현방법은 1:M, 1:1, M:N이다. 가장 중요하게 고려해야 할 사항은 한 개의 관계가 존재하느냐 아니면 두 개 이상의 멤버쉽이 존재하느냐를 파악하는 것이 중요하다.

 

관계차수를 표시하는 방법은 여러 가지 방법이 있지만 Crow's Foot 모델에서는 선을 이용하여 표현한다. 한 개가 참여하는 경우는 실선을 그대로 유지하고 다수가 참여한 경우는 까마귀발 모양으로 그려준다.

 

1) 1:1(ONE TO ONE) 관계를 표시하는 방법

 

 

2) 1:M(ONE TO MANY) 관계를 표시하는 방법

 

 

3) M:M(MANY TO MANY) 관계를 표시하는 방법

 

 

이렇게 M:N 관계로 표현된 데이터모델은 이후에 두 개의 주식별자를 상속받은 관계 엔터티를 이용하여 3 개의 엔터티로 구분하여 표현한다.

다. 관계선택사양(Optionality)

엔터티가 어떤 관계에 항상 참여하는지 아니면 참여할 수도 있는지를 나타내는 방법이 필수 참여(Mandatory Membership)와 선택 참여(Optional Membership)이다.

 

ex) 주문서는 반드시 주문목록을 가져야 하며 주문목록이 없는 주문서는 의미가 없으므로 주문서와 주문목록은 필수 참여 관계가 된다. 그러나 목록은 주문이 될 수도 있고 주문이 되지 않은 목록이 있을 수도 있으므로 목록과 주문과의 관계는 선택참여가 되는 것이다.

 

 

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

 

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

 

 

4. 관계의 정의 및 읽는 방법

가. 관계 체크사항

두 개의 엔터티 사이에서 관계를 정의할 때 다음 사항을 체크해 보자.

 

  • 두 개의 엔터티 사이에 관심있는 연관규칙이 존재하는가?
  • 두 개의 엔터티 사이에 정보의 조합이 발생되는가?
  • 업무기술서, 장표에 관계연결에 대한 규칙이 서술되어 있는가?
  • 업무기술서, 장표에 관계연결을 가능하게 하는 동사(Verb)가 있는가?

 

나. 관계 읽기

(생략)

반응형

댓글