나스리디노프 아지즈 교수님이 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
엔티티 - 릴레이션
애트리뷰트 - 애트리뷰트
관계 - 외래 키
'과목 > 데이터 베이스' 카테고리의 다른 글
Update multiple rows in one query (0) | 2018.05.28 |
---|---|
Using PHP and MySQL on Google Map 구글 지도에서 php mysql 사용 (0) | 2017.12.15 |
Database ER diagram 데이터베이스 ER 다이어그램 (0) | 2017.11.12 |
데이터 베이스 배움터 4장 select 예제들 (0) | 2017.10.31 |
관계 대수와 SQL 연습 문제 (0) | 2017.10.27 |