개발기초

데이터베이스(Database) 정규화(Normalization)란?

Veams 2023. 5. 11.

데이터베이스 정규화는 왜 필요할까?

정규화는 관계형 DB 설계시, 입력, 수정, 삭제의 데이터 처리의 이상 현상을 최소화하기 위한 방법이다.

 

- 중복 데이터 제거 : 테이블 간에 데이터 중복을 최소화하고, 데이터의 일관성을 유지한다.

- 데이터 무결성 보장 : 데이터가 업데이트, 삽입, 삭제 등의 작업을 수행할 때 일관성과 정확성이 유지되도록 한다.

- 쿼리 성능 향상: 중복 데이터를 제거하고 데이터 구조를 최적화함으로써 데이터베이스에서의 검색 및 조작 성능을 향상시킨다.

 

- 데이터베이스 정규화는 주로 관계형 데이터베이스에서 사용되며, 다양한 정규화 단계를 거쳐 데이터를 최적화

- 지나친 정규화는 데이터베이스의 성능 저하될 가능성

 

정규화 단계

각 단계마다 테이블을 분해 --> 데이터 간의 관계를 재구성 -->  테이블 구조를 효율화, DB의 성능과 관리효율을 향상

 

- 제1정규화: 데이터 중복을 제거하기 위해, 모든 속성이 원자적인 값만 가지도록 테이블을 분리한다. 복수의 속성값을 갖을 경우 속성을 분리한다. 즉 한 칸엔 하나의 데이터만 기입한다.

https://dotnettutorials.net/lesson/database-normalization-in-mysql/
https://www.geeksforgeeks.org/first-normal-form-1nf/

- 제2정규화: 제1정규화가 완료된 테이블에서, 부분적 종속성(Partial Dependency)을 제거한다. 이를 위해, 테이블을 분리하고 외래키를 추가한다. 부분적 종속성 : '기본키가 아닌 다른 키'에 부분적으로 종속된 컬럼이다. 좀 더 간단하게 이야기하면 현재 테이블의 주제와 관련 없는 컬럼을 다른 테이블로 빼는 작업이다.

 

- 제3정규화: 제2정규화가 완료된 테이블에서, 이행적 종속성(Transitive Dependency)을 제거한다. 이를 위해, 테이블을 분리한다. 일반 컬럼에만 종속된 컬럼은 다른 테이블로 뺀다. 한 테이블에 PK가 될 만한 속성이 여러 개인 경우가 있다. 이 경우 PK가 될만한 속성을 별도 테이블로 분리한다. 

https://lee-mandu.tistory.com/478

 

 

- 더욱 복잡한 데이터 구조에서는 제4정규화, 제5정규화 등의 추가적 단계가 존재한다.

 

 

https://www.techfry.com/mysql-tutorial/database-normalization

 

Database Normalization - Tech Fry

Database Normalization Normalization is a database design technique which organizes tables in a manner that reduces redundancy and dependency of data. It divides larger tables to smaller tables and links them using relationships. In relational database des

www.techfry.com

 

https://www.youtube.com/watch?v=Y1FbowQRcmI 

 

댓글