티스토리 뷰

개발냥이/SQLD

[SQLD] 관계

데브캣_DevCat 2023. 2. 6. 17:18

관계의 정의

  • 관계 (Relationship) : 엔터티의 인스턴스 사이의 논리적인 연관성으로써 존재의 형태로써나 행위로써 서로에게 연관성이 부여된 상태
  • 관계는 엔터티와 엔터티간 연관성을 표현하기 때문에 엔터티의 정의에 따라 영향을 받기도 하고, 속성 정의 및 관계 정의에 따라서도 다양하게 변할 수 있다.

 

관계 페어링

  • 관계는 엔터티 안의 인스턴스가 개별적으로 관계를 가지는 것(페어링)이고, 이것의 집합을 관계로 표현한다는 것이다. 따라서 개별 인스턴스가 각각 다른 종류의 관계를 가지고 있다면 두 엔터티 사이에 두 개 이상의 관계가 형성될 수 있다.

 

관계의 분류

  • 어떤 목적으로 연결되었는지에 따른 두 가지 분류
    • 존재의 의한 관계 : 부서 - 사원 (사원은 부서에 항상 소속되어 있다.)
    • 행위에 의한 관계 : 고객 - 주문 (주문은 고객이 주문이라는 행위를 할 때 발생한다.)

 

관계의 표기법

1. 관계명(Membership)

  • 엔티티가 관계에 참여하는 형태를 지칭
  • 엔터티에서 관계가 시작되는 쪽을 '관계시작점' 이라고 부르고, 받는 쪽을 '관계끝점' 이라고 부른다.
  • 관계명은 다음과 같은 규칙에 따라 작성해야한다.
    • 애매한 동사를 피한다. '관계된다', '관련이 있다', '이다', '한다' 등은 구체적이지 않아서 어떤 행위가 있는지 모르기 때문
    • 현재형으로 표현한다. '수강을 신청했다', '강의를 할 것이다' 등은 잘못된 표현이다.

 

2. 관계차수(Degree / Cardinality)

  • 두 개의 엔터티간 관계에서 참여자의 수를 표현하는 것을 관계차수라고 한다. 가장 일반적인 관계차수 표현방법은 1:1, 1:M, M:N 이다.

 

3. 관계선택사양(Optinality)

  • 필수 참여 : 참여하는 모든 참여자가 반드시 관계를 가지는 것
  • 선택 참여 : 참여하는 모든 참여자가 반드시 관계를 가질 필요는 없는 것
  • '반드시 지하철의 문이 닫혀야 지하철은 출발한다' 와 같이 지하철 출발과 문닫힘은 필수적으로 연결되어있다. 이와 같이 데이터 모델의 관계에서는 필수참여관계(Mandatory)가 된다.
  • 하지만 지하철 안내방송의 경우 지하철의 출발과 상관없이 방송해도 별 문제가 없다. 이와 같이 지하철의 출발과 안내방송은 정보로써 관련이 있지만 서로가 필수적인 관계가 아닌 선택참여관계(Optional)가 된다.

 

체크사항 및 관계 읽기

관계 체크 사항

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

 

관계 읽기

  • 기준 엔터티를 한 개 또는 각각으로 읽는다.
  • 대상 엔터티의 관계 참여도, 즉 개수를 읽는다.
  • 관계선택사양과 관계명을 읽는다.

 

반응형

'개발냥이 > SQLD' 카테고리의 다른 글

[SQLD] 1과목 데이터 모델링의 이해 정리  (0) 2023.03.17
[SQL_ORACLE] GROUP BY와 HAVING  (0) 2023.03.10
[SQLD] 정규화(Nomalization)  (0) 2023.02.23
[SQLD] 속성(Attribute)  (0) 2023.02.01
[SQLD] Entity  (0) 2023.01.31
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함