관계

박선규's avatar
Sep 30, 2024
관계

관계(Relationship)의 개념

  • 관계는 엔터티간의 연관성을 나타낸 개념
  • 관계를 정의할 때는 인스턴스(각 행 데이터)간의 논리적인 연관성을 파악하여 정의
  • 엔터티를 어떻게 정의하느냐에 따라 변경되기도 함
 

관계의 종류

1) 존재적 관계

  • 한 엔터티의 존재가 다른 엔터티의 존재에 영향을 미치는 관계
  • 엔터티 간의 연관된 상태를 의미
ex) 부서 엔터티가 삭제되면 사원 엔터티의 존재에 영향을 미침

2) 행위적 관계

  • 엔터티 간의 어떤 행위가 있는 것을 의미
ex) 고객 엔터티의 행동에 의해 주문 엔터티가 발생
💡
ERD에서는 존재관계와 행위관계를 구분하지 않는다.
 

관계의 구성

  1. 관계명
  1. 차수(Cardinality)
  1. 선택성(Optionality)
 
ex) 학생 정보가 있고 강의 정보가 있다. 한 학생이 어떤 강의를 듣는지에 대한 어떤 수강에 대한 관계를 표현한다면 수강이력이라는 관계명이 필요하다. 그리고 일대다인지 일대일인지 다대다인지 관계를 정의하는 차수가 있어야 한다. 또, 관계에서 필수적인 관계인지 선택적인 관계인지에 따라서 관계의 구성요소를 정의할 수 있다.
 

관계의 차수 (Cardinality)

  • 한 엔터티의 레코드(인스턴스)가 다른 엔터티의 레코드(인스턴스)와 어떻게 연결되는지를 나타내는 표현
  • 주로 1:1, 1:N, N:M 등으로 표현

1) 1:1 관계

  • 완전 1:1 관계
    • 하나의 엔터티에 관계되는 엔터티가 반드시 하나로 존재하는 경우
      • ex) 사원은 반드시 소속 부서가 있어야 함
  • 선택적 1:1 관계
    • 하나의 엔터티에 관계되는 엔터티가 하나이거나 없을 수 있는 경우
      • ex) 사원은 하나의 소속부서가 있거나 아직 발령전이면 없을 수 있음

2) 1:N 관계

  • 엔터티에 하나의 행에 다른 엔터티의 값이 여러 개 있는 관계
    • ex) 고객은 여러 개 계좌를 소유할 수 있음

3) M:N 관계

  • 두 엔터티가 다대다의 연결 관계를 가지고 있다면, 이 경우에 조인하면 카테시안 곱이 발생하므로 두 엔터티를 연결하는 연결엔터티를 추가해서 1:N관계로 해소할 필요가 있음
    • ex) 한 학생이 여러 강의를 수강할 수 있고, 한 강의 기준으로도 여러 학생이 보유할 수 있음
      ⇒ 이 두 엔터티의 연결엔터티로는 구매이력 엔터티가 필요함
** 카테시안 곱
  • M*N이 모두 출력되는 것을 의미
  • 카테시안 곱이 발생하면 JOIN의 성능이 좋지 않음

관계의 페어링

  • 엔터티 안에 인스턴스가 개별적으로 관계를 가지는 것
  • 관계란 페어링의 집합을 의미함
 
** 관계와 차수, 페어링 차이
  • 학생과 강의 엔터티는 관계를 가짐
  • 한 학생은 여러 강의를 수강할 수 있고, 한 강의도 여러 학생에게 수강될 수 있으므로 M대N 관계이며, 이 때 차수는 M:N이 됨
  • 인스턴스의 관계를 보면 “학생 A가 강의 B를 2023년 1학기에 수강했고 성적은 ‘A+’를 받았다”와 같은 특정한 페어링이 형성
  • 이런식으로 관계의 차수는 하나의 엔터티와 다른 엔터티 간의 레코드 연결 방식을 나타내는 반면, 관계의 페어링은 두 엔터티 간의 특정 연결을 설명하고 추가 정보를 제공하는 용도로 사용.
 
엔터티가 가지고 있는 관계가 아니라 인스턴스끼리 연결되는 고리들을 페어링이라고 한다.
Share article

p4rksk