• 관계의 개념

    가. 관계의 정의

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

    나. 관계의 페어링

    • 관계 페어링 : 엔티티내에 인스턴스와 인스턴스 사이에 관계가 설정되어 있는 어커런스를 말함.

       
       

  • 관계의 분류

  • 존재에 의한 관계 : ‘소속된다’라는 의미는 행위에 따른 이벤트에 의해 발생되는 의미가 아니고 그냥 황경빈 사원이 DB팀에 소속되어 있기 때문에 나타나는 즉 존재의 형태에 의해 관계가 형성되어 있는 것이다.
  • 행위에 의한 관계 : CTA201이라는 주문번호를 생성하였다. 주문 엔티티의 CTA201 주문번호는 김경재 고객이 ‘주문한다’라는 행위에 의해 발생되었기 때문에 두 엔티티 사이의 관계는 행위에 의한 관계가 되는 것이다.
  • 관계의 표기법

    가. 관계명(Membership)

    • 엔티티에서 관계가 시작되는 편을 관계시작점(The Beginning)이라고 부르고 받는 편을 관계끝점(The End)이라고 부른다. 관계 시작점과 끝점 모두 관계이름을 가져야 하며 참여자의 관점에 따라 관계이름이 능동적(Active)이거나 수동적(Passive)으로 명명된다. 관계명은 다음과 같은 명명규칙에 따라 작성해야 한다.
    • 애매한 동사를 피한다. 예를 들면 ‘관계된다’, ‘관련이 있다’, ‘이다’, ‘한다’ 등은 구체적이지 않아 어떤 행위가 있는지 또는 두 참여자간 어떤 상태가 존재하는지 파악할 수 없다.
    • 현재형으로 표현한다. 예를 들면 ‘수강을 신청했다’, ‘강의를 할 것이다’라는 식으로 표현해서는 안된다. ‘수강 신청한다’, ‘강의를 한다’로 표현해야 한다.

    나. 관계차수(Degree/Cardinallity)

    • 관계차수 : 두 개의 엔티티간 관계에서 참여자의 수를 표현하는 것
    • 가장 일반적인 관계차수 표현방법은 1:M, 1:1, M:N
    • 한 개의 관계가 존재하느냐 아니면 두 개 이상의 멤버쉽이 존재하는지를 파악하는 것이 중요
    • Crow`s Foot 모델에서는 한 개가 참여하는 경우는 실선을, 다수가 참여한 경우는 까마귀발과 같은 모양으로 그려줌
    • 1:1 관계를 표시하는 방법

    • 1:M 관계를 표시하는 방법

    • M:M 관계를 표시하는 방법

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

    다. 관계선택사양(Optionality)

    • 필수연관관계 : 참여하는 모든 참여자가 반드시 관계를 가지는, 타 엔티티의 참여자와 연결이 되어야 하는 관계. 예를 들면 주문서는 반드시 주문목록을 가져야 하며 주문목록이 없는 주문서는 의미가 없으므로 주문서와 주문목록은 필수참여관계가 되는 것이다.
    • 선택연관관계 : 위 설명에서 목록은 주문이 될 수도 있고 주문이 되지 않은 목록이 있을수도 있으므로 목록과 주문목록과의 관계는 선택참여(Optional Membership)가 되는 것이다.
    • 선택참여된 항목은 물리속성에서 Foreign Key로 연결될 경우 Null을 허용할 수 있는 항목이 된다. 만약 선택참여로 지정해야할 관계를 필수참여로 잘못 지정하면 애플리케이션에서 데이터가 발생할 때 반드시 한 개의 트랜잭션으로 제어해야 하는 제약사항이 생기므로 유의해야 함.
    • 선택참여관계는 ERD에서 관계를 나타내는 선에서 선택참여하는 엔티티 쪽을 원으로 표시한다. 필수 참여는 아무런 표시를 하지 않는다.

  • 관계의 정의 및 읽는 방법

    가. 관계 체크사항

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

    나. 관계 읽기

    • 기준(Source) 엔티티를 한 개(One) 또는 각(Each)으로 읽는다.
    • 대상(Target) 엔티티의 관계참여도 즉 개수(하나, 하나 이상)를 읽는다.
    • 관계선택사양과 관계명을 읽는다.

     
     

By haisins

오라클 DBA 박용석 입니다. haisins@gmail.com 으로 문의 주세요.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다