- 이상현상 Anomaly
- 함수적 종속성
- A 를 통해 B 가 정해진다면 이를 A→B 로 표현하고 이때 A 를 결정자라 한다.
- 제1정규화
- pk 를 잡는 과정
- 한개의 속성으로 유일성 최소성 만족하는 기본키 생성 가능?
- 없으면 복합키로 변경
- pk의 유일성을 만족시키자
- 제2정규화
- pk, fk 모두에 의해 다른 칼럼들이 장악되고 있느냐
- 부분 함수 종속성
- 기본키가 2개 이상의 칼럼으로 이루어진 경우에만 발생
- 기본키가 아닌 칼럼은 기본키의 한 칼럼만 사용해서 알아낼 수 있으면 안된다.
- 제3정규화
- 일반 속성들 중에 다른 일반 속성을 포함하는 속성이 있는지
- 이행 함수 종속성
- 기본키를 제외하고 칼럼간에 종속성이 발생하는 경우
- BCNF
- 복합키의 일부가 다른 속성에 종속되는 경우
- BCNF 위배하는 X→Y 에 대해 테이블을 생성하고 Y를 제외한(X는 포함) 테이블을 남긴다.
- 정규화의 문제점
- 중복 데이터를 많이 제거하지만 조인 시에 리소스가 많이 소모된다.
- 인덱스와 옵티마이저를 통해 비효율을 해결
- 반정규화
- 수행속도가 너무 느릴때
- 반복 수행되는 데이터
- 요약/집계가 많이 사용될때
- 다량의 범위를 자주 처리해야할 때
- 반정규화 절차
- 대상 조사 및 검토 - 다른 방법 검토(뷰,클러스터링,인덱스 등) - 반정규화 수행
- 클러스터링 인덱스
- 인덱스 정보를 저장할때 물리적으로 정렬해서 저장 → 조회시 인접 블록들을 연속적으로 읽기 때문에 성능이 향상된다.
- 반정규화 기법
- 계산된 칼럼 추가
- sum avg 등을 미리 계산하고 그 결과를 특정 칼럼에 추가
- 테이블 수직분할
- 하나의 테이블을 두 개 이상의 테이블로 분할(칼럼123/칼럼456 나눠서 테이블 생성)
- 테이블 수평분할
- 테이블 병합
- 슈퍼타입과 서브타입
- onetoone(슈퍼타입,서브타입1,서브타입2..)/plus(슈퍼타입,서브타입)/single(하나의 테이블)
- 파티션 기법
- 하나의 테이블을 데이터값 범위, 특정 값, 해시함수 등을 이용해 여러 개의 데이터파일로 분산 저장하여 데이터 조회시 액세스 범위가 줄어들기때문에 성능이 향상된다.
- 중앙 집중형 데이터베이스
- 하나의 물리적 시스템에 dbms를 만들고 여러 사용자가 이에 접속하여 db를 사용
- 분산 데이터베이스
- 개인이 서버를 통해 단일 데이터베이스에 접근, 사용자는 이것이 네트워크로 분산되어있는지를 확인 불가 → 투명성
- 분산 데이터베이스 구축 방식