Transcript 12장

12장 금오공대 데이터베이스 설계 사례
데이터베이스 설계의 단계
 데이터 요구사항 수집과 분석
 개념적 데이터베이스 설계(ERD 작성)
 엔티티와 속성의 식별
 관계와 속성의 식별
 논리적 데이터베이스 설계




엔티티와 단순속성 변환
복합속성 변환
다중값 속성 변환
관계변환
 물리적 데이터베이스 설계
데이터 요구사항 수집과 분석
 요구사항 수집 결과의 예
 금오공대에는 여러 개의 전공이 있다. 각 전공에서는 번호와 이름을 저장한
다.
 각 전공은 여러 명의 교수들이 소속된다. 각 교수에 대해서 번호와 이름을
저장한다.
 각 전공에서는 여러 과목이 개설된다. 과목에는 번호, 이름, 학점이 저장된
다.
 각 과목은 학기별로 개설될 수 있다. 학기는 연도와 학기로 구성된다.
 학기는 1학기, 2학기, 여름 계절학기, 겨울 계절학기가 있다.
 각 교수는 여러 과목을 강의할 수 있다.
 각 전공에서는 여러 명의 학생들이 소속된다. 각 학생에 대해서는 번호, 이
름, 주소, 학년, 취미를 저장한다.
 각 학생은 여러 과목을 수강할 수 있다. 각 수강에 대해서 중간성적과 기말
성적, 성적을 저장한다.
엔티티와 속성의 식별
 명사를 주목하여 엔티티를 식별
 특정 업무가 진행되는 과정을 나타내는 단어는 제거
 요구사항이 완벽하지 않은 것이 정상이다.
 다르게 사용하는 용어를 통일
 요구사항에 없는 엔티티라도 필요하면 추가
 설계과정에서 요구사항을 개선
 요령. 복잡하면 엔티티 단순하면 속성
요구사항









금오공대에는 여러 개의 전공이 있다. 각 전공에서는 번호와 이름을
저장한다.
각 전공은 여러 명의 교수들이 소속된다. 각 교수에 대해서 번호와 이
름을 저장한다.
각 전공에서는 여러 과목이 개설된다. 과목에는 번호, 이름, 학점이
저장된다.
각 과목은 각 학기에 개설된다.
학기는 연도와 학기로 구성된다.
학기는 1학기, 2학기, 여름 계절학기, 겨울 계절학기가 있다.
각 교수는 여러 과목을 강의할 수 있다.
각 전공에서는 여러 명의 학생들이 소속된다. 각 학생에 대해서는 번
호, 이름, 주소, 학년, 취미를 저장한다.
각 학생은 여러 과목을 수강할 수 있다. 각 수강에 대해서 중간성적과
기말 성적, 성적을 저장한다.
개념적 모델링
 트랜잭션은 제외한다.
 데이터베이스에 저장될 내용만 식별한다.
 예.




사용자가 도서를 검색한다.
각 교수는 여러 과목을 강의한다.
관리자가 사용자를 관리한다.
커플매니저가 회원을 관리한다.
엔티티와 속성의 도출







전공(번호, 이름)
교수(번호, 이름)
과목(번호,이름,학점)
학기(연도,구분)
학생(번호,이름,주소,학년,취미)
수강(중간성적, 기말성적,성적)
개설강좌(연도,학기)
개체와 속성에 대한 ERD 작성
개설강좌
연도
과목
교수
전공
번호
학기
이름
번호
이름
번호
취미
이름
학점
수강
학생
번호
이름
주소
학년
중간
기말
성적
관계의 식별
 속성과 관계의 차이점은?
 교수는 소속전공의 속성을 가지고 있다.
 교수는 전화번호의 속성을 가지고 있다.
 복잡한 속성은 관계로, 단순한 속성은 속성으로
관계의 식별
 동사를 주목하여 엔티티들을 연결하는 관계를 식별
1.
2.
3.
4.
5.
6.
7.
8.
금오공대에는 여러 개의 전공이 있다. 각 전공에서는 번호와 이름을 저
장한다.
각 전공은 여러 명의 교수들이 소속된다. 각 교수에 대해서 번호와 이름
을 저장한다.
각 전공에서는 여러 과목이 개설된다. 과목에는 번호, 이름, 학점이 저장
된다.
각 과목은 학기별로 개설될 수 있다. 학기는 연도와 학기로 구성된다.
학기는 1학기, 2학기, 여름 계절학기, 겨울 계절학기가 있다.
각 교수는 여러 과목을 강의할 수 있다.
각 전공에서는 여러 명의 학생들이 소속된다. 각 학생에 대해서는 번호,
이름, 주소, 학년, 취미를 저장한다.
각 학생은 여러 과목을 수강할 수 있다. 각 수강에 대해서 중간성적과 기
말 성적, 성적을 저장한다.
시작-관계의 식별
개설강좌
연도
과목
교수
전공
번호
학기
이름
번호
이름
번호
취미
이름
학점
수강
학생
번호
이름
주소
학년
중간
기말
성적
결과-관계의 식별
학생
성적
기말
취미
번호
!수강
이름
주소
학년
중간
!강의
강좌
개설
학기
연도
교수
!소속
과목
소속
전공
번호
번호
이름
학점
번호
이름
이름
소속
시작-카디낼리티의 추가
학생
성적
기말
취미
번호
!수강
이름
주소
학년
중간
!강의
강좌
개설
학기
연도
교수
!소속
과목
소속
전공
번호
번호
이름
학점
번호
이름
이름
소속
0..n
결과-카디낼리티의 추가
0..n
학생
성적
취미
기말
번호
!수강
이름
주소
학년
중간
0..n
0..n
개설
0..n
강좌
!강의
학기
연도
1
n
1
과목
0..n
소속
1
1
!소속
전공
번호
번호
이름
학점
교수
이름
이름
번호
1
소속
논리적 데이터모델링
 엔티티의 단순 변환





과목(번호,이름,학점)
전공(번호,이름)
교수(번호,이름)
학생(번호,이름,주소,학년,취미)
강좌(연도,학기)
 관계의 변환
 1:n 인 경우
 n:m 인 경우
논리적 데이터모델링
 엔티티의 단순 변환





과목(번호,이름,학점)
전공(번호,이름)
교수(번호,이름)
학생(번호,이름,주소,학년,취미)
강좌(연도,학기)
 관계의 변환






과목(번호,이름,학점, 개설전공)
전공(번호,이름)
교수(번호,이름,소속전공)
학생(번호,이름,주소,학년,취미,소속전공)
강좌(번호,연도,학기,강의교수,과목번호,분반번호)
수강(성적,기말,중간,강좌,학생)
논리적 데이터모델링
 주키의 결정






과목(번호,이름,학점, 개설전공)
전공(번호,이름)
교수(번호,이름,소속전공)
학생(번호,이름,주소,학년,취미,소속전공)
강좌(번호,연도,학기,강의교수,과목번호,분반번호)
수강(성적,기말,중간,강좌,학생)
데이터모델링 방법
 단순 엔티티 변환
 ERD에서 직사각형으로 표시된 하나의 엔티티는 하나의 테이블로
변환
 그 엔티티에 소속되어 타원으로 표시된 단순 속성은 그 테이블에
소속된 열로 변환
데이터모델링 방법
 복합속성 변환
 하나의 엔티티에 소속된 복합 속성은 그 복합 속성을 구성하는 단
순 속성들만 해당 테이블의 열로 변환
 예: 주소
데이터모델링 방법
 (1:n) 관계의 변환
 ERD에서 일측 엔티티에 대응하는 테이블의 기본 키를 다측 엔티
티에 대응하는 테이블의 속성으로 복사한 다음에 이 속성을 외래
키로 지정
 복사된 열에 대해, 이름 변경 가능, 데이터 형식은 변경 불가
데이터모델링 방법
 (n:M) 관계의 변환
 ERD상의 관계를 교차 엔티티로 생성한 후, 생성된 교차 엔티티를
테이블로 변환
 참여 엔티티들의 식별자들을 교차 엔티티에 대응하는 테이블에 포
함시키고 외래 키로 지정
데이터모델링 방법
 다중값 속성 변환
 예, 취미, 동아리
데이터모델링 방법
 Is-a 관계 설계
 학생=> 대학원생, 학부생
 교수=> 일반교수, 보직교수