데이터베이스 정규화는 왜 필요할까?
정규화는 관계형 DB 설계시, 입력, 수정, 삭제의 데이터 처리의 이상 현상을 최소화하기 위한 방법이다.
- 중복 데이터 제거 : 테이블 간에 데이터 중복을 최소화하고, 데이터의 일관성을 유지한다.
- 데이터 무결성 보장 : 데이터가 업데이트, 삽입, 삭제 등의 작업을 수행할 때 일관성과 정확성이 유지되도록 한다.
- 쿼리 성능 향상: 중복 데이터를 제거하고 데이터 구조를 최적화함으로써 데이터베이스에서의 검색 및 조작 성능을 향상시킨다.
- 데이터베이스 정규화는 주로 관계형 데이터베이스에서 사용되며, 다양한 정규화 단계를 거쳐 데이터를 최적화
- 지나친 정규화는 데이터베이스의 성능이 저하될 가능성
정규화 단계
각 단계마다 테이블을 분해 --> 데이터 간의 관계를 재구성 --> 테이블 구조를 효율화, DB의 성능과 관리효율을 향상
- 제1정규화: 데이터 중복을 제거하기 위해, 모든 속성이 원자적인 값만 가지도록 테이블을 분리한다. 복수의 속성값을 갖을 경우 속성을 분리한다. 즉 한 칸엔 하나의 데이터만 기입한다.
- 제2정규화: 제1정규화가 완료된 테이블에서, 부분적 종속성(Partial Dependency)을 제거한다. 이를 위해, 테이블을 분리하고 외래키를 추가한다. 부분적 종속성 : '기본키가 아닌 다른 키'에 부분적으로 종속된 컬럼이다. 좀 더 간단하게 이야기하면 현재 테이블의 주제와 관련 없는 컬럼을 다른 테이블로 빼는 작업이다.
- 제3정규화: 제2정규화가 완료된 테이블에서, 이행적 종속성(Transitive Dependency)을 제거한다. 이를 위해, 테이블을 분리한다. 일반 컬럼에만 종속된 컬럼은 다른 테이블로 뺀다. 한 테이블에 PK가 될 만한 속성이 여러 개인 경우가 있다. 이 경우 PK가 될만한 속성을 별도 테이블로 분리한다.
- 더욱 복잡한 데이터 구조에서는 제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
'개발기초' 카테고리의 다른 글
DB Optimistick Lock : 쇼핑몰 서비스 개발시 발생할 수 있는 이슈 (0) | 2023.06.23 |
---|---|
트랜잭션과 ACID (0) | 2023.05.22 |
FULLTEXT 인덱스 개요, 특징과 작동원리 (0) | 2023.05.10 |
양방향 LIKE 연산자(% LIKE %) 사용시 인덱스 (0) | 2023.05.10 |
데이터베이스에서 인덱스란? 왜 필요한가? (0) | 2023.05.10 |
댓글