자격증/SQLD
[개미의 걸음 SQLD 1과목] 데이터 모델링 요소 ③. 관계(Relationship)
IT개미 데이터
2020. 12. 7. 07:07
728x90
관계[Relationship]
엔터티 간의 관련성을 의미
- 관계는 일반적으로 존재 관계와 행위 관계로 분류
존재 관계 두 개의 엔터티가 존재 여부의 관계가 있는 것[엔터티 간의 상태를 의미]
ex1> 계좌 개설 시 할당된 관리점에서 고객 관리
ex2> 부서와 사원 엔터티 간의 '소속'관계행위 관계 두 개의 엔터티가 어떤 행위에 의한 관련성이 있는 것[엔터티 간에 행해지는 행위를 의미]
ex1> 계좌 개설 후 주문 발주
ex2> 주문과 배송 엔터티 간의 '배송근거' 관계
→ 데이터모델링에서는 존재 관계와 행위 관계를 구분하는 표기법이 없음
※ UML[Unified Modeling Language]에서는 연관관계와 의존관계에 대해 다른 표기법을 사용
→ 연관관계[Association]는 실선, 의존관계[Dependency]는 점선 - 관계의 표기법은 3가지 개념[관계명, 관계차수, 선택성]을 사용
관계명[Relationship Membership] : 관계의 이름
관계차수[Relationship Degree/Cardinality] : 1:1, 1:M, M:N
관계선택사항[Relationship Optionality] : 필수 관계, 선택관계
두 개의 엔터티 사이에서 관계를 도출할 때 고려사항
1. 두 개의 엔터티 사이에 관심 있는 연관규칙이 존재하는가? |
2. 두 개의 엔터티 사이에 정보의 조합이 발생되는가? |
3. 업무기술서, 장표에 관계연결을 가능하게 하는 동사가 있는가? |
4. 업무기술서, 장표에 관계연결에 대한 규칙이 서술되어 있는가? |
728x90
관계 표기법① 관계명[Relationship Membership]
엔터티 간에 관계에 참여하는 형태를 지칭
- 각각의 관계는 두 개의 관계명을 가짐
- 엔터티에서 관계가 시작되는 부분을 관계 시작점[The Beginning]
엔터티에서 관계를 받는 부분을 관계끝점[The End]
관계표기법② 관계차수[Relation Cardinality]
두 개의 엔터티 간에 관계에 참여하는 수를 의미
→ 관계의 기수성을 나타내는 개념
관계차수의 종류 | 설 명 |
1:1 | * 완전 1대1과 선택적 1대 1 관계가 있음 완전 1대 1 : 하나의 엔터티에 관계되는 엔터티의 관계가 하나인 경우[반드시 존재] 선택적 1대 1 : 하나의 엔터티에 관계되는 엔터티의 관계가 하나이거나 없을 수도 있음 ex> 한 명의 고객은 하나의 고객등급이 부여 |
1:M | * 엔터티에 행이 하나 있을 때 다른 엔터티의 값이 여러 개 있는 관계 → 주식별자 중 일부로부터 독립한 경우, 주식별자와 독립한 엔터티는 1:M 관계 ex> 한 명의 고객이 여러 개의 계좌를 가질 수 있음 |
M:M | * 두 개의 엔터티가 서로 여러개의 관계를 가지고 있는 관계 ex> 한 명의 고객이 여러 개의 상품 가입 가능 하나의 상품은 여러 명의 고객들로 이루어짐 * 관계형 데이터베이스에서 M대 N관계의 Join은 카테시안 곱이 발생 → M대 N관계를 1대 N, N대 1로 해소해야 함[교차 엔터티] |
# 카테시안 곱
더보기
각 집합의 원소를 각 성분으로하는 튜플들의 집합
Query의 From 절에 2 개 이상의 Table이 있고, 두 Table 사이의 유효한 Join조건이 기술되어 있지 않은 경우에는 두 Table의 모든 행들이 무조건 결합해 Table들에 존재하는 행 갯수를 곱한 만큼의 결과값이 반환되는 것
관계표기법③ 관계차수[Relation Cardinality]
필수, 선택 | * 반드시 하나는 존재해야 하는 관계 → 선택적 관계는 없을 수도 있는 관계 * 필수적 관계 : 반드시 하나가 있어야 하는 관계 선택적 관계 : 없을 수도 있는 관계 필수적인 관계는 '|'로 표현되고 선택적 관계는 'O'로 표현 |
식별관계와 비식별관계
식별 관계 [Identification Relationship] |
* 부모 테이블의 기본키가 자식 테이블의 기본키로 전이되는 관계 → ERD에서 실선으로 표시 * 부모가 자식의 모든 정보를 저장[기본키를 공유받은 관계] * 식별자 관계만으로 연결될 경우, 주식별자 속성이 지속적으로 증가하여 복잡성과 오류 가능성을 유발 * 강한 연결관계 표현 ex> 고객과 계좌 엔터티에서 고객은 독립적으로 존재할 수 있는 강한 개체[Strong Entity] 계좌 엔터티는 약한 개체[Weak Entity] → 강한 개체는 어떤 다른 엔터티에게 의존하지 않고 독립적으로 존재 → 강한 개체는 다른 엔터티와 관계를 가질 때 다른 엔터티에게 기본키를 공유 → 강한 개체는 식별 관계로 표현 → 강한 개체의 기본키 값 변경 시, 식별 관계에 있는 엔터티 값도 변경됨 |
비식별 관계 [Non - Identification Relationship] |
* 부모테이블의 기본키가 자식테이블의 일반 속성으로 전이되는 관계 → ERD에서 점선으로 표시 * 부모가 자식의 부분적인 정보를 저장[독립적인 기본키를 가짐] → 부모엔터티에 참조값이 없어도 자식엔터티의 인스턴스가 생성될 수 있음 * 비식별 관계만으로 연결될 경우, 불필요한 조인이 다량으로 유발 * 약한 연결관계 표현 ex> 관리점 엔터티의 기본키인 지점코드는 고객 엔터티와 비식별 관계를 가짐 지점 코드는 고객 엔터티의 기본키가 아닌 일반 칼럼으로 참조 |
# 강한 개체와 약한 개체
더보기
강한 개체[Strong Entity] : 누구에게도 지배되지 않는 독립적인 Entity
약한 개체[Weak Entity] : 개체(Entity)의 존재가 다른 개체(Entity)의 존재에 달려있는 Entity
728x90