TIL_221226_SQL 전문가 가이드_데이터 모델링의 이해_관계

창고·2022년 12월 26일
0

본 게시글은 'SQL 전문가 가이드'의 내용을 정리한 것입니다.
https://dataonair.or.kr/db-tech-reference/d-guide/sql/

1. 데이터 모델링의 이해

4. 관계

(1) 관계의 개념

  • 관계(Relationship)의 정의
    • 사전적 정의 : 상호 연관성이 있는 상태
    • 엔티티의 인스턴스 사이의 논리적인 연관성. 존재의 형태로서나 행위로서 서로에게 연관성이 부여된 상태
  • 관계의 페어링
    • 관계는 엔티티 안에 인스턴스가 개별적으로 관계를 가지는 것(페어링), 이것의 집합을 관계로 표현하는 것. 개별 인스턴스가 각각 다른 종류의 관계를 가지고 있다면 두 엔티티 사이에 두 개 이상의 관계가 형성될 수 있음
    • 관계의 페어링 : 엔티티 내에 인스턴스와 인스턴스 사이에 관계가 설정되어 있는 어커런스

(2) 관계의 분류

  • 존재에 의한 관계(연관관계)행위에 의한 관계(의존관계)로 구분될 수 있음
  • 이는 관계를 연결함에 있어 어떤 목적으로 연결되었느냐에 따라 분류를 하기 때문
  • 연관관계(Association)와 의존관계(Dependency)의 차이점
    • 연관관계는 항상 이용하는 관계, 존재적 관계에 해당, 실선으로 표현, 소스코드에서 멤버 변수로 선언하여 사용
    • 의존관계는 행위에 의해 관계가 형성될 때 구분하여 표현, 점선으로 표현, 행위를 나타내는 코드인 Operation(Method) 에서 파라미터로 이용할 수 있도록 되어 있음

(3) 관계의 표기법

  • 관계의 3가지 개념
    • 관계명(Membership) : 관계의 이름
    • 관계차수(Cardinality) : 1:1, 1:M, M:N
    • 관계선택사양(Optionality) : 필수관계, 선택관계
  • 관계명(Membership)
    • 엔티티가 관계에 참여하는 형태를 지칭
    • 관계가 시작되는 편을 관계 시작점(The Beginning), 받는 편을 관계 끝점(The End)라고 명명
    • 애매한 동사를 피해야 하고 현재형으로 표현해야 함
  • 관계차수(Caridinality)
    • 두 엔티티 간의 관계에서 참여자의 수를 표현하는 것
    • 가장 중요하게 고려해야 할 사항은 한 개의 관계가 존재하는지, 두 개 이상의 멤버십이 존재하는지 파악하는 것이 중요
    • 1:1 (One to One) 관계 : 관계에 참여하는 각각의 엔티티는 관계를 맺는 다른 엔티티의 엔티티에 대해 단지 하나의 관계만을 가짐
    • 1:M (One to Many) 관계 : 관계에 참여하는 각각의 엔티티는 관계를 맺는 다른 엔티티의 엔티티에 대해 하나나 그 이상의 수와 관계를 가짐, 반대의 방향은 단지 하나의 관계만을 가짐
    • M:N (Many to Many) 관계 : 관계에 참여하는 각각의 엔티티에 대해 하나나 그 이상의 수와 관계를 가짐 (양방향 동일) -> 이후 두 개의 주 식별자를 상속받은 관계 엔티티를 이용, 3개의 엔티티로 구분하여 표시
  • 관계선택사양(Optionality)
    • 필수(Mandatory)와 선택(Optional)
    • FK 처리 : 필수의 경우 Nullable이 되어선 안되며 반대로 선택은 Nullable 가능
    • 관계선택사항은 관계를 통한 상대방과의 업무적인 제약 조건을 표현하는 것으로 간단하면서 아주 중요한 표기법

(4) 관계의 정의 및 읽는 방법

  • 관계 체크 사항
    • 두 개의 엔티티 사이에 관심 있는 연관 규칙이 존재하는가?
    • 두 개의 엔티티 사이에 정보의 조합이 발생되는가?
    • 업무기술서, 장표에 관계연결에 대한 규칙이 서술되어 있는가?
    • 업무기술서, 장표에 관계 연결을 가능하게 하는 동사(Verb)가 있는가?
  • 관계 읽기
    • 기준(Source) 엔티티를 한 개(One) 또는 각(Each)로 읽는다
    • 대상(Target) 엔티티의 관계 참여도 측 개수(하나, 하나 이상)을 읽는다
    • 관계선택사양과 관계명을 읽는다
profile
공부했던 내용들을 모아둔 창고입니다.

0개의 댓글