정규화란?
- 테이블 간에 중복된 데이터를 제거하여 무결성을 유지하게 하는 것
정규화 단계
제 1정규화
- 테이블의 컬럼이 원자값(하나의 값)을 갖도록 테이블을 분해하는 것
제 2정규화
- 제 1정규형 릴레이션에서 부분 함수 종속성을 제거하는 것
- 부분 함수 종속성 : 기본키가 복합키일 경우 기본키를 구성하는 속성 중 일부에게 종속된 것
기본키(복합키) : 학생번호, 강좌이름 → 성적
강좌이름(기본키의 부분집합) → 강의실
제 3정규화
-
- 이행 함수 종속 : A -> B, B -> C가 성립할 때 A -> C가 성립되는 것
- 이행 함수 종속의 문제 : 학생번호 → 강좌이름 → 수강료인 경우 강좌 이름이 바뀌어도 학생은 수강료를 그대로 내고 수업을 들을 수 있음, 강좌이름에 맞게 수강료를 변경하는 과정 번거로움제 2정규형 릴레이션에서 이행 함수 종속성을 제거하는 것
BCNF 정규화
- 제 3정규형 릴레이션에서 모든 결정자가 후보키가 되도록 테이블을 분해하는 것
N대M 자기참조 관계 해결방법
- 한 테이블 내의 레코드들 사이에 존재하는 N대 M관계
- 보조 테이블 생성 후 원래 테이블과의 관계를 맺은 후 일대다 관계로 변환
뷰란?
데이터베이스의 하나 이상의 테이블의 필드들로 구성된 가상테이블
뷰의 사용이유?
데이터 무결성을 강화하고 여러 테이블들로부터 동시에 온 데이터로 작업하기 위해 사용
뷰 정의문
CREATE VIEW 뷰이름[(속성이름[,속성이름])]AS SELECT문; //뷰 생성
DROP VIEW 뷰이름 RESTRICT or CASCADE //뷰 삭제