* 데이터베이스 설계
:여러 필드로 구성된 테이블을 어떠한 물리적 형태의 데이터베이스로 저장할 것인지 결정하는 것
1. 요구사항 분석 : 핵심 정보 및 제한 조건 도출
2. 개념적 설계 : 독립적이면서 추상화된 표현방식으로 기술 (개념적 스키마 생성)
3. 논리적 설계 : 테이블 스키마 생성
4. 물리적 설계 : 효율적이고 구현가능한 물리적 데이터베이스 구조 설계
1. 개념적 설계
:개념적 모델(개체관계모델:ER model)을 이용하여 개념적 스키마(개체관계 모델:ERD)생성
추상적인 설계도면을 그리는 단계
ER model -> ERD
2. 논리적 설계
:논리적 모델을 이용하여 논리적 스키마(테이블 스키마, 데이터베이스 스키마: 관계형 테이블과 필드 집합 정의) 생성
관계형 데이터모델 -> 데이터베이스 스키마
3. 물리적 설계
:필드의 데이터 타입이나 인덱스와 같은 테이블들의 저장 구조(물리적 스키마) 결정
가장 단순한 물리적 설계: 필드에 대한 데이터 타입만 결정
* 설계과정의 고려 사항
-충실성 : 필요로 하는 모든 정보 표현
-단순성 : 단순하고 쉽게 이해할 수 있는 구조
-중복의 최소화 : 일관성을 해치는 결과 피하기 위해
-제약조건의 표현 : 데이터 종류뿐만 아니라 데이터들이 갖추어야 할 특성 동시에 포함
* 개체 : 물리적 혹은 추상적으로 존재하는 실체, 독립적으로 존재하면서 분별할 수 있는 특성 지님
동일한 특성을 갖는 개체들은 개체집합 구성
개체관계모델에서는 개체의 특성을 속성이라고 표현 (관계형 데이터모델의 필드와 같은 개념)
관계형 데이터 모델과 달리, 다중 값 속성(하나의 속성인데 여러 값이 들어 감 , ex) family_member ) , 복합 속성 정의(하나의 속성에 세부 속성 구성, ex) city ) 가능
* 관계 : 개체 간의 대응성을 의미
관계집합 : 동일한 유형의 관계들의 집합, 속성 정의 가능
* 대응수
1. 일 대 일
2. 일 대 다 ex) course개체집합과 class개체집합 간의 대응수
3. 다 대 일
4. 다 대 다 ex) student개체집합과 class개체집합 간의 대응수
* 속성의 완성도
1. 약성 개체집합 : 기본키를 형성하는데 필요한 속성을 갖지 못한 경우 ex) class개체집합
2. 강성 개체집합 : 기본키를 가지고 있는 일반적인 개체집합 ex) course개체집합
- class개체집합에서 {year, semester, division}은 동일 교과목내에서만 유일, course개체집합의 존재에 의해 결정됨 (종속관계)*
- 약성 개체집합과 관계 맺는 강성 개체집합은 항상 다대일 관계
전체참여 : 약성 개체집합의 모든 개체가 다대일 관계에 빠짐없이 참여 (<->부분참여)
약성 개체집합 쉽게 판단하는 법 : 의존하는 강성 개체집합이 존재하는가를 보기
* 부분키 (구별자) : 약성 개체집합에서 강성 개체집합의 특정 개체에서 유일한 값을 갖는 속성집합
약성 개체집합의 기본키 : 자신의 부분키 + 강성 개체집합의 기본키 로 구성
* 논리적 설계 : 테이블 스키마로 변환하는 방법
1. 강성 개체집합의 변환
기본키: 개체집합에서 정의한 키를 그대로 사용
2. 약성 개체집합의 변환
의존관계에 있는 강성 개체와의 연관을 통해 표현
기본키 : 약성 부분키 + 강성 기본키
3. 관계집합의 변환
각 개체집합의 기본키에 해당하는 모든 필드로 구성
4. 자기연관 관계집합의 변환
5. 테이블의 중복과 결합
(1) 중복 -> 제거
i. 약성 - 강성 관계 -> 여기서의 관계집합 테이블은 삭제
(2) 결합할 수 있는 것들은 결합
i. 다대일 관계
:관계 테이블 삭제 후, m:1에서 m의 개체집합에 1의 기본키를 외래키로 추가
ii. 다대다 관계
:결합 불가능
iii. 일대일 관계
: 결합, 한 테이블에 상대 테이블의 기본키 추가
6. 다중값 속성의 변환
A’ :A에 포함된 원자값을 저장하기 위해 정의된 필드
7. 복합 속성의 변환
:name이 family_name, given_name으로 구성되는 복합 속성일 때 name속성은 무시하고 얘네의 필드만 정의 하면 됨
8. 일반화 관계의 변환
i. 상위 개체집합을 유지하는 경우 (member에는 학생 교수 교직원 등등)
member의 resident_id가 student, professor의 외래키가 됨
ii. 상위 개체집합을 유지하지 않는 경우 (전체참여 , member에는 학생 교수)
student와 professor에 resident_id와 name필드 넣기
'개인공부 > db' 카테고리의 다른 글
8장 (물리적 저장 구조와 인덱스) (0) | 2023.07.20 |
---|---|
7장 (함수적 종속과 정규화) (0) | 2023.07.20 |
5장 (무결성과 보안) (0) | 2023.07.20 |
3장 (오라클) (0) | 2023.07.20 |
1-2장 (관계형 데이터베이스) (0) | 2023.07.20 |