SQLD. 2일차 정리

·2025년 5월 22일

SQLD

목록 보기
2/7

1. 정규화

Q. 정규화를 왜 필요할까?
-> 모델링된 DB의 테이블과 관계들은 DATA를 입력, 수정, 삭제하는 과정에서 의도치 않게 일관성이 깨질 수 있는데 이를 "DB의 이상현상"이라 한다. 이를 방지하기 위해서 데이터의 중복을 최소화해 테이블을 잘 조직된 상태로 분해하는 과정을 "정규화" 라 한다.

1.1 제 1 정규화

ㄱ. 하나의 속성이 여러 속성값을 가질 때 or 하나의 테이블에 유사한 속성이 반복 될 때.

1.1 제 2 정규화

ㄱ. 복합 식별자 일때
ㄴ. 일반 속성이 주식별자 일부에만 종속될 때

1.1 제 3 정규화

ㄱ. 주식별자가 아닌 일반 속성간에 함수종속성이 발생 할 때


2. 반정규화

Q. 반규화를 왜 필요할까?
-> 정규화로 조회성능이 떨어졌을 때, 응답 성능이 중요해 질때 데 DATA의 중복을 허용하거나 데이터를 그룹핑 조회성능을 높이는 것을 "반정규화"라 한다.

2.1 테이블 반정규화

1) 테이블 병합
ㄱ. 1대1 관계 테이블 병합
ㄴ. 1대다 관계 테이블 병합
ㄷ. 슈퍼타입/서브타입 관계 테이블 병합

  • One to One Type
  • Plus Type
  • Single Type

2) 테이블 분할
ㄱ. 수직분할
ㄴ. 수평분할(파티셔닝)

3) 테이블 추가
ㄱ. 중복 테이블 추가
ㄴ. 통계 테이블 추가
ㄷ. 이력 테이블 추가
ㄹ. 부분 테이블 추가

2.2 칼럼 반정규화

ㄱ. 중복 칼럼 추가
ㄴ. 파생 칼럼 추가
ㄷ. 이력 테이블 칼럴 추가
ㄹ. Pk에 의한 칼럼 추가
ㅁ. 응용 시스템 오동작을 위한 칼럼 추가


profile
# h

0개의 댓글