반응형
[1] 정규화 이론
(1) 이상 현상
1. 정의
- 의도와 다르게 데이터 오류가 발생되는 이상 현상
- 릴레이션 조작에 예기치 못한 문제 발생
2. 이상현상 종류
- 삭제 이상 : 삭제시 삭제되면 안되는 데이터도 삭제되는 현상
- 삽입 이상 : 필요하지 않는 데이터가 의도와 상관없이 데이터가 추가되는 현상
- 갱신 이상 : 갱신 시 일부 또는 전체가 누락되어 정보의 모순이 발생되는 현상
(2) 정규화
1. 정규화 정의
- 이상현상이 있는 릴레이션을 분해하여 이상 현상을 없애는 과정
- 데이터의 중복을 최소화하여 데이터를 구조화 하는 프로세스
- 릴레이션에 속성이 혼합되면서 데이터가 중복저장되어 이상현상이 발생된것을 해결하기 위해 진행한다
2. 정규화 원칙 = 스키마 변환과정
- 무손실의 원칙
- 중복 감소의 원칙
- 분리의 원칙
3. 정규화 목적
- 모든 릴레이션을 데이터 베이스 내에서 표현 가능하게 한다
- 검색 알고리즘을 효과적으로 만들수 있음
- 이상 현상이 발생하지 않도록 방지
- 데이터 추가시 릴레이션 재구성 과정을 줄일수 있다
4. 정규형 NF 종류
기본정규형 | 제 1 정규형 INF |
제 2 정규형 2NF | |
제 3 정규형 3NF | |
보이스-코드 정규형 BCNF | |
고급정규형 | 제 4 정규형 4NF |
제 5 정규형 5NF |
5. 함수 종속 FD
- 정의
- 릴레이션 R에서 X, Y를 R의 부분 집합으로 본다
- X값에 의해 Y 값이 유일하게 정해지는 관계이다 ;
- X (결정자)→ Y (종속자)
- 속성 X의 값 각각에 대해 항상 속성 Y의 값이 오직 하나라면 Y는 X에 함수 종속되었다
- 종류
- 완전 함수 종속 : 기본키로 된 모든속성에 포함되는경우
- 부분함수종속 : 기본키를 구성하는 속성의 일부에 종속되거나 기본키가 아닌 다른 속성에 종속되는 경우
- 이행적함수종속 : X →Y, Y→ Z 일때 X → Z 성립된다
(3) 정규형 종류 및 특성 ★어려움
1. 제 1 정규형 INF
- 목표 : 모든 속성의 값은 원자값만 갖도록 갖도록 릴레이션을 분리한다.
- 기본키는 중복되지 않는 유일한 값을 의미한다 : 학번 , 과목번호
- 부분함수종속은 이상현상이 발생할수 있음
2. 제 2 정규형 2NF
- 목표 : 부분 함수 종속을 제거하도록 릴레이션을 분리한다.
- 기본키의 부분집합이 결정자가 되면 안된다
- 학번과 강좌이름 부분에 대한 부분함수적종속을 릴레이션을 분리하여 완전함수종속으로 종속 형태를 수정한다
- 학번 > 이름, 학과, 대학은 부분함수종속과 이행적함수종속으로 인해 이상현상이 발생할수 있다
3. 제 3 정규형 3NF
- 목표 : 이행적 함수 종속을 제거하도록 릴레이션을 분리한다.
- 학번 부분에 대한 부분함수적종속을 제거하여 완전함수종속으로 릴레이션을 분리하여 종속 형태를 수정한다
4. 보이스-코드 정규형 BCNF
- 목표 : 모든 결정자는 후보키가 되도록 릴레이션을 분리한다.
- 다치종속을 가지고 있긴 하지만 2개 이상의 칼럼이 하나의 칼럼에 다치 종속되지 않는다
5. 제 4 정규형 4NF
- 목표 : 다치 종속성을 갖도록 릴레이션을 분리한다.
- 다치 종속 MVD : 2개의 독립된 애트리뷰트(속성)가 1: N 관계로 대응하는 관계
6. 제 5 정규형 5NF
- 목표 : 조인 종속성을 가지도록 릴레이션을 분리한다
- 조인 종속성 JD : 릴레이션 스키마의 모든 올바른 릴레이션 상태가 분해될때 비부가적 조인분해, 무손실 분해를 가져야한다
[2] 데이터베이스 설계
(1) 데이터베이스 설계 과정
1단계 | 계획 설정 | |
2단계 | 요구사항 분석 | 사용자 요구사항 분석 분석서 |
3단계 | 개념적 설계 | DBMS 독립적 개념 스키마 설계 트랜잭션 모델링 개념적 스키마 ERD |
4단계 | 논리적 설계 | 목표 DBMS에 적합한 스키마 설계 트랜잭션 인터페이스 설계 논리적 스키마 |
5단계 | 물리적 설계 | 목표 DBMS에 적합한 물리적 스키마 설계 트랜잭션 세부 설계 물리적 스키마 |
6단계 | 구현 |
(2) 데이터 베이스 설계 시 고려사항
- 무결성 : 연산 후에도 데이터 값이 변화없음
- 일관성
- 회복 : 장애 발생시 이전 단계로 복구 가능
- 보안
- 효율성
- 확장
반응형
'🌈 백엔드 > 데이터베이스' 카테고리의 다른 글
데이터베이스_MySQL에서 DB생성 및 실행 (0) | 2023.06.27 |
---|---|
데이터베이스_MySQL 계정 및 스키마 생성 (0) | 2023.06.26 |
DB_데이터베이스_트랜잭션 (0) | 2023.04.25 |
DB_데이터베이스_데이터 모델 및 언어 (0) | 2023.04.21 |
DB_데이터베이스_개요 (0) | 2023.04.20 |
댓글