10.1 관계(Relationships)란?

관계(Relationships)

  • 두 개 이상의 엔터티 간에 존재하는 연관성


엔터티 간의 연관성

종속관계
  • 부모엔터티가 없으면 자식 엔터티가 존재할 수 없는 관계


참조관계
  • 단순히 참조 데이터를 관리하려는 관계
  • 관계를 삭제하더라도 한 속성의 연관성을 모르게 될 뿐 하위 엔터티가 존재할 수 없는 것은 아니다.
  • 그림10.2 요건 : 팀은 리그에 종속, 팀이생기면 그 팀은 한 리그에만 속할 수 있다
  • 리그번호+팀순번 를 팀 번호와 같은 의미로 사용하는 것은 비효율적
  • 리그번호+팀순번은 리그가 바뀌면 의미를 상실하게 된다.
그림 10.2
  • 그림 10.3 인조식별자를 채택해 단독속성으로 팀 엔터티의 주 식별자를 정할 수 있다.
  • 인조식별자로 팀번호를 사용하게되면 요건이 깨질수도 있다. ex) 리그번호가 일반속성으로 관리되어 엘리펀츠 리그번호의 업데이트가 가능해진다. 업무요건을 확실히 반영하려면 10.2와 같이 관리
  • 확장성은 좋아진다.
    • 팀은 반드시 리그에 종속돼 있다는 요건이 팀이 소속된 리그는 변경될 수 있다는 요건으로 바뀔때, 그림10.3 모델에서는 아무런 변화를 주지 않아도 요건은 만족할 수 있다.
그림 10.3
  • 그림10.4 릴레이션은 존재 종속 관계가 아니다. 상위엔터티의 주식별자를 하위엔터티의 주식별자로 상속하지 않는다.
  • 팀 엔터티에 관계속성인 리그번호 값이 Null허용하므로 팀은 리그가 없어도 별도로 존재 할 수 있다.
그림 10.4
  • 사원 엔터티에서 부서코드 속성이 삭제되더라도 사원 데이터는 존재할 수 있다.
그림 10.5


관계선의 의미
  • 상위 엔터티의 주 식별자와 하위엔터티의 속성을 연결시켜 주는 것이 관계선
  • 데이터를 입력할 때 입력 순서를 의미
  • 관계선 은 데이터를 조회할 때 조인하는 경로를 의미 (관계선이 표현돼 있으면SQL을효율적으로작성하는데 많은도움을준다)
  • 업무의 흐름을 파악하는데 도움을 준다 (업무의 흐름을 보게하려고 관계선 남발 지양)
  • 관계선을 표현하는 근본적인 목적: 관계선을 보고 업무 규칙을 알 수 있다.


관계의 핵심
  • 관리하고자 하는지에 대한 정확한 판단이 선행
  • 관리가 필요하면 바로 상위 엔터티와의 관계(1촌관계)를 파악하는 것이 가장 중요.
  • 관계는 결국 속성이나 엔터티로 보면 된다, 참조 무결성(RI)차원에서 관계가 결정돼야 한다.