230628 TIL #123 데이터 정규화

김춘복·2023년 6월 27일
0

TIL : Today I Learned

목록 보기
123/543
post-custom-banner

230628 Today I Learned

과제를 마감하고 유튜브를 보던 중 데이터 정규화 내용이 나와서 이에대해 정리해보려 한다


데이터 정규화

데이터베이스 설계에서 중복을 최소화하고 데이터 일관성을 유지하기위해 데이터를 구조화하는 과정. 데이터를 효율적이고 유지보수가 용이한 형태로 저장하고 검색하기 위함.

제 1 정규화

제1정규화(1NF) : 모든 속성이 원자적(Atomic)인 값만을 가지도록 테이블을 분할하는 과정. 각 필드에서 속성의 값을 유일하게 식별할 수 있도록 테이블을 분할하는 것.
쉽게 말해 한 칸엔 데이터 하나만.

이걸 만족하면 제 1 정규형 테이블이라 한다.

제 2 정규화

제2정규화(2NF) : 모든 비주요 속성이 주요 속성에 완전 함수적 종속이 되도록 테이블을 분할하는 과정. 즉, 테이블에서 주요 속성을 식별하는데 필요한 속성만을 포함하도록 테이블을 분할하는 것을 말한다. 쉽게 말해 현재 테이블의 주제와 관련 없는 컬럼을 다른 테이블로 빼는 작업이다.

  • 정확한 정의는 partial dependency를 제거한 테이블.
    partial dependency는 하나의 composite primary key 에 종속된 컬럼들.
    composite primary key는 합하면 primary key가 되는 컬럼.
    이걸 만족하면 제 2 정규형 테이블이라 한다.

  • 단점은 이렇게 테이블을 분리할 경우 원하는 정보를 얻고싶을 때 여러 테이블을 같이보거나 join해서 조회해야하는 경우가 발생한다.

제 3 정규화

제3정규화(3NF): 모든 비주요 속성이 주요 속성에 이행적으로 종속되지 않도록 테이블을 분할하는 과정. 즉, 각 속성의 값을 한 번만 저장하도록 테이블을 분할하는 것. 쉽게 말해 일반 컬럼에만 종속된 컬럼을 다른 테이블로 빼는 것을 말한다.

이걸 만족하면 제 3 정규형 테이블이라 한다.

단점은 제 2 정규화와 동일하다.

이 외에도 제4, 제5 정규화가 존재한다.

profile
Backend Dev / Data Engineer
post-custom-banner

0개의 댓글