001 정규화
1 정규화(Normalization)
-
정규화는 데이터의 일관성, 최소한의 데이터 중복, 최대한의 데이터 유연성을 위한 방법 → 데이터를 분해하는 과정
-
데이터 중복을 제거하고 데이터 모델의 독립성으 확보하기 위한 방법
-
비즈니스에 변화가 발생하여도 데이터 모델의 변경을 최소화함
-
실질적으로는 제3정규화까지만 수행함.
-
이상현상을 해결하기 위해서 테이블을 분해하고 , 조인을 통해 합집하을 하기도 한다.
-
정규화 절차
- 제1정규화 : 속성의 원자성을 확보 / 기본키를 설정함
- 제2 정규화 : 부분 함수 종속성을 제거한다.
- 제3 정규화 : 칼럽간에 종속성을 제거한다. (이행 함수 종속성 제거)
- BCNF : 후보키가 있는 경우, 후보키가 기본키를 종속시키면 분해한다.
- 제4 정규화 : 여러 칼럼들이 하나의 칼럼을 종속시키는 경우 분해아여 다중값 종속성을 제거
- 제5 정규화 : 조인에 의해서 종속성이 발생되는 경우 분해
2 함수적 종속성(Functional Dependency)
(1) 제1정규화
- 함수적 종속성을 근거로 한다. X→ Y 이면Y는 X에 함수적으로 종속됨.
- X가 변화하면 Y도 변화하는 지 확인함.
- 게좌번호 하나만으로 유일성을 만족하지 못하면, 계좌번호와 회원ID를 기본키로 잡음
(2) 제2정규화
- X : 계좌번호 / 회원 ID
- Y : 계좌명, 예수금, 이름, 관리점 코드, 관리점
→ 회원ID가 이름에 함수적으로 종속(부분 함수 종속성) → 분해를 해야한다!
(3) 제3정규화
- 관리점 코드가 관리점을 종속하여 (이행 함수 종ㅅ옥성) 이를 분리함
(4) BCNF(Boyce-Codd Normal Form)
- 복수의 후보키가 있고 후보키들이 복합 속성이어야 하면, 서로 중첩될 때
- ex) 기본 키 : 학번, 과목 번호 → 교수(후보키, 최소성과 율성을 만족)
- 교수가 과목 번호를 함수적으로 종속 → 교수 테이블을 새로 만들고 기본키는 교수로 하고 칼럼은 과목 번호가 됨 → BCNF
3 정규화 예제
- 정규화 대상 테이블
(1) 제1정규화
- 속성을 보고 한 개의 속성으로 유일성을 만족할 수 있는지 확인(중복 체크)
- 한 개의 속성으로는 유일성 만족할 수 없다면 2개의 조합으로 체크 → 유일성 만족하는 것이 식별자가 됨
(2) 제2정규화
- 기본키가 두개인 경우 대상됨. 모든 속성이 식별자에 종속되어야 함. 그렇지 않을 경우 분해함.
- 중복이 나오는 경우 엔티티를 분해하는 것 이 제 2정규화
- 이를 통해서 엔티티가 분리된다.
002 정규화와 성능
1 정규화의 문제점
-
정규화는 테이블을 분해해서 데이터 중복을 제거하기 때문에 데이터 모델의 유연성을 높이나, 데이터 조회(SELECT) 시에 JOIN을 유발하기 떄문에 메모리를 많이 사용함. 두개의 테이블을 가진 경우 조인해야 함.
-
조인의 사용
SELECT 사원번호, 부서코드, 부서명, 이름 ,전화번호, 주소 FROM 직원, 부서 WHERER 직원.부서코드 = 부서.부서코드;
- 중첩된 루프
- 중첨된 루피를 통해서 비교해서 비효율이 발생하나, 인덱스와 옵티마이저를 주로 쓴다. 반정규화하여 하나의 테이블에 저장하면 조인을ㅇ 통한 성능 저하는 해결되기에 반정규화가 있음.
2 정규화를 사용한 성능 튜닝
- 조인으로 인하여 성능이 저하되는 무넺를 반정규화로 해결함
- 반정규화는 데이터를 중복시키기 때문에 또 다른 문제점을 발생시킴
- 조인을 하면 칼럼은 증가하ㅁ지만, 블록의 크기가 커지게 된다. → 이로 입출력 데이터가 증가함
003 반정규화(De-Normalization)
1 반정규화(De-Normalization)
- 데이터 베이스의 성능 향상을 위하여, 데이터 중복을 허용하고 조인을 줄이는 데이터 베이스 향상 방법
- 반정규화는 조회 속도를 향상하지만, 데이터 모델의 유연성은 낮아짐
2 반정규화를 수행하는 경우
-
종속성, 활용성은 향상되지만 수행 속도가 느려지는 경우
-
다량의 범위를 자주 처리해야 하는경우
-
특정 범위의 데이터만 자주 처리하는 경우
-
요약/ 집계 정보가 자주 요구되는 경우
-
반정규화 절차
- 대상조사 및 검토 : 데이터 처리 범위, 통계성 등을 확인해서 반정규화 대상을 조사함.
- 다른 방법 검토 : 다른 방법이 있느 지 검토
- 반정규화 수행 : 테이블 속성, 관계 등을 반정규화함.
클러스터링 : 인스트 정볼르 저장할 떄 물리적으로 정렬해서 저장하는 방법
3 반정규화 기법
(1) 계산된 칼럼 추가
- 배치 프로그램으로 미리 계산하고 그 결과를 특정 칼럼에 추가한다.
(2) 테이블 수직분할
- 하나의 테이블을 두 개의 테이블로 분할함.
(3) 테이블 수평분할
- 하나의 테비을에 있는 값을 기준으로 테이블을 분할
파티션 기법
-
Range Partition : 데이터 값의 범위를 기준으로 파티션을 수행한다.
-
List Partition : 특정한 값을 지정하여 파티션을 수행한다.
-
Hash Partition : 해시 함수를 적용하여 파티션을 수행한다.
-
Composite Parittion : 범위와 해시를 복합적으로 사용하여 파티션을 수행한다.
-
파티션 테이블의 장점
-
데이터 조회시에 엑세스 범위가 줄어들기 떄문에 성능이 향상된다.
-
데이터가 분할되어 있기 떄문에 입출력 성능이 향상된다.
-
각 파티션을 독립적으로 백업 및 복구가 가능하다.
(4) 테이블 병합
-
1대 N 관계의 경우 많은 양의 데이터 중복이 발생함.
-
슈퍼 타입 과 서브타입 관계가 발생하면 테이블을 통합하여 성능을 향상시킴.
-
슈퍼타입 및 서브 타입 변환 방법
- OnetoOne Type : 슈퍼타입과 서브타입을 개별 테이블로 도출 / 테이블의 수가 많아서 조인이 많이 발생하고 관리가 어려움
- Plus Type : 슈퍼 타입과 서브 타입 테이블로 도출 / 조인이 발생하고 관리가 어려움
- Singel Type : 슈퍼 타입과 서브 타입을 하나의 테이블로 도출 / 조인 성능이 좋고 관리가 편하지만 입출력 성능이 나쁘다.
004 분산 데이터베이스
1 분산 데이터베이스
-
물리적으로 떨어진 데이터베이스에 네트워크로 연결하여 단일 데이터베이스 이미지를 보여주고 분산된 작업 처리를 수행하는 데이터 베이스. 투명성이 제공되야 분산된 지 확인 가능
-
분산 데이터베이스의 투명성 종류
- 분할 투명성
- 위치 투명성
- 지역 사상 투명성
- 중복 투명성
- 장애 투명성
- 병행 투명성
2 분산 데이터베이스 설계 방식
(1) 상향식 설계 방식
지역 스키마 작성 후 향후 전역 스키마를 작성하여 분산 데이터 베이스를 구축
(2) 하향식 설계 방식
전역 스키마 작성 후 해당 지역 사상 스키마를 작성하여 분산 데이터베이스를 구축함.
사용자
전역 스키마
지역 사상 스키마
지역 DBMS 1
지역 DB
- 분산 데이터베이스 장점과 단점
- 장점 : 신뢰성과 가용성 높은ㅁ/ 빠른 응답 / 용량 확장
- 단점 : 관리와 통제가 어렵다. / 무결성 관리가 어렵다 / 설계가 복잡함
'Develope_MySQL' 카테고리의 다른 글
[SQLD] SQL D 정리 - 데이터 모델링의 이해 -1 (0) | 2021.02.08 |
---|