관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스.
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/
'CS > 데이터베이스' 카테고리의 다른 글
[MYSQL/ORACLE] 프로그래머스 : 입양 시각 구하기(2) (0) | 2021.03.21 |
---|---|
오라클 계층형 쿼리 (0) | 2021.03.21 |