SQL- 관계(Relationship)

박현·2022년 8월 24일
2

SQL

목록 보기
4/34
post-custom-banner

관계의 개념

1. 관계의 정의

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

관계는 엔터티와 엔터티 간 연관성을 표현하기 때문에 엔터티의 정의에 따라 영향을 받기도 하고, 속성 정의 및 관계 정의에 따라서도 다양하게 변할 수 있다.

2. 관계의 페어링


관계의 분류

관계는 존재에 의한 관계와 행위에 의한 관계로 구분된다.

UML(Unified Modeling Language)에는 클래스다이어그램의 관계 중 연관관계와 의존관계가 있다.

  • 연관관계, 의존관계 차이점
    : 연관관계는 항상 이용하는 관계로 존재적 관계에 해당
    의존관계는 상대방 클래스의 행위에 의해 관계가 형성될 때 구분하여 표현한다.
  • 연관관계, 의존관계 표현방법
    • 연관관계 : 실선(->)으로 표현, 소스코드에서 멤버변수로 선언하여 사용
    • 의존관계 : 점선으로 표현, 행위를 나타내는 코드인 Operation(Method)에서 파라미터 등으로 이용할 수 있도록 되어있다.

즉 ERD에서는 존재적관계와 행위에 의한 관계를 구분하지 않고 표현했다면, 클래스다이어그램에서는 이것을 구분하여 연관관계와 의존관계로 표현하고 있다.


관계의 표기법

관계에서는 표기법이 상당히 복잡하고 여러 가지 의미를 가지고 있다. 다음 3가지 개념과 함께 표기법을 이해할 필요가 있다.

  • 관계명(Membership) : 관계의 이름
  • 관계차수(Cardinality) : 1:1, 1:M, M:M
  • 관계선택사양(Optionality): 필수관계, 선택관계

1. 관계명

  • 관계명은 엔터티가 관계에 참여하는 형태를 지칭한다. 각각의 관계는 두 개의 관계명을 가지고있다. 또한 각각의 관계명에 의해 두 가지의 관점으로 표현될 수 있다.
  • 엔터티에서 관계가 시작되는 편을 관계시작점이라고 부르고 받는 편을 관계끝점이라고 부른다. 관계시작점과 관계끝점 모두 관계이름을 가져야하고, 참여자의 관점에 따라 관계이름이 능동적, 수동적으로 명명된다.

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

  • 애매한 동사를 피한다. 애매한 동사를 사용하게 되면 구체적이지 않아 어떤 행위가 있는지 또는 두 참여자 간 어떤 관계가 있는지 파악할 수 없다.
  • 현재형으로 표현한다.

2. 관계차수(Cardinality / Degree)

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

2-1. 1:1 관계를 표현하는 방법

2-2. 1:M 관계를 표현하는 방법

2-3. M:M 관계를 표현하는 방법

3. 관계선택사양

참여하는 엔터티가 항상 참여하는지, 아니면 참여할 수도 있는지를 나타내는 방법이 필수와 선택참여이다.

  • 필수참여
    : 참여하는 모든 참여자가 반드시 관계를 가지는, 타 엔터티의 참여자와 연결되어야 하는 관계이다.
  • 선택참여
    : ERD에서 관계를 나타내는 선에서 선택참여하는 엔터티쪽을 원으로 표시한다.
  • 만약 선택참여로 지정해야 할 관계를 필수참여로 잘못 지정하면 어플리케이션에서 데이터가 발생할 때 반드시 한 개의 트랜잭션으로 제어해야 하는 제약사항이 발생한다.
  • 관계가 표시된 양쪽 엔터티에 모두 선택참여가 표시된다면 즉 0:0 관계가 된다면 그 관계는 잘못될 확률이 많으므로 관계설정이 잘못되었는지를 검토해 보아야 한다.

관계의 정의 및 읽는 방법

1. 관계 체크사항

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

2. 관계 읽기

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

  • 관계를 정의한 사항에 대해 뒷부분만 의문문으로 만들면 바로 관계를 도출하기 위한 질문 문장으로 만들수 있다. 이러한 질문 방법은 엔터티간 관계설정뿐 아니라 업무의 흐름도 분석되는 실제 프로젝트에서 효과적인 방법이다.

참고자료 : SQL전문가가이드,DATA-ON_AIR

post-custom-banner

0개의 댓글