티스토리 뷰
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)
2) 1:M 관계를 표시하는 방법 (One To Many)
: 다수가 참여한 경우 (Many) 는 까마귀발 모양으로 표현한다.
3) M:M 관계를 표시하는 방법 (Many To Many)
: 각각의 엔터티는 관계를 맺는 다른 엔터티의 엔터티에 대해 하나 또는 그 이상의 수와 관계를 가진다.
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 |
- Total
- Today
- Yesterday
- 데이터 모델링
- 파이썬
- 알고리즘
- 별 찍기
- SQLD 2과목
- range함수
- 백준
- python별찍기
- 파이썬for문
- SQLD1과목
- 40회 SQLD
- 데이터베이스
- SUM함수
- BAEKJOON
- Python
- 백준 별찍기
- 백준별찍기
- 파이썬문법
- 파이썬입출력
- f-string
- 네이버클라우드플랫폼
- SQLD 1과목
- python문법
- SQLD
- SQLD40회
- Unity GameObject 생성
- NaverCloudPlatform
- 파이썬sum
- 파이썬 입출력
- 백준파이썬
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |