관리 메뉴

JIE0025

[데이터 모델링] 모델링 예제 (ER다이어그램,관계 데이터 모델) 본문

백엔드/데이터베이스

[데이터 모델링] 모델링 예제 (ER다이어그램,관계 데이터 모델)

Kangjieun11 2021. 6. 6. 21:05
728x90

 

요구사항을 반영한 ER다이어그램을 만들고, 관계 데이터 모델도 써보겠다.

 

 

이용하는 DB는 마당대학이지만,

ER 다이어그램과 관계 데이터 모델을 생성하는 것이기 떄문에

데이터베이스는 필요하지 않다.

 

마당대학 요구사항

① 교수(Professor)는 아이디(ssn), 이름(name), 나이(age), 직위(rank), 연구 분야(speciality)를 가진다.
② 학과(Department)에는 학과번호(dno), 학과이름(dname), 학과사무실(office)이있다.
③ 대학원생(Graduate)은 아이디(ssn), 이름(name), 나이(age), 학위과정(deg_prog, 석사/박사)을 가진다.
④ 과제(Project)는 과제번호(pid), 지원기관(sponsor), 개시일(start_date), 종료일(end_date), 예산액 (budget)이있다.
⑤ 학과마다그 학과를 운영(run)하는 교수(학과장이라고 한다)가 한명씩 있다.
⑥ 한 교수가 여러학과에서 근무(work-dept)할 수 있는데, 이때각 학과별로 참여백분율(pct_time)이 기록된다.
⑦ 대학원생에게는 학위 과정을 밟을 전공학과(major)가하나씩 있다.
⑧ 대학원생에게는 어떤과목을 들으면좋을지 조언(advisor)해주는 선임대학원생(학생조언자라고 한다)이있다.
⑨ 과제는 한 교수(연구책임자라고 한다)에의해 관리(manage)된다.
⑩ 과제는 한 사람이상의 교수(공동연구책임자라고 한다)에의해 수행(work-in)된다.
⑪ 한 과제는 한 명이상의 대학원생(연구조교라고 한다)에의해 수행(work-prog)된다.

 

먼저 요구사항을 쭉 읽어보자.

 

1~4번은 개체와 속성을 연결해주는 부분이다.

5~11번은 관계로 개체들을 연결해주는 부분이다.

 

 

ER다이어그램 만들기

1~4번 : 개체와 속성 연결

 

개체에 속성을 연결하기만 하면 된다.

아이디나 번호 등은 개체를 구분하는 KEY값이 되므로 밑줄을 그어준다.

 

① 교수(Professor)는 아이디(ssn), 이름(name), 나이(age), 직위(rank), 연구 분야(speciality)를 가진다.

 

 

② 학과(Department)에는 학과번호(dno), 학과이름(dname), 학과사무실(office)이있다.

 


③ 대학원생(Graduate)은 아이디(ssn), 이름(name), 나이(age), 학위과정(deg_prog, 석사/박사)을 가진다.


④ 과제(Project)는 과제번호(pid), 지원기관(sponsor), 개시일(start_date), 종료일(end_date), 예산액 (budget)이있다.

 

 

 

 

5~11번 : 관계로 개체들을 연결

 

< 개체 목록 > 

교수(Professor)  학과(Department)  대학원생(Graduate)  과제(Project)

 

 

⑤ 학과마다그 학과를 운영(run)하는 교수(학과장이라고 한다)가 한명씩 있다.

 

해석 : 학과에는 학과장이 한명 있을수 밖에 없으므로 1:1관계이다.

 


⑥ 한 교수가 여러학과에서 근무(work-dept)할 수 있는데, 이때각 학과별로 참여백분율(pct_time)이 기록된다.

 

해석 : 교수가 여러학과에서 근무할 수 있다.

학과 한개에는 여러명의 교수가 존재할 수 있다.

 

즉 교수:학과 는 N대 M관계이다.

 

참여백분율 개체가 아니므로 속성으로서 연결한다.

 

⑦ 대학원생에게는 학위 과정을 밟을 전공학과(major)가 하나씩 있다.  

 

해석 :  학과(Department) 는 여러명의 대학원생(Graduate)을 포함할 수 있으므로

학과 : 대학원생은 N:1의 관계이다.

 

 

 


⑧ 대학원생에게는 어떤과목을 들으면좋을지 조언(advisor)해주는 선임대학원생(학생조언자라고 한다)이있다.

 

해석 : 대학원생이 대학원생에게 조언해주는 것이므로 1진관계 또는 순환적 관계이다.

 


⑨ 과제는 한 교수(연구책임자라고 한다)에의해 관리(manage)된다.

 

해석 : 과제 한개당 교수 한명이 관리한다.

교수는 여러개의 과제를 관리해줄 수 있다.

 

즉 과제 : 교수는 N : 1관계이다.


⑩ 과제는 한 사람 이상의 교수(공동연구책임자라고 한다)에의해 수행(work-in)된다.

 

해석 : 여러명의 교수가 1개의 과제에 참여할 수 있다.

교수는 과제를 여러개 수행할 수 있다.

 

즉 과제와 교수는 N:M관계이다. 


⑪ 한 과제는 한 명이상의 대학원생(연구조교라고 한다)에의해 수행(work-prog)된다.

 

해석 : 과제 1개는 N명의 대학원생이 수행한다.

대학원생은 여러개의 과제를 수행할 수 있다.

 

즉 과제와 대학원생은 N:M관계이다. 

 

 

 

 

 

 

최종 ER 다이어그램 

 

요구사항에 맞는 정확한 다이어그램이 생성된 것을 확인할 수 있다.

 

 

 


ER다이어그램을 바탕으로 관계 데이터 모델을 만들어보자.



관계 데이터 모델

 

외래키로 참조하는 것도 반영해야한다.

 

외래키 반영을 위해 다시 관계 정보를 보자

⑤ 학과마다그 학과를 운영(run)하는 교수(학과장이라고 한다)가 한명씩 있다.
⑥ 한 교수가 여러학과에서 근무(work-dept)할 수 있는데, 이때각 학과별로 참여백분율(pct_time)이 기록된다.
⑦ 대학원생에게는 학위 과정을 밟을 전공학과(major)가하나씩 있다.
⑧ 대학원생에게는 어떤과목을 들으면좋을지 조언(advisor)해주는 선임대학원생(학생조언자라고 한다)이있다.
⑨ 과제는 한 교수(연구책임자라고 한다)에의해 관리(manage)된다.
⑩ 과제는 한 사람이상의 교수(공동연구책임자라고 한다)에의해 수행(work-in)된다.
⑪ 한 과제는 한 명이상의 대학원생(연구조교라고 한다)에의해 수행(work-prog)된다.

 


 

(1:1), (1:N)의 관계를 외래키로 표현한다.

 

(1:1), (1:N)의 관계는 다음과 같다.

  • Proffessor - run - Department
  • Department - major - Graduate
  • Proffessor - manage - Project
  • Graduate - advisor - Graduate 

 

개체

Professor (ssn, name, age, rank. speciallity)

Department (dno, dname, office, run_prof_ssn)
// run_prof_ssn : Department(학과)를 운영하는 proffesor(교수님)의 고유번호 ssn

Graduate (ssn, name, age, deg_prog, dno , adv_grad_ssn )
// dno : Graduate(대학원생)이 major(전공) 삼고 있는 Department(학과)의 고유번호 dno
// adv_grad_ssn : advise(조언) 해주는 Graduate(대학원생)의 고유번호 ssn
 
Project (pid, sponsor, start_date, end_date, budget, manage_prof_ssn)
// manage_prof_ssn : Project(과제)를 관리하는 Professor(교수님)의 고유번호 ssn

 

 


 

(M:N) 일 경우 개체가 아닌 관계로 묶어준다.

 

 

(M:N) 관계는 다음과 같다.

  • Proffessor - work_dept - Department
  • Project - work_in - Professor 
  • Project - work_prog - Graduate

 

 

(M:N) 일 경우, 교차 테이블을 생성해야한다.

 

관계

M:N으로 연결된 각 테이블의 PK를 외래키로 참조, 추가 속성을 추가해주면 끝난다.

 

work-dept(professor_ssn, dno, pct_time)

work-in(professor_ssn, pid)

work_prog(graduate_ssn, pid)