everyday com-eat
작성일
2022. 1. 20. 00:15
작성자
갱수터
728x90

정규화(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정규형이 모두 보이스/코드 정규형은 아니다

- 후보키가 아닌 결정자 제거

- 제약조건이 엄격해짐

 

 

반정규화

- (정리해야함)

728x90

'{ "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