본문 바로가기
컴퓨터과학/데이터베이스

[데이터베이스] Entity-Relationship Model - 모델링, ERD, 관계형 스키마

by 윤호 2021. 12. 14.

Modeling

데이터베이스는 entity와 그 관계로 모델링 될 수 있다. -> Entity-Relationship(E-R) Model

attribute type

simple / composite : 속성을 subpart로 나눌 수 있고 없음

  • name -> {first_name, middle_name, lasst_name}

single-valued / multi-valued : 여러 개 값을 가지는 속성

  • phone_number -> 한 사람당 2 개 이상의 전화번호를 가질 수 있음

derived attributes : 다른 속성으로부터 유추될 수 있는 속성

  • age로부터 date_of_birth를 유추할 수 있다.

composite, multi-valued, derived 속성은 뒤에서 스키마 표현 방식이 조금 다르다.

Constrains

Mapping Cardinality Constraints

  • one to one
  • one to many / many to one
  • many to many

Participation Constraints

  • Total participation : 모든 엔티티가 최소 하나의 관계에 참여하는 집합
  • Partial participation : 어떠한 관계도 참여하지 않는 엔티티가 있는 집합

E-R Diagrams

  • 사각형 : 엔티티 셋을 의미
  • 다이아몬드 : 관계 셋을 의미
  • 속성은 사각형 안에 리스트로 정의됨
  • 밑줄 : primary key를 의미
  • 실선 : 엔티티 셋과 관계 셋을 연결
  • 점선 : 관계 셋의 속성과 관계를 연결

Mapping Cardinality

실선과 화살표로 1:N (one to many) 관계를 표현한다. 다른 관계들(1:1, N:1, N:N)도 마찬가지로 표현할 수 있다.

Participation Constrains

선이 하나이면 partial 참여, 선이 두 개면 total 참여를 의미한다.

 

선 표현 대신 cardinality limits 표현으로 participation constrain을 의미할 수도 있음

0..*에서 최소 0번이니까 모든 엔티티가 참여하는 것은 아님 -> partial

1..1에서 모든 엔티티가 한 번씩 참여하니까 -> total

1..*은 최소 1번에서 N번 참여하는 것이므로 -> total

Roles

엔티티 셋과 관계 셋을 합쳐서 표현하는 경우도 있다. prereq는 course의 prerequired 과목을 알려줌.

Weak Entity Sets

Weak Entity Set : primary key가 없는 엔티티 셋을 의미한다.

Strong Entity Set : primayr key를 갖는 엔티티 셋.

weak 엔티티 셋은 다른 strong 엔티티 셋에 의존한다. (그 strong 엔티티 셋을 identifying entity set이라 함)

이 두 엔티티 셋 간의 관계를 identifying relationship 이라하고 double diamond로 표현한다.

discriminator(partial key) : weak 엔티티에서 점선 밑줄 그어진 속성. 나중에 section의 primary key를 만들 때 course_id와 함께 primary key를 구성하게 됨.

Reduction to Relational Schemas - ERD를 관계형 스키마로 만들기

E-R database schema -> relation schema

엔티티 셋과 관계 셋을 relation schemas로 표현할 수 있다.

1. Strong entity Sets

Stong Entity Set은 동일 속성을 가진 스키마로 똑같이 변환

2. Weak Entity Sets

identigying strong 엔티티의 PK와 weak 엔티티의 partial key를 primary key로 스키마 구성

couse_id는 section에서 FK가 됨.

3. Complex Attribues - Composite, multivalued, derived

composite attribute는 분리된 속성으로 정의한다.

엔티티 셋이 다음과 같으면 관계형 스키마는 instructor(ID, first_name, middle_initial, last_name)으로 정의

multivalued attribute는 분리된 스키마로 정의하고 foreign key로 연결한다.

  • special case : 한 엔티티 집합이 PK와 multivalued 속성만 갖는 경우엔 분리된 스키마를 정의하지 않고 한 번에 정의

derived attribute는 따로 정의할 필요 없다.

4. Relationship Set

관계 셋의 스키마는 연결된 두 엔티티의 PK를 속성으로 정의된다. 정의된 스키마에서 PK를 뭘로 사용할 지는 집합 관계마다 다르다.

  • one-to-one 관계 : 두 엔티티의 PK 중 아무거나 하나만 PK로 사용
  • many-to-many 관계 : 두 엔티티의 PK를 모두 PK로 사용함.
  • one-to-many / many-to-one 관계 : many쪽의 PK를 PK로 사용함

스키마 최적화 - Relationshp set 생략

  1. 중복 되는 속성을 갖는 스키마 제거 - 관계형 셋의 스키마의 속성이 엔티티 셋의 스키마 속성과 같은 경우
  2. many-to-one이면서 many쪽의 엔티티가 total 참여일 경우 제거. many 쪽의 스키마에 필요한 속성을 추가

  • one 쪽에 추가할 경우 PK가 중복됨
  • total 조건을 만족 못하는 경우 FK 속성에 null이들어가는 상황 발생 (관계에 참여 안하는 엔티티가 있으니까) -> FK-PK 조건 만족 X

reference : 상명대학교 김종욱 교수님

댓글