본문 바로가기
study_db

데이터모델링의 3가지 요소 : 관계(Relationship)에 대한 이해

by developer_j 2021. 2. 10.
728x90
반응형

1. 관계(Relationship)

관계는 하나의 엔터티가 다른 엔터티와 상호 연관성이 있는 상태를 말한다.

단순히 관계에 대해 예를 들자면, 가게는 상품을 판매한다. 상품은 가게에서 판매된다. 가게와 상품은 판매라는 관계를 갖게 된다.

 

2. 관계의 분류

관계는 존재에 의한 관계행위에 의한 관계로 구분될 수 있으며, 이것은 관계가 어떤 목적으로 연결되었는지에 따라 분류된다.

  • 직원은 부서에 소속된다. '소속된다'는 의미는 어떤 행위에 따라 이벤트가 발생하는 것이 아니라, 그냥 소속되어 있는 현상이라고 할 수 있다. 이런 관계가 존재에 의한 관계이다. (소속으로는 이벤트 발생 X)
  • 고객은 상품을 주문한다. '주문한다'는 의미는 고객이 어떤 행위를 함으로써 이벤트를 발생시킨다. 주문함으로써 주문번호가 생성되므로 두 엔터티 사이의 관계는 행위에 의한 관계가 된다. (주문으로 이벤트 발생 O)

책 내용을 정리한 건데, 보면 뭔가 알듯말듯 잡히는 개념인 것 같다. 주문함으로써 주문번호가 발생하면, 소속됨으로써 사원번호가 발생할 수도 있지 않나..?라고 생각했는데 이렇게 정리하기로 했다. 사원은 부서에 여러번 속해서 사원번호가 여러번 발급될 수 없다. 즉, 소속 이벤트는 처음에 한번 발생하고 마는 것이다. 그러나 상품 주문은 여러번 할 수 있다. 주문을 할 때마다 주문 이벤트는 계속 발생한다. 즉, 소속은 정적인 관계인거고, 주문은 동적인 관계인거다. 

** UML(Undefined Modeling Language)에는 클래스 다이어그램의 관계중 "연관 관계"와 "의존 관계"가 있다. 연관관계는 존재에 의한 관계라고 이해하면 되고, 의존 관계는 행위에 의한 관계라고 이해하면 된다. 난 이게 더 이해하기 쉬운 이름인 것 같다

 

3. 관계의 표기법

관계의 표기법은 관계명, 관계차수, 관계선택사양으로 구성된다.

  • 관계명은 관계의 이름을 의미하며 애매한 동사를 피하고 현재형으로 표현해야 한다는 규칙이 있다. 
  • 관계차수는 두 개의 엔터티간 관계에서 참여자의 수를 표현하는 것이다. (1:1, 1:N, N:M)
  • 관계선택사양은 엔터티가 관계에 항상 참여하는지, 아니면 참여할 수도 있고 안할 수도 있는지를 나타내는 것이다.

특히, 관계선택사양은 필수참여와 선택참여(또는 전체참여와 부분참여)로 나뉘는데 테이블에서 제약조건을 정하는 데에 영향을 끼치므로 아주 중요하다. E-R 다이어그램에서 필수참여는 = 형태로 그리고, 선택참여는 - 형태로 그린다.

필수참여는 해당 관계에 한 엔터티가 필수적으로, 참여하지 않는 경우가 절대 없는, 반드시 참여해야만 하는, 무조건 필요한 경우이고, 반대로 선택참여는 해당 관계에 한 엔터티가 필수적인 존재는 아닌, 참여하지 않을 수도 있는, 무조건 행하는 것은 아닌 경우를 뜻한다.

 

일부 출처 : SQL 전문가 가이드(한국데이터베이스진흥원, 2013 Edition)

728x90
반응형