정규화(Normalization)란?
정규화의 기본 목표는 데이터베이스에 존재하는 테이블 간에 중복된 데이터를 허용하지 않는다는 것이다. 중복된 데이터를 허용하지 않음으로써 무결성(Integrity)을 유지할 수 있으며, 한 테이블의 데이터 용량이 최소화되는 효과가 있다.
제 1 정규화(1NF, First Normal Form)
- 각 테이블의 속성(Attribute)은 단일 값을 가져야 한다.
- 각 레코드는 고유해야 한다.
(예제)
제 2 정규화(2NF, Second Normal Form)
- 제 1 정규화 적용한 상태
- 모든 일반 속성은 반드시 모든 주식별자에 종속되어야 한다.
- 단일 식별자인 경우 발생하지 않는다. 즉 복합 식별자(Composite Primary Key)일 때만 발생한다.
(예제)
제 3 정규화(3NF, Third Normal Form)
- 제 2 정규화 적용한 상태
- 주식별자가 아닌 모든 속성 간에는 서로 종속될 수 없다.
- 단일 식별자인 경우 발생한다.
(예제)
정규화 수행 시 성능에 대해서
정규화 수행 모델은 데이터를 입력/수정/삭제할 때 일반적으로 반정규화된 테이블에 비해 처리 성능이 향상된다. 단 데이터를 조회할 때에는 처리 조건에 따라 조회 성능이 향상될 수도 있고 저하될 수도 있다.
'프로그래밍 > 데이터베이스' 카테고리의 다른 글
트랜잭션 격리 수준(Transaction Isolation Level)에 대해서 (8) | 2023.05.10 |
---|---|
SQL 실행 순서 알아보기 (2) | 2023.05.04 |
JOIN에 대해서 알아보자 (3) | 2023.03.28 |
[PostgreSQL] 테이블, 컬럼 이름으로 대문자를 사용하지 말고 소문자를 써라 (0) | 2023.03.10 |
CockroachDB 어떤 데이터베이스인가? (0) | 2023.03.06 |
댓글