FreeHand

[SQLD] 데이터 모델과 성능 본문

기타/자격증

[SQLD] 데이터 모델과 성능

Jinn 2023. 11. 10. 17:49
정규화
  • 데이터를 분해하는 과정이다.
  • 데이터의 일관성, 최소한의 데이터 중복, 최대한의 데이터 유연성을 위한 방법이다.
  • 데이터 모델의 독립성 확보를 위한 방법이다.
  • 제1정규화부터 제5정규화까지 있지만, 실질적으로는 제3정규화까지만 수행한다.
제1정규화 - 속성의 원자성을 확보한다.
- 기본키를 설정한다.
제2정규화 - 기본키가 2개 이상의 속성으로 이루어진 경우, 부분 함수 종속성을 제거한다.
제3정규화 - 기본키를 제외한 칼럼 간에 종속성을 제거한다. 즉, 이행 함수 종속성을 제거한다.
BCNF - 기본키를 제외하고 후보키가 있는 경우, 후보키가 기본키를 종속시키면 분해한다.
제4정규화 - 여러 칼럼들이 하나의 칼럼을 종속시키는 경우 분해하여 다중 값 종속성을 제거한다.
제5정규화 - 조인에 의해서 종속성이 발생되는 경우 분해한다.

 

함수적 종속성

X→Y이면 Y는 X에 함수적으로 종속되어 있다.

  • 부분 함수 종속

부분 함수 종속은 기본키가 2개 이상의 칼럼으로 이루어진 경우에 발생한다.

'이름' 속성은 {계좌번호, 회원ID} 기본키의 일부분인 '회원ID' 속성에 종속된다.

회원 테이블을 만들어서 부분 함수 종속성을 제거한다. (제2정규화)

부분 함수 종속
부분 함수 종속 제거 (제2정규화)

  • 이행 함수 종속

기본키를 제외하고 칼럼 간에 종속성이 발생하는 경우

'관리점' 속성이 '관리점 코드' 속성에 의해 종속되고 있다.

관리점 테이블을 만들어서 해결한다. (제3정규화)

이행 함수 종속
이행 함수 종속 제거 (제3정규화)

정규화의 문제점

정규화는 테이블을 분해한다. 따라서 SELECT를 할 때 JOIN을 수행하고, 결과적으로 컴퓨터 리소스를 많이 사용하게된다.

이러한 정규화의 JOIN으로 인한 성능 저하를 해결하기 위해 반정규화를 사용한다.

 

반정규화

데이터베이스의 성능 향상을 위해 데이터 중복을 허용하고 JOIN을 줄이는 성능 향상 방법이다.

조회(SELECT) 속도는 향상하지만 데이터 모델의 유연성은 낮아진다.

 

'기타 > 자격증' 카테고리의 다른 글

[SQLD] SQL 활용  (0) 2023.11.14
[SQLD] SQL 기본  (0) 2023.11.12
[SQLD] 데이터 모델링  (0) 2023.11.09