1) 성능 데이터 모델링의 정의
2) 성능 모델링 수행 시점
3) 성능 데이터 모델링 고려사항
0) 정규화란?
관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스를 정규화라고 한다. 데이터베이스 정규화의 목표는 이상이 있는 관계를 재구성하여 작고 잘 조직된 관계를 생성하는 것에 있다. (ref. 위키백과)
- 데이터의 일관성, 최소한의 데이터 중복, 최대한의 데이터 유연셩을 위한 방법이며 데이터를 분해하는 과정
- 불필요한 데이터(data redundancy)를 제거
- 그에 따라 데이터 저장을 "논리적으로" !!!
- 데이터 베이스 재설계를 최소화 (개발도중에)
- 다양한 Query 가 가능하도록 최적 설계 (Join 을 통한)
- 무결성 제약조건을 충족하기 위해서
1) 정규화를 통한 성능 향상 전략
2) 함수적 종속성에 근거한 정규화 필요
3) [번외] 정규화가 필요한 Anomaly(이상) 에 대한 정리
삭제이상 (Delete Anomaly)
튜플 삭제시 연쇄 삭제가 발생하는 현상
예를 들어 2101 학번의 홍길동 학생이 ST01 과목을 수강 취소할 경우,
취소 사유를 물을 수 있는 유일한 정보인 연락처마저 잃게 되는것을 의미
삽입이상 (Insert Anomaly)
튜플 삽입시 지정하지 않은 속성값이 NULL을 갖거나, 원하지 않는 자료가 삽입되는 현상
예를 들어 2101 학번 홍길동 학생의 연락처만 추가하고 싶을 때,
과목코드가 비게되므로 NULL값을 가져 문제가 발생
갱신이상 (Update Anomaly)
데이터 갱신시 일관성 유지가 안되는 현상입니다!
예를 들어 홍길동 학생이 연락처를 바꿨을 경우,
ST01, ST02 모두 갱신해야하는데 ST01만 갱신할 경우 발생하게 됩니다!
위와 같은 Anomaly 발생시 정규화를 검토해야 한다고 생각하면 좋다
4) [번외] 정규화 순서
5) 정규화 종류
1. 1NF (부분적 함수 종속 제거)
테이블(Relation)이 1NF를 만족했다는 것은 아래 세 가지 조건를 만족했다는 것을 의미
실제로 현업에 투입되면 위와 같은 테이블이 생각보다 자주 만날 수 있어서 종종 놀란다.(IT 기업이 아니라서 그런가..)
2.2NF (부분적함수종속)
2NF를 수행 했을 경우 테이블의 모든 컬럼이 완전 함수적 종속을 만족하게 된다.
(부분 함수적 종속을 모두 제거되었으므로!)
이를 이해하기 위해서는 부분 함수적 종속과 완전 함수적 종속이라는 용어를 알아야 한다.
위 테이블의 문제는 아래와 같다.
즉 위에서 언급한 함수적 종속이 2개 존재하고, 결국 PK(유일값) 이 2개 이상이 발생할 수 있다고 생각하면 된다. 해결책은 아래와 같다.
위와같이 테이블을 분리시키면 된다.
3. 3NF (이행적 함수종속)
테이블(Relation)이 제 3정규형을 만족한다는 것은 아래 두 가지 조건을 만족하는 것을 의미한다.
즉, 후보키가 여러개임과 동시에 종속성이 A <- B <- C 와 같이 연달아서 발생시 테이블을 쪼개야 된다는 것이다. 위 예제의 해결책은 아래와 같다.
4. BCNF (Boyce-Codd Normal Form)
BCNF는 (Boyce and Codd Normal Form) 3차 정규형을 조금 더 강화한 버전으로 볼 수 있다. 이는 3차 정규형으로 해결할 수 없는 이상현상을 해결할 수 있다. BCNF란 3차정규형을 만족하면서 모든 결정자가 후보키 집합에 속한 정규형이다. 아래와 같은 경우를 생각해보면, 후보키는 수퍼키중에서 최소성을 만족하는 건데, 이 경우 (학생, 과목) 이다. (학생, 과목)은 그 로우를 유일하게 구분할 수 있다. 근데 이 테이블의 경우 교수가 결정자 이다. (교수가 한 과목만 강의할 수 있다고 가정) 즉, 교수가 정해지면 과목이 결정된다. 근데 교수는 후보키가 아닙니다. 따라서 이 경우에 BCNF를 만족하지 못한다고 한다.
쉽게 정리하면, 삽입과정에서 중복의 여지가 발생한다는 것이다(3차 정규화를 만족함에도 불구하고)
아래 예제를 보자
후보키는 수퍼키중에서 최소성을 만족하는 건데, 이 경우 { 학생, 과목 }이 후보키가 된다.
근데 해당 테이블의 경우 교수가 결정자이다.
그 이유는, 교수가 한 과목만 강의할 수 있다고 가정할 때, 교수가 정해지면 과목이 결정되기 때문입니다.
따라서 교수는 수퍼키가 되게 되고, 이 경우에 BCNF를 만족하지 못한다.
이를 해결하기 위해서는 테이블을 분리해야한다.
1) 정의
2) 적용 방법
- 반정규화 대상 조사
--- 범위 처리 빈도수 조사
--- 대량의 범위 처리 조사
--- 통계성 프로세스 조사
--- 테이블 조인 개수 조사- 다른 방법검토
--- 뷰 테이블 활용
--- 클러스터링 활용
--- 인덱스 조절
--- 응용 앱개발- 반정규화 적용
--- 테이블 반정규화
--- 속성 반정규화
--- 관계 반정규화
3) 반정규화의 기법