DataBase

[SQLD] 데이터모델링의 관계

DH_0518 2025. 2. 11. 20:44

 

 

관계

 

 

 

관계

  • 두 엔터티 간의 논리적인 연관성을 의미
  • 엔터티의 인스턴스들이 서로 어떻게 연관되어 있는지를 나타낸다

 

 

관계의 개념적 분류

  • 존재에 의한 관계
    • 한 엔터티가 다른 엔터티에 속하거나 포함되는 등, 존재 자체로 형성되는 관계
    • ex) 학생 - 학과: '소속된다'라는 관계는 학생이 학과에 속하는 존재적 관계임
  • 행위에 의한 관계
    • 엔터티 간의 상호작용이나 행위를 통해 형성되는 관계
    • ex) 고객 - 상품: '주문한다'라는 관계는 고객이 상품을 주문하는 행위에 의해 형성되는 관계임

 

 

ERD에서의 관계

  • ERD에서는 '존재에 의한 관계'와 '행위에 의한 관계'를 구분짓지 않고 동일한 표기법을 사용한다(단일화된 방식)

 

ERD에서 관계 표기법

  • 관계명
    • 두 엔터티 간의 관계를 나타내는 '동사(Verb)' 형태의 이름
  • 관계 차수
    • 1:1, 1:N, M:N 등으로 표시
  • 선택성(선택 사양)
    • '필수 관계'는 실선으로, '선택 관계'는 점선으로 표현

 

 

 

'UML 클래스 다이어그램' 에서의 관계

  • UML(Unified Modeling Language) 클래스 다이어그램에서는 관계를 좀 더 세분화하여 표현한다
  • 연관관계(Association)
    • 개념적 분류: '존재적 관계'에 해당한다
    • 정의: 두 클래스 간의 지속적인 관계를 나타낸다. 한 클래스가 다른 클래스를 멤버 변수로 포함하는 경우를 의미한다
    • 표기법: 실선으로 연결되고, 필요에 따라 관계의 방향을 나타내는 화살표를 추가할 수 있다
    • 소스코드에서의 사용: 한 클래스 내에 다른 클래스 객체를 멤버 변수로 선언하여 사용한다
  • 의존관계(Dependency)
    • 개념적 분류: '행위에 의한 관계'에 해당한다
    • 정의: 한 클래스가 다른 클래스의 기능을 일시적으로 사용하는 관계. 주로 메서드의 매개변수나 지역변수로 다른 클래스의 객체를 활용하는 경우이다
    • 표기법: 점선 화살표로 표현. 의존하는 클래스에서 대상 클래스로 향하는 방향을 가진다
    • 소스코드에서의 사용: 메서드(오퍼레이션)의 매개변수나 지역 변수로 다른 클래스의 객체를 사용한다

 

 

관계의 분류

  • 관계 차수(Cardinality)로 분류
    • 두 엔터티 간의 관계에서 참여자 수를 나타낸다
    • 일반적으로 '1:1 관계', '1:N 관계', 'M:N관계'로 분류한다
  • 선택성,선택 사양(Optionality)로 분류
    • 엔터티가 관계에 항상 참여하는지 여부를 나타낸다
    • 필수 관계(반드시 관계에 참여)와, 선택 관계(필수 x)로 분류한다

 

 

관계를 도출할 때 확인해야 할 사항들

  • 업무 규칙 및 연관성 확인
    • 두 엔터티 사이에 '업무적으로 의미 있는 연관성'이 존재하는지 확인해야한다
    • ex) '고객'과 '주문' 사이에는 '고객이 주문을 한다'라는 명확한 연관성이 있다
  • 정보 조합의 필요성
    • 두 엔터티에서 '데이터를 조합하여 정보를 생성'해야하는지 판단해야한다
    • ex) '학생'과 '강의' 엔터티의 데이터를 결합해야야만 '수강 정보' 엔터티를 생성할 수 있다
  • 업무 기술서 및 시나리오, 장표 분석
    • 엔터티 간의 관계를 파악하기 위해, 업무 기술서나 시나리오에 '두 엔터티 간의 관계를 나타내는 동사(verb)'가 있는지 확인해야한다
    • 또한 업무 기술서, 장표에 '관계연결에 대한 규칙'이 서술되어 있는가를 확인해야 한다
    • ex) ~에 소속된다, ~를 포함한다