표시요소 | 설명 |
---|---|
연산 (Operation) | - 데이터베이스에 저장된 실제 데이터를 처리하는 작업에 대한 명세 - 릴레이션을 조작하기 위한 관계 연산을 나타냄(SELECT, PROJECT, JOIN, DIVISION) |
구조 (Structure) | - 데이터베이스에 논리적으로 표현될 대상으로서의 개체 타입과 개체 타입 간의 관계 - 데이터 구조 및 정적 성질을 표현 |
제약 조건 (Constraint) | - 데이터베이스에 저장될 수 있는 실제 데이터의 논리적인 제약 조건 - 데이터 무결성 유지를 위한 DB의 보편적인 방법 - 릴레이션의 특정 칼럼에 설정하는 제약을 의미(개체 무결성, 참조 무결성 등) |
- 트랜잭션 모델링, View 통합방법 및 Attribute 합성 고려
- 개념적 데이터 모델은 DB 종류와 관계 없음
- 주요 산출물은 개체관계 다이어그램(ERD)이 있음
- 정규화 수행
- 논리적 데이터베이스 구조로 매핑
- 스키마의 평가 및 정제
- 논리적 데이터 모델링 중 하나에 맞게 설계
- 관계형 데이터베이스에서는 테이블을 설계하는 단계
- Table, Index, View, Partition 등 객체를 생성
- 응답시간, 저장 공간의 효율화, 트랜잭션 처리를 고려하여 설계
- 성능 측면에서 반 정규화를 수행
- 레코드 집중의 분석 및 설계
- 저장 레코드 양식 설계
- 접근 경로(Access Path) 설계
이상현상 | 설명 |
---|---|
삽입 이상 | 정보 저장 시 해당 정보의 불필요한 세부정보를 입력해야 하는 경우 |
삭제 이상 | 정보 삭제 시 원치 않는 다른 정보가 같이 삭제되는 경우 |
갱신 이상 | 중복 데이터 중에서 특정 부분만 수정되어 중복된 값이 모순을 일으키는 경우 |
[이상 현상 설명 테이블]
학번 | 이름 | 교수번호 | 지도교수 |
---|---|---|---|
201901 | 홍길동 | 1 | 김교수 |
201902 | 김영희 | 2 | 이교수 |
[삽입 이상]
학번 | 이름 | 교수번호 | 지도교수 |
---|---|---|---|
201901 | 홍길동 | 1 | 김교수 |
201902 | 김영희 | 2 | 이교수 |
201903 | 이철수 | ? | ? |
→ 지도교수가 정해지지 않으면 삽입할 수 없음
[삭제 이상]
학번 | 이름 | 교수번호 | 지도교수 |
---|---|---|---|
201901 | 홍길동 | 1 | 김교수 |
→ '이 교수'라는 교수가 퇴사할 경우 '김영희' 학생 정보도 같이 삭제
[갱신 이상]
학번 | 이름 | 교수번호 | 지도교수 |
---|---|---|---|
201901 | 홍길동 | 3 | 박교수 |
201902 | 김영희 | 2 | 이교수 |
→ '홍길동'의 지도교수가 '박교수'로 바뀌면 '김교수'의 정보가 사라짐
결정자/종속자
함수 종속 종류
종류 | 설명 |
---|---|
부분 함수 종속 (Partial Functional Dependency) | 릴레이션에서 기본 키가 복합 키일 경우 기본 키를 구성하는 속성 중 일부에게 종속 |
완전 함수 종속 (Full Functional Dependency) | 릴레이션에서 X → Y 관계가 있을 때, Y는 X의 전체 속성에 대해 종속하고, 부분 집합 속성에 종속하지 않는 경우 |
이행 함수 종속 (Transitive Functional Dependency) | 릴레이션에서 X → Y, Y → Z 종속 관계가 있을 때, X → Z 가 성립되는 경우 |
단계 | 조건 |
---|---|
1정규형(1NF) | 원자값으로 구성 |
2정규형(2NF) | 부분 함수 종속 제거(완전 함수적 종속 관계) |
3정규형(3NF) | 이행 함수 종속 제거 |
보이스-코드 정규형(BCNF) | 결정자 후보 키가 아닌 함수 종속 제거 |
4정규형(4NF) | 다치(다중 값) 종속 제거 |
5정규형(5NF) | 조인 종속 제거 |
1차 정규화(1NF)
→ 취미가 속성에 2개 이상 가지고 있는 경우 원자값이 아니기 때문에 속성 1개만 가지도록 저장
2차 정규화(2NF)
→ <학생번호, 강좌이름>이 <성적>에 영향을 주고, <강좌이름>이 <강의실>에 영향을 주는 관계를 '부분함수 종속 관계'
→ 부분 관계인 <강좌이름, 강의실> 관계를 별도의 테이블로 둠
3차 정규화(3NF)
→ <학생번호>가 <강좌이름>에 영향을 주고, <강좌이름>이 <수강료>에 영향을 주는 관계를 '이행함수 종속 관계'
→ <학생번호>는 <수강료>에 직접 영향을 주는 관계가 아니기에 <학생번호, 강좌이름> <강좌이름, 수강료> 테이블로 분리
보이스-코드 정규화(BCNF)
→ <학생번호, 특강이름>이 <교수>에 영향을 주고, <교수>가 <특강이름>에 영향을 주는 관계로서, <교수>는 키가 아닌 상황이므로 결정자인 <교수>가 후보키가 아님
→ <교수, 특강이름> 테이블로 분리하여 교수가 후보키 역할을 하도록 함