가자미의 개발이야기

[데이터베이스] ER모델을 관계 스키마로 전환하기 본문

Computer Science/데이터베이스

[데이터베이스] ER모델을 관계 스키마로 전환하기

가자미 2021. 5. 29. 14:13

entity set, relation set => relation schema로 표현 가능

 

강한 entity set => 그냥 있는 그대로 스키마 생성

약한 entity set => 식별해주는 entity(identity entity)도 포함해서 기본키로 스키마 생성

 

composite attribute(복합 속성, 계층적)은 가장 하위 항목들만 저장

derived attribute(추론 가능한 속성, 나이와 생년월일)은 둘 중 하나만 저장

multi valued attribute(여러개의 값을 가질 수 있는 속성. 핸드폰 번호(여러개를 가진 사람 존재할 경우))은 새로운 스키마 생성. ID,phone_number로 스키마 생성하고 각 아이디가 가진 번호를 하나씩 모두 나열

이럴 경우

name은 first name, middle initial, last name만 남기고

adress는 city, state, zip은 남기고 street는 street number, street name, apt number만 남긴다.

phone number는 따로 스키마를 만들어 준다. ( inst_phone(ID, phone number)이런식으로 원래 테이블의 기본키와 함께 스키마를 만든다.)
date of birth와 age는 서로 유추가 되는 속성이므로 birth of date만 남긴다.

 

결과적으로

instructor(ID, first_name, middle_initial, last_name, street_number, street_name, apt_name, city, state, zip,date_of_birth)

 

관계는 릴레이션으로 표현.

 

many to many는 관계를 구분해주는 속성(기본키)을 스키마로 생성

이런 경우, advisor(i_ID, s_ID)로 스키마 추가 생성.

 

many to one이나 one to many는 스키마를 만들기보다는
many 사이드에 one 사이드의 기본키를 속성으로 추가해준다.

이런 경우 inst_dept나 stud_dept를 스키마로 만들지 말고,
instructor(ID, name, salary, dept_name)과 student(ID, name, tot_cred, dept_name)으로 추가한다.

many사이드가 partial(모두가 관계를 가지지 않아도 됨)인 상황이면, 추가된 속성이 null값을 가질 수 있다.

 

one to one의 경우, 양쪽 모두 many 취급을 해줄 수 있다.

즉 양 쪽에 기본키를 추가 해줄 수 있다.

 

약한 엔티티 집합과 강한 엔티티 집합 관계는 스키마로 만들어줄 필요가 없다.

약한 엔티티 집합에 이미 관계 릴레이션이 포함했을법한 내용을 다 담고 있다.