coding base/DataBase

[DB] 관계

ddo04 2024. 4. 15. 01:24
728x90

관계(Relationship)의 정의

  • 두 엔티티 사이의 관련성을 나타내는 용어
  • 현실세계에서는 여러 사물들이 상호 관련성을 가지고 움직이기 때문에 이를 모델링하면 엔티티와 엔티티 사이의 관계로 표현
  • ERD에서는 두 엔티티가 관계있다는 사실을 나타내기 위해 두 엔티티를 선으로 연결하고 학생 입장에서 수강과목이 어떤 관계에 잇는지, 과목 입장에서 학생이 어떤 관계에 있는지를 연결선 위, 아래에 표현해준다

  • 실무적인 관점에서 보았을 때 두 엔티티가 관계가 있다는 의미는 상호 공유하는 속성이 있다는 의미
  • 누가 어떤 과목을 수강하는지를 알기 위해서는 데이터가 저장되어야 함

  • 데이터가 저장되어 있다면 우리는 어떤 학생이 어떤 과목을 수강하는지 쉽게 알 수 있으며, 이것이 가능한 이유는 두 테이블이 학번이라는 공유 속성을 가지고 있다
  • 두 테이블의 공유 속성은 두 테이블을 연결하는 고리 역할을 함
  • 두 테이블이 공유 속성을 가지고 있을 때 두 테이블은 '관계가 있다'라고 말함
  • ERD상에서 두 엔티티가 공유 속성을 가지고 있을 때 두 엔티티는 '관계가 있다'라고 말함
  • 두 엔티티가 관계가 있다는 의미는 상호 공유하는 속성이 있다는 의미임을 기억하자
  1. 상호 관계가 있는 두 엔티티에서 공유하는 속성의 이름이 반드시 같을 필요는 없음
  2. 속성의 이름은 달라도 실제 저장되는 값이 동일한 성격이고 동일한 데이터 타입을 가지면 공유하는 속성으로 볼 수 있음

 

관계의 카디낼러티

  • 두 엔티티 간의 관계를 보다 구체적으로 표현하는 방법의 하나로 각 엔티티에 속해 있는 인스턴스들 간에 수직으로 어떤 관계에 있는지를 나타내는 개념
  • 엔티티는 나중에 테이블이 되고. 엔티티의 인스턴스는 튜플로 전환된다고 했으므로 인스턴스 간에 관계는 튜플들 간의  관계로 바꾸어 설명 가능
  • 일반적으로 한 명의 학생은 여러 과목을 수강할 것이므로 학생 1명에 대한 정보는 수강과목에 여러 번 나타날 것
  • 학생 1명이 N개의 수강과목과 관련이 있을 때 ERD에서는 그림과 같이 표현

  • 튜플을 하나 선택하여 그것과 관련이 있는 학생 튜플을 찾아보면 반드시 하나의 학생 튜플과만 관련이 있음
  • 수강과목 1개의 정보가 학생 1명과 관계를 가질 때 ERD에서 이와 같이 표현

  • 학생 쪽에서 수강과목과의 카디낼러티와 수강과목 쪽에서 학생과의 카디낼러티를 한꺼번에 표현하면 다음과 같음
  • 학생 엔티티와 수강과목 엔티티는 1:N의 관계에 있음
  • 두 엔티티 간의 카디낼러티는 1:1, 1:N, M:N 중 하나가 됨
  • 카디낼러티가 1:1인 경우는 두 엔티티를 하나로 합쳐도 되는데 어던 이유로 해서 일부로 두 개로 나누어 놓은 경우에 해당

  • 한 명의 학생은 취미가 두 개 이상일 수 있으므로 두 엔티티 사이의 카디낼러티는 1:N

  • 두 엔티티가 M:N의 관계에 있는 경우에는 두 엔티티가 관련이 있다는 정보를 두 엔티티만으로 표현할 수가 없고, 두 엔티티의 관련성을 표현하기 위해서는 중간에 또 다른 엔티티를 필요로 함
  • 데이터 모델링에서 M:N 관계는 아직 완성되지 않은 모델로 간주되어 M:N 관계를 1:N 관계로 전화시켜주는 작업을 필요로 함

 

관계의 참여도

  • 두 엔티티 사이의 관계는 카디낼러티의 관점에서도 표현할 수 있겠지만 참여도의 관점에서도 표현 가능
  • 참여도에는 필수, 선택 두 가지가 있음
  1. 필수 관계 - 어느 한 쪽이 존재하면 다른 쪽도 반드시 존재해야 하는 관계
  2. 선택 관계 - 엔티티의 인스턴스와 대응되는 인스턴스가 상대방 엔티티에 있을 수도 있고 없을 수도 있을 때

 

부모 엔티티와 자식 엔티티

  • 상호 관계가 있는 두 엔티티는 부모-자식의 관계에 있는 경우 많음
  • 두 엔티티의 부모, 자식 여부는 어느 쪽에 정보가 먼저 생성이 되는가에 따라 결정
  • 두 엔티티가 부모-자식의 관계가 있다면 일반적으로 부모 엔티티와 자식 엔티티의 카디낼러티는 1:N이고 참여도는 부모 쪽이 필수, 자식 쪽이 선택으로 나타남
  • 공식처럼 지켜지므로 기억해 두면 ERD를 작성할 때 도움이 됨

 

사용한 책 : 데이터베이스 설계 및 구축