최보름달

[SQL] 관계(Relationship) 본문

문송한 회사생활/SQL 공부

[SQL] 관계(Relationship)

PieMoon 2020. 7. 16. 23:15

관계의 정의

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

 

관계의 패어링

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

- 각각의 엔티티의 인스턴스들은 자신이 관련된 인스턴스들과 관계의 어커런스로 참여하는 형태를 관계 패어링 이라고 함.

- 엔티티가 인스턴스의 집합을 논리적으로 표현한 것이라면, 관계는 관계 패어링의 집합을 논리적으로 표현한 것. 

 

관계의 분류

- 존재에 의한 관계 ex) 사원이 부서에 '소속한다' 는 어떤 이벤트가 있어서가 아니라 A사원이 존재하기에 소속되는 것. 

- 행위에 의한 관계 ex) 고객이 '주문한다'는 어떠한 행위에 의해 발생하는 것. 

 

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

- 연관 관계: 항상 이용하는 관계. 존재적 관계

- 의존 관계: 상대방 클래스의 행위에 의한 관계. 

ERD에서 연관관계는 실선, 의존관계는 점선으로 표현한다. 

 

관계의 표기법

- 관계명: 관계의 이름

- 관계차수: 1:1, 1:N, M:N

- 관계선택사양: 필수관계, 선택관계

 

관계명

- 관계시작점과 관계끝점에 이름을 붙인다. 

- 관계이름이 능동적이거나 수동적으로 명명된다.

- 관계명 이름짓는 방법 : 애매한 동사를 피하고 현재형으로 표현한다. 

 

관계차수(cardinality)

- 두 개의 엔티티간 관계에서 참여자의 수를 표현하는 것.

- 한 개가 참여하는 경우 실선을 그대로 유지하고, 다수가 참여한 경우 까마귀 발과 같은 형태로 그려준다. 

 

관계선택사양

- 반드시 지하철 문이 닫혀야만 지하철이 출발한다 -> 필수참여관계

- 지하철 안내방송시스템 (출발과 상관없이 방송해도 문제 없므로) -> 선택적 관계. ERD에서 선택참여하는 쪽을 원으로 표시함. 

 

관계를 정의할 때 체크리스트

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

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

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

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

 

관계 읽는 방법

- 관계에 참여하는 기준 엔티티를 하나 또는 각(each)로 읽는다.

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

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

 

 

 

 

 

* kdata 한국데이터진흥원에서 출간한 SQL 전문가 가이드 2013 Edition을 요약했습니다

'문송한 회사생활 > SQL 공부' 카테고리의 다른 글

[SQL] 성능 데이터 모델링  (0) 2020.07.19
[SQL] 식별자 (Identifiers)  (0) 2020.07.19
[SQL] 속성(Attribute)  (0) 2020.07.15
[SQL] 엔티티(Entity)  (0) 2020.07.15
[SQL] 좋은 데이터 모델의 요소  (0) 2020.07.15