본문 바로가기
CS/데이터베이스

데이터베이스 정규화

by DYII 2021. 3. 15.
728x90

관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스.

 

 1. 불필요한 데이터를 없앰,

 2. 데이터 삽입/갱신/삭제 시 발생하는 이상현상을 방지.

 

 

* ACID

 1. Atomicity (원자성)

  : 모든 작업이 반영되거나 모두 롤백되는 특성 (All or Nothing)

 

2. Consistency (일관성)

  : 데이터는 미리 정의된 규칙에서만 수정이 가능한 특성

 

3. Isolation (고립성)

  : 트랜잭션 작업 수행 중에는 다른 트랜잭션에 영향을 주어서도, 간섭을 받아서도 안됨.

 

4. Durability (영구성)

  : 한 번 반영된 트렌젝션의 내용은 영원히 적용되는 특성

 

 

* 이상현상

1. Update

 - 한 데이터가 변경될 때, 여러 줄의 데이터를 갱신해야 해 데이터의 불일치가 발생할 수 있음.

2. Insert

 - 튜플 삽입 시 지정하지 않은 속성값이 null을 가짐.

3. Delete

 - 튜플 삭제 시 연쇄삭제가 발생할 수 있음. 

 

이름 좋아하는 음식
경애 피자, 짬뽕
슬아 파스타
정은 불고기, 순두부
희경 제육
한경 짜장면
슬기 탕수육

제 1 정규형(1NF : First Normal Form)

 각 로우마다 칼럼의 값이 1개씩만 있어야 함. => 칼럼이 원자 값을 갖는다.

이름 좋아하는 음식
경애 피자
경애 짬뽕
슬아 파스타
정은 불고기
정은 순두부
희경 제육
한경 짜장면
슬기 탕수육

 

제 2 정규형(2NF : Second Normal Form)

테이블의 모든 칼럼이 완전 함수적 종속을 만족하는 것. 특정 칼럼에만 종속된 칼럼이 없어야 함.

=> 부분적 종속이 없어야 함. 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속됨.

 * 부분적 종속 : {학번} -> {학년}, {학번} -> {등록금} 과 같이 두 개의 부분 함수 종속성을 가지고 있는 것.

 

 

 

제3 정규형(3NF : Third Normal Form)

기본키가 아닌 모든 속성이 기본키에 이행적 함수 종속이 되지 않는 것.

 => 기본키 이외의 다른 칼럼이 그 외 다른 칼럼을 결정할 수 없음.

 - 3NF 까지되면, 정규화되었다고 말하기도 함.

 

* 이행적 함수 종속(Transitive Functional Dependency) 

 : x -> y이고 y -> z 이면 x => z 가 되는데, 이때, z가 x에 이행적으로 함수 종속되었다고 한다.

{학번} -> {학부} -> {등록금} 이런 관계가 존재한다면, 두 릴레이션으로 분리해야 한다는 뜻이다. 

 

 

BCNF (Boyce and COdd Normal Form)

3차 정규형을 만족하면서 모든 결정자가 후보 키 집합에 속한 정규형.

 

 

제4 정규형

다치 종속성을 제거. A 속성을 알면 X라는 다중 값(B, C 속성)을 알 수 있을 때, 이러한 종속성을 제거함.

 

제5 정규형

 결합 종속성 제거, {A, B, C} -> {A, B}, {B, C} , {A, C}로 분해하는 것.

 

제6 정규형

 모든 관계가 후보 키와 하나 이상의 다른 속성으로 구성됨을 의미함.

 

 

 

 

 

 

 

 

 

참고한 사이트

 

yaboong.github.io/database/2018/03/09/database-normalization-1/

728x90

'CS > 데이터베이스' 카테고리의 다른 글

[MYSQL/ORACLE] 프로그래머스 : 입양 시각 구하기(2)  (0) 2021.03.21
오라클 계층형 쿼리  (0) 2021.03.21