정리 노트

ERD(E-R Diagram) 본문

개념 정리/데이터베이스

ERD(E-R Diagram)

꿈만 꾸는 학부생 2023. 7. 20. 17:09
728x90

이 포스트는 국민대학교 소프트웨어학부 '데이터베이스' 강의를 듣고 요약하는 포스트입니다. 원하시는 정보가 없을 수도 있습니다. 이 점 유의 바랍니다. 오류 지적은 매우 환영합니다!


ERD

E-R 모델을 그림으로 표현하는 방법입니다. 규칙은 아래의 그림과 같습니다.

source: https://cs.uwaterloo.ca/~tozsu/courses/CS338/lectures/10%20ER%20Model.pdf

ERD의 특징

ERD를 통해 개체 간의 관계를 여러 형태로 나타낼 수 있습니다.

존재 종속(existential dependency) 관계

한 개체의 존재(b)가 다른 개체의 존재(a)에 좌우되는 관계를 존재 종속 관계라 부릅니다. 이런 상황에서 b는 a에 종속된다고 표현합니다.

이때 종속되는 개체 b는 종속 개체라 칭하고 종속 개체가 속한 개체 타입을 약한 개체 타입(Weak Entity Type)이라 한다. 종속 개체는 key 속성이 없고, 부분 키(partial key)가 존재합니다. 부분 키는 하나의 개체에 종속되는 종속 개체 인스턴스들을 구분하는 key 속성이지만, 이 것만으로는 서로 구분할 수 없습니다. 주개체의 key를 같이 사용해야 종속 개체 인스턴스들을 구분할 수 있습니다. 그리고 약한 개체 타입은 항상 존재 종속 관계에서 전체 참여한다.

a는 주개체라 부르고 주개체가 속한 개체 타입을 정규 개체 타입이라 한다. 이 타입에는 반드시 key 속성이 존재합니다. 존재 종속 관계에서 주개체 a를 삭제하면 종속 개체인 b도 같이 삭제됩니다.

존재 종속 관계 예시

위의 예시 그림을 보면 '팀' 개체가 주개체, '선수' 개체가 종속 개체인 것을 알 수 있습니다. 선수 개체는 '소속' 관계에 전체 참여하고 있음을 볼 수 있습니다. 만약 팀 개체의 인스턴스들 중 하나가 삭제되면 이와 관련된 선수 개체 인스턴스들은 모두 삭제됩니다.

순환적(recursive) 관계

하나의 개체 타입이 관계에 2번 참여하는 관계를 순환적 관계라 부릅니다. 이런 관계에서는 각 링크에 역할 이름을 부여해야 합니다.

source: https://goodmilktea.tistory.com/55#google_vignette

위의 그림을 보면 '학생' 개체가 '멘토링' 관계에 2번 참여하고 있는 것을 볼 수 있습니다. 멘토링 관계에 대하 한 번은 '멘토' 역할, 다른 한 번은 '멘티' 역할로 참여하고 있음을 링크에 작성했습니다.

다원(N-ary) 관계

2개 이상의 개체 타입이 하나의 관계에 참여하는 관계를 다원 관계라 부릅니다. 존재 종속 관계 예시 그림의 경우는 이진 관계로 볼 수 있습니다.

다중(Multiple) 관계

두 개체 타입 사이에 2개 이상의 관계가 존재하는 관계를 다중 관계라 부릅니다.

source: https://slidesplayer.org/slide/15224404/, 44페이지

위의 그림을 보면 'EMPLOYEE' 개체와 'PROJECT' 개체 사이에 'MANAGES' 관계와 'WORKS_FOR' 관계가 있습니다. 이와 같이 두 개체 사이에 2개 이상의 관계가 생길 수 있습니다.

Is A 관계

상위 개체 타입(supertype)과 하위 개체 타입(subtype) 간의 관계를 표현하는 관계를 Is A 관계라 부릅니다.

이 관계에는 2가지의 주요 개념이 있습니다.

  • 일반화(generalization): 하위 개체 타입에서 상위 개체 타입을 유도, 상위 개체 타입의 속성은 하위 개체 타입도 포함
  • 세분화(specialization): 상위 개체 타입에서 하위 개체 타입을 유도, 세분화를 일반화로 표현 가능

아래의 그림을 봅시다.

일반화와 세분화 예시 그림

일반화의 경우, '직원' 개체의 속성들은 '신입' 개체와 '경력' 개체도 가지고 있습니다. 그리고 관계에 대해 전체 참여를 하고 있기 때문에 직원에 대한 구분은 오직 신입과 경력만이 존재합니다.

세분화의 경우, 관계에 대해 부분 참여를 하고 있기 때문에 직원의 구분이 신입이나 경력이 아닐 수도 있습니다.(인턴일 수도 있겠죠?)

728x90

'개념 정리 > 데이터베이스' 카테고리의 다른 글

관계 데이터 구조  (0) 2023.08.10
논리적 데이터 모델링  (0) 2023.07.24
데이터베이스의 개념적 설계  (0) 2023.07.20
DBS(Database System)  (0) 2023.07.04
DB와 DBMS의 개념  (0) 2023.06.27