본문 바로가기

과목/데이터 베이스

데이터 베이스 설계와 ER모델

나스리디노프 아지즈 교수님이 DB 명강의 중 섬세하게 풀어주신 문제이다.


아래의 ER 다이어그램을 관계 DB 스키마로 변환하라. 각 릴레이션이 생성되는 과정을 설명하라.


ER 다이어그램을 DB 스키마로 변환하는 단계에는 7가지가 있다.


1. 정규 엔티티 타입과 단일 값 애트리뷰트

2. 약한 엔티티 타입과 단일 값 애트리뷰트

3. 2진 1:1 관계 타입

4. 정규 2진 1:N 관계 타입

5. 2진 M:N 관계 타입

6. 3진 이상의 관계 타입

7. 다치 애트리뷰트


일단 저 ER 다이어그램에 있는 네모, 마름모, 타원 등이 뭔지 알아야한다.



가장 먼저 해야 할 것은 엔티티 타입을 분류하는 것이다.

ER 다이어그램을 보면

Department

Project

Employee

Office

Phone

이 있다.


그리고 각 엔티티 타입에 붙어있는 애트리뷰트도 발견할 수 있다.


이제 1단계를 위한 요소들이 갖춰졌다.


1. 정규 엔티티 타입과 단일 값 애트리뷰트

# 네모와 동그라미를 찾는다.

Department(Dept-no, Budget) # 밑줄은 주키(Primary Key)이다.

Project(Project-No, Budget)

Employee(Emp-No, Salary, Age)

Office(Office-No)

Phone(Phone-No)


2. 약한 엔티티 타입과 단일 값 애트리뷰트

#2중 네모를 찾는다. 약한 엔티티는 독립적으로 존재하지 못하므로 상위의 정규 엔티티를 찾아 그곳의 주키(Emp-No)와 약한 엔티티의 부분키 Name으로 주키를 만든다. 결국 Employee의 주키는 Dependent의 외래키가 되어 Dependent의 주키는 Name과 Emp-No로 이루어진다.

Dependent(Name, Age, Emp-No)


3. 2진 1:1 관계 타입

#정규 엔티티가 2개이면서 1:1 관계인 것을 찾는다. 1:1 관계인 것은 Department와 Employee이다.

#Department에 Employee를 갖다 붙이는 것으로 생각한다. 그러므로 Employee의 주키(Emp-No)를 Department의 외래키로 택한다.

Department(Dept-No, Budget, Emp-No)


4. 정규 2진 1:N 관계 타입

#1측의 엔티티의 주키를 N측 엔티티의 외래키로 설정한다.

Project(Project-No, Budget, Dept-No)

Employee(Emp-No, Salary, Age, Dept-No)

Office(Office-No, Dept-No)

Phone(Phone-No, Office-No)


5. 2진 M:N 관계 타입

# M:N 관계 타입을 만들어야한다.

# 애트리뷰트는 정규 엔티티의 주키가 외래키가 된다.

Works-On(Project-No, Emp-No)


6. 3진 이상의 관계 타입

#3개 이상의 정규 엔티티로 관계된 것은 없음.


7. 다치 애트리뷰트

#2중 타원을 찾는다.

#기본 키는 다치 애트리뷰트와 외래키의 조합이다.

Area(Office-No, Area)



ER의 개념과 DB 개념들의 대응 관계는 아래와 같다.


ER 다이어 그램 - DB

엔티티 - 릴레이션

애트리뷰트 - 애트리뷰트

관계 - 외래 키