11th May 2021 TIL

알파·2021년 5월 11일
0

TIL

목록 보기
4/18

정규화

정규화(Normalization)란, 데이터베이스 내의 데이터의 일관성 유지, 최소한의 중복, 최대한의 데이터 유연성을 위해 데이터(엔터티)를 분해하는 것을 일컫는다.
정규화는 제1 정규화부터 제5정규화까지 있으나, 일반적으로 제3정규화까지 수행한다.

정규화 절차

  • 제1정규화 : 기본키를 설정하는 것
  • 제2정규화 : 기본키가 두 개이상일 경우에만 수행하며, 부분함수적 종속을 해소한다.
    (함수적종속성이란? X가 바뀌면 Y도 바뀌는 것)
  • 제3정규화 : 이행함수적종속을 제거한다.(이행함수적종속이란 기본키가 아닌 칼럼 간의 종속성을 의미한다.)
  • BCNF : BCNF는 기본키를 제외하고 후보키가 존재하고 후보키가 기본키의 속성 중에 하나를 함수적으로 종속하는 경우에 발생한다.

단점

정규화는 데이터의 유연성을 높여준다는 장점이 있지만, 데이터베이스 조회 시에 조인을 유발시켜 CPU와 메모리에 부하를 준다.
이러한 단점을 해소하는 것이 '반정규화'이다.

반정규화

반정규화(De-normalization)란, 데이터베이스의 성능향상을 위해 데이터의 중복을 허용하고 조인을 줄이는 기법이다. 반정규화는 조회속도를 향상시키지만, 데이터 모델의 유연성을 저하시킨다. (데이터베이스 성능향상을 위한 여러 기법을 가리키는 듯하다.)

반정규화 기법

  1. 계산된 칼럼 추가 ex) 총판매액, 평균잔고 등
  2. 테이블 수직분할 - 칼럼을 분할하여 새로운 테이블을 만듦.
  3. 테이블 수평분할 - 데이터의 값을 기준으로 테이블을 분할하는 것.
  4. 테이블 병합 - 1대1관계 테이블을 병합한다.(데이터 중복이 늘어남)

Tips

  • 테이블 행의 길이가 길어져서 입출력단위(Block Size)보다 길어지면 한 개의 행을 조회할 때 여러 번의 입출력이 발생하여 성능이 떨어진다.
  • 값을 여러개 가진 다중값 속성일 경우, 별도의 릴레이션으로 도출되어야 한다.

분산 데이터베이스

분산 데이터베이스란, 물리적으로 떨어진 데이터베이스를 네트워크로 연결하여 단일 데이터베이스 이미지를 보여주고 분산된 작업처리를 수행하는 데이터베이스이다.
(중앙 집중형 데이터베이스는 시스템 구축 시에 한 대의 물리적 시스템에 데이터베이스 관리 시스템을 설치하고 여러 명의 사용자가 시스템에 접속하여 사용하는 데이터베이스를 말한다.)
분산 데이터베이스의 고객은 시스템이 네트워크로 분산되어 있는지의 여부를 인식하지 못하면서, 자신만의 데이터베이스를 쓰듯이 사용할 수 있다. 이를 투명성이라고 말한다. 투명성에는 분할, 위치, 지역사상, 중복, 장애, 병행 투명성이 있다.

설계방식

  • 상향식 설계방식 - 지역스키마 -> 전역스키마
  • 하향식 설계방식 - 전역스키마 -> 지역스키마

장점

  • 데이터베이스의 신뢰성과 가용성이 높다.
  • 데이터베이스가 병렬처리를 수행하기 때문에 응답속도가 빠르다.
  • 데이터베이스를 추가하여 시스템 용량확장이 쉽다.

단점

  • 데이터베이스가 여러 네트워크를 통해 분리되어 있어 관리와 통제가 어렵다.
  • 보안 관리가 어렵다.
  • 데이터 무결성 관리가 어렵다.
  • 데이터베이스 설계가 복잡하다.
profile
I am what I repeatedly do

0개의 댓글