내배캠 72일차

·2023년 1월 24일
0

내일배움캠프

목록 보기
78/142
post-thumbnail

데이터 정규화

정규화(Normalization) 는 이상현상이 있는 릴레이션을 분해하여 이상현상을 없애는 과정이다. 이상현상이 존재하는 릴레이션을 분해하여 여러 개의 릴레이션을 생성하게 된다. 이를 단계별로 구분하여 정규형이 높아질수록 이상현상은 줄어들게 된다.

제 1 정규형(1NF)

한 칸엔 하나의 데이터만


=> 제 1 정규형 테이블

제 2 정규형(2NF)

현재 테이블의 주제와 관련없는 컬럼으 다른 테이블로 빼는 작업

partial dependency를 제거한 테이블



=> 제 2 정규형 테이블

partial dependency

composite primary key : 합쳐서 primary key(unique column)역할을 할 수 있는 columns

위의 테이블에서 가격이라는 컬럼이 프로그램 컬럼에 종속됨.
이때 가격 컬럼이 하나의 composite primary key에 종속되어 있는 것을 Partial Dependency라고 함.

추가

제 2 정규형 테이블은 테이블 하나만 봐서는 세부적인 사항을 바로 알 수 없음

위에서 김민수가 얼마를 납부했는지, 해야하는지 알려면 가격테이블을 참조해야 함

이런 불편한 점 때문에 관계형DB들은 테이블을 정규화 해두는게 일반적이지만,

제 3 정규형(3NF)

일반 컬럼에만 종속된 컬럼은 다른 테이블로 빼기

정규화의 장점

  • 데이터베이스 변경 시 이상 현상(Anomaly)을 제거할 수 있다.
  • 정규화된 데이터베이스 구조에서는 새로운 데이터 형의 추가로 인한 확장 시, 그 구조를 변경하지 않아도 되거나 일부만 변경해도 된다.
  • 데이터베이스와 연동된 응용 프로그램에 최소한의 영향만을 미치게 되어 응용프로그램의 생명을 연장시킨다.

정규화의 단점

  • 릴레이션의 분해로 인해 릴레이션 간의 JOIN연산이 많아진다.
  • 질의에 대한 응답 시간이 느려질 수도 있다. 데이터의 중복 속성을 제거하고 결정자에 의해 동일한 의미의 일반 속성이 하나의 테이블로 집약되므로 한 테이블의 데이터 용량이 최소화되는 효과가 있다.
  • 따라서 데이터를 처리할 때 속도가 빨라질 수도 있고 느려질 수도 있다.
  • 만약 조인이 많이 발생하여 성능 저하가 나타나면 반정규화(De-normalization) 를 적용할 수도 있다.
profile
개발자 꿈나무

0개의 댓글