티스토리 뷰

SQL/SQLD 1과목

SQLD - 과목1. (4) 관계

채애 2021. 2. 8. 15:02

1. 관계의 개념

① 관계의 정의

 

▷ Relationship ( 관계 ) 

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

      관계는 엔터티와 엔터티 간 연관성을 표현한다.

      엔터티의 정이에 따라 영향을 받고, 속성 정의 및 관계 정의에 따라서도 다양하게 변할 수 있다.

 

 

관계의 정의

 

 

 


② 관계의 패어링

 

▷ Paring (패어링)

    : 엔터티 안에 인스턴스가 개별적으로 관계를 가지는 것. 패어링의 집합을 관계로 표현한다.

 

개별 인스턴스가 각각 다른 종류의 관계를 가지고 있다면, 두 엔터티 사이에 두 개 이상의 관계가 형성될 수 있다.

 

 

 

▷ Relationship Paring (관계 패어링)

    : 각각의 엔터티의 인스터들이 자신이 관련된 인스턴스들과 관계의 어커런스로 참여하는 형태.

      엔터티 내에 인스턴스와 인스턴스 사이에 관계가 설정되어 있는 어커런스.

 

관계의 패어링

 

엔터티  인스턴스의 집합을 논리적으로 표현
관계  관계 패어링의 집합을 논리적으로 표현

 

 

 

요즘 ERD 에서 관계를 위해 속성을 도출하지는 않는다. 

관계의 표현 : 이항 관계 / 삼항 관계 / n항 관계

 

 

 

 

 

 

 


2. 관계의 분류

관계는 존재에 의한 관계 / 행위에 의한 관계로 구분할 수 있다.

관계를 연결함에 있어 어떤 목적으로 연결되었냐에 따라 분류한다.

 

관계의 분류

 

 

UML ( Unigied Modeling Language )

  : 클래스 다이어그램의 관계중 연관관계 (Association) / 의존관계 (Dependency) 가 있다.

 

관계 의미 표현 방법
코드 사용
연관관계 항상 이용하는 관계.  존재적 관계에 해당한다. 실선 멤버변수
의존관계 상대방 클래스의 행위에 의해 관계가 형성될 때 구분하여 표현한다. 점선 파라미터

* ERD 에서는 존재적 관계행위에 의한 관계를 구분하지 않는다.

* 클래스 다이어그램에서는 구분하여, 연관관계 / 의존관계 로 표현한다.

 

 

 

연관관계는 소스 코드에서 멤버변수로 선언하여 사용한다.

의존관계는 Operation(Method) 에서 파라미터 등으로 이용한다.

 

 

 

 

 


3. 관계의 표기법

※ 3가지 표기법 개념

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

 

 


① 관계명 (Membership)

 

관계의 관계명

▷ 관계명 : 엔터티가 관계에 참여하는 형태를 지칭

 

각각의 관계는 두 개의 관계명을 가지고 있다. ( 두 가지 관점으로 표현 )

관계 시작점, 끝점 모두 관계명을 가진다.

참여자의 관점에 따라 관계이름이 능동적 (Active) / 수동적 (Passive) 으로 명명된다.

 

1) 관계시작점 (The Beginning)

    : 관계가 시작되는 편

 

2) 관계끝점 (The End)

    : 관계를 받는 편

 

 

관계명 명명 규칙

1) 애매한 동사를 피한다. 

    구체적이지 않으면 어떤 행위인지, 어떤 상태인지 파악할 수 없다.

 

2) 현재형으로 표현한다.

    '했다' , '할 것이다' 라는 표현 X

 

 

 


② 관계차수 (Degree/Cardinality)

 

▷ 관계차수 : 엔터티간 관계에서 참여자의 수를 표현

 

고려해야 할 사항

1) 한 개의 관계가 존재하는지 파악

2) 두 개 이상의 맴버쉽이 존재하는지 파악

 

 

1) 1:1 관계를 표시하는 방법  (One To One)

관계차수 ( 1:1 )

2) 1:M 관계를 표시하는 방법  (One To Many)

관계차수 ( 1:M )

  : 다수가 참여한 경우 (Many) 는 까마귀발 모양으로 표현한다.

 

 

3) M:M 관계를 표시하는 방법  (Many To Many)

관계차수 ( M:M )

  : 각각의 엔터티는 관계를 맺는 다른 엔터티의 엔터티에 대해 하나 또는 그 이상의 수와 관계를 가진다.

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

 

 

 

 


③ 관계선택사양 (Optionality)

 

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

 

필수참여
(Mandatory Membership)
참여하는 모든 참여자가 반드시 관계를 갖는다.
타 엔터티의 참여자와 연결이 되어야 하는 관계이다.
선택참여
(Optional Membership)
반드시 관계를 가지지 않아도 된다.
물리속성에서 FK로 연결될 경우 Null을 허용할 수 있는 항목이다.

 

선택참여관계를 필수참여 관계로 잘못 지정할 경우, 반드시 한 개의 트랜잭션으로 제어해야 하는 제약사항이 발생한다.

 

선택참여하는 엔터티 쪽을 ' ' 으로 표시, 필수참여는 표시 X

양쪽 엔터티에 모두 선택참여 ( 0:0 관계 ) 라면 잘못된 확률이 높아서 다시 검토해본다.

 

 

 

관계선택참여

 

 

 

 

 


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

① 관계 체크사항

 

 1) 두 개의 엔터티 사이에 관심있는 연관규칙이 존재하는가?

 2) 두 개의 엔터티 사이에 정보의 조합이 발생되는가?

 3) 업무기술서, 장표에 관계연결에 대한 규칙이 서술되어 있는가?

 4) 업무기술서, 장표에 관계연결을 가능하게 하는 동사가 있는가?

 

 

 

② 관계 읽기

 

 1) 관계의 기준 엔터티를 한 개 또는 각(Each)으로 읽는다.

 2) 대상 엔터티의 관계참여도 (개수)를 읽는다.

 3) 관계선택사양과 관계명을 읽는다.

 

관계의 읽는 방법

 

관계를 도출하기 위한 질문 문장을 만든다.

질문 방법은 엔터티간 관계 설정과 업무의 흐름도 분석이 되는 실제 프로젝트의 효과적인 방법이다.

 

 

 

 

 

 

 


 

 

 

'SQL > SQLD 1과목' 카테고리의 다른 글

SQLD - 과목1. (6) 성능 데이터 모델링  (0) 2021.03.18
SQLD - 과목1. (5) 식별자  (1) 2021.02.24
SQLD - 과목1. (3) 속성  (0) 2021.02.07
SQLD - 과목1. (2) 엔터티  (0) 2021.01.31
SQLD - 과목1. (1) 데이터 모델링  (0) 2021.01.30
댓글