상세 컨텐츠

본문 제목

[개미의 걸음 SQLD 1과목] 데이터 모델링 요소 ③. 관계(Relationship)

자격증/SQLD

by IT개미 데이터 2020. 12. 7. 07:07

본문

728x90

관계[Relationship]

출처 : DBGUIDE.NET

엔터티 간의 관련성을 의미

  • 관계는 일반적으로 존재 관계와 행위 관계로 분류

    존재 관계 두 개의 엔터티가 존재 여부의 관계가 있는 것[엔터티 간의 상태를 의미]
        ex1> 계좌 개설 시 할당된 관리점에서 고객 관리
        ex2> 부서와 사원 엔터티 간의 '소속'관계
    행위 관계 두 개의 엔터티가 어떤 행위에 의한 관련성이 있는 것[엔터티 간에 행해지는 행위를 의미]
        ex1> 계좌 개설 후 주문 발주
        ex2> 주문과 배송 엔터티 간의 '배송근거' 관계
    ERD에서는 관계를 연결할 때, 존재와 행위를 구분하지 않고 단일화된 표기법을 사용
           
    → 데이터모델링에서는 존재 관계와 행위 관계를 구분하는 표기법이 없음
    ※ 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]

출처 : DBGUIDE.NET

 엔터티 간에 관계에 참여하는 형태를 지칭

  • 각각의 관계는 두 개의 관계명을 가짐
  • 엔터티에서 관계가 시작되는 부분을 관계 시작점[The Beginning]
    엔터티에서 관계를 받는 부분을 관계끝점[The End]

 

 

관계표기법② 관계차수[Relation Cardinality]

출처 : DBGUIDE.NET

두 개의 엔터티 간에 관계에 참여하는 수를 의미

    → 관계의 기수성을 나타내는 개념

관계차수의 종류 설    명
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]

출처 : DB.GUIDE.NET

필수, 선택 * 반드시 하나는 존재해야 하는 관계
    → 선택적 관계는 없을 수도 있는 관계
* 필수적 관계 : 반드시 하나가 있어야 하는 관계
  선택적 관계 : 없을 수도 있는 관계
필수적인 관계는 '|'로 표현되고 선택적 관계는 'O'로 표현

 

 

 

식별관계와 비식별관계

식별 관계
[Identification Relationship]
* 부모 테이블의 기본키가 자식 테이블의 기본키로 전이되는 관계
    ERD에서 실선으로 표시
* 부모가 자식의 모든 정보를 저장[기본키를 공유받은 관계]
* 식별자 관계만으로 연결될 경우, 주식별자 속성이 지속적으로 증가하여 복잡성과 오류 가능성을 유발
* 강한 연결관계 표현
    ex> 고객과 계좌 엔터티에서
              고객은 독립적으로 존재할 수 있는 강한 개체[Strong Entity]
              계좌 엔터티는 약한 개체[Weak Entity]

    → 강한 개체는 어떤 다른 엔터티에게 의존하지 않고 독립적으로 존재
    → 강한 개체는 다른 엔터티와 관계를 가질 때 다른 엔터티에게 기본키를 공유
    → 강한 개체는 식별 관계로 표현
    → 강한 개체의 기본키 값 변경 시, 식별 관계에 있는 엔터티 값도 변경됨
비식별 관계
[Non - Identification Relationship]
* 부모테이블의 기본키가 자식테이블의 일반 속성으로 전이되는 관계
    → ERD에서 점선으로 표시
* 부모가 자식의 부분적인 정보를 저장[독립적인 기본키를 가짐]
    → 부모엔터티에 참조값이 없어도 자식엔터티의 인스턴스가 생성될 수 있음
* 비식별 관계만으로 연결될 경우, 불필요한 조인이 다량으로 유발
* 약한 연결관계 표현
    ex> 관리점 엔터티의 기본키인 지점코드는 고객 엔터티와 비식별 관계를 가짐
               지점 코드는 고객 엔터티의 기본키가 아닌 일반 칼럼으로 참조

# 강한 개체와 약한 개체

더보기

강한 개체[Strong Entity] : 누구에게도 지배되지 않는 독립적인 Entity
약한 개체[Weak Entity]  :  개체(Entity)의 존재가 다른 개체(Entity)의 존재에 달려있는 Entity

 

 

 

 

 

728x90

관련글 더보기

댓글 영역