정규화(normalization)
- 데이터의 일관성, 최소한의 데이터 중복, 최대한의 데이터 유연성을 위한 방법이며 데이터를 분해하는 과정.
즉, 이상현상이 발생하는 릴레이션을 분해하는 과정
- 함수적 종속성을 판단하여 정규화를 수행
- 정규화를 통한 릴레이션은 무손실 분해여야 한다. (자연 조인 시 분해 전 릴레이션으로 복원 가능)
❓ 이상현상(anomaly)
- 불필요한 데이터 중복으로 인해 릴레이션에 대한 데이터 삽입,수정,삭제 연산을 수행할 때 발생할 수 있는 부작용
- 삽입이상 : 데이터를 삽입할 때 원치 않은 값들도 함께 삽입하는 현상 (무결성)
- 갱신이상 : 투플 수정 시 중복된 데이터의 일부만 수정되어 데이터의 불일치 일어나는 현상
- 삭제이상 : 투플 삭제 시 같이 저장된 다른 정보까지 연쇄적으로 삭제되는 현상
❓ 함수적 종속성(Functional Dependency)
- 속성들 간의 관계
X → Y | - x가 y를 함수적으로 결정한다 - y가 x에 함수적으로 종속되어 있다 - x=결정자(대부분 식별자), y=종속자(일반 컬럼) |
함수 종속 관계 판단
- 속성 자체의 특성과 의미를 기반으로 함수 종속성을 판단
- 속성값은 계속 변할 수 있으므로 값으로 판단 하면 안됨
- 기본키나 후보키가 아니여도 결정자가 될 수 있음
- 완전 함수 종속 ex) 고객아이디와 이벤트번호를 알아야 당첨여부를 알 수 있음
- 부분 함수 종속 ex) 고객아이디와 이벤트번호를 알 때, 고객아이디만 알아도 고객의 이름을 알 수 있음
정규형(Normal Form)
제 1정규형(1NF)
- 반복 집합 제거
- 더이상 분해되지 않는 원자값으로 구성
- 완전 함수 종속이 되지 않기 때문에 이상현상 발생
제 2정규형(2NF)
- 1정규형의 부분 함수의 종속성을 제거함
- 모든 속성이 키 속성에 완전 함수 종속
- 식별자 하나로
- 이행적 함수 종속(x>y>z , x>z)이 존재하기 때문에 이상현상 발생
제 3정규형(3NF)
- 2정규형의 이행적 함수의 종속성을 제거함
- 기본키가 아닌 모든 속성이 기본키에 이행적 함수 종속되지 않으면 제 3정규형을 만족함
- 키에 대해서 직접적으로 함수 종속
- 하나의 릴레이션에 여러 후보키가 있을 경우 이상현상이 발생할 수 있음
보이스/코드 정규형(BCNF)
- 3정규형에 속하지만, 3정규형이 모두 보이스/코드 정규형은 아니다
- 후보키가 아닌 결정자 제거
- 제약조건이 엄격해짐
반정규화
- (정리해야함)
'{ "Hello World!" }; > DataBase' 카테고리의 다른 글
(DB) 뷰(VIEW) (0) | 2022.01.26 |
---|---|
(DB) 서브 쿼리(Sub Query) (0) | 2022.01.23 |
(DB) 데이터베이스 설계 (0) | 2022.01.14 |
(DB) JOIN, UNION (0) | 2021.12.29 |
(DB) MySQL 내장 함수,연산자 (0) | 2021.12.29 |