논리 모델을 적용하고자 하는 기술에 맞도록 상세화해 가는 과정
일반적으로 테이블과 개체 명칭을 동일하게 하는 것을 권고한다.
개체는 한글명을 사용, 테이블은 영문명을 사용한다.
개발자와 사용자 간 의사소통을 위해 표준화된 약어 사용을 권고한다.
SQL 예약어를 사용하지 않고, 컬럼 명칭은 짧게, 복합 단어는 미리 정의된 표준에 의해 명명한다.
개체의 UID에 해당하는 모든 속성에 대해 기본키로 선언한다.
Not Null, Unique 등 제약조건을 추가로 정의한다.
- CHAR : 고정 길이 문자열(무조건 자릿수를 채워야 한다.)
- VARCHAR2 : 가변 길이 문자열
Super Type
모든 서브 타입으로 상속되는 공통 속성(일반화)
Sub Type
개체의 전체 집합에서 일부만 모아놓은 부분 속성(상세화)
릴레이션과 릴레이션 사이에 대해 참조의 일관성을 보장하기 위한 조건이다.
두 개의 릴레이션이 기본키, 외래키를 통해 참조 관계를 형성할 경우,
참조하는 외래키의 값은 항상 참조되는 릴레이션에 기본키로 존재해야 한다.
참조되는 릴레이션에서 튜플을 삭제하고, 참조하는 릴레이션에서 해당 튜플을 참조하는 튜플들의 외래 키에 NULL 값을 넣는 옵션
NOT NULL인 경우, 삭제 연산을 거절한다.
검색 연산의 최적화를 위해 DB 내 컬럼에 대한 정보를 구성한 구조
인덱스를 통해 전체 데이터 검색 없이 필요한 정보에 대해 신속한 조회 가능
인덱스 적용 기준: 인덱스의 적정한 분포도는 10~15%
분포도 =
(1 / 컬럼 종류) X 100%
가상의 테이블
뷰 사용에 따라 수행 속도에 문제가 발생할 수 있다.
뷰의 조건은 최적의 액세스 경로를 사용할 수 있도록 한다.
인덱스의 단점을 해결한 기법으로, 분포도가 넓을수록 오히려 유리
액세스 기법이 아니라 액세스 효율 향상을 위한 물리적 저장 방법
분포도가 넓은 테이블의 클러스터링은 저장 공간의 절약 가능
대량의 범위를 자주 액세스하는 경우
인덱스를 사용한 처리 부담이 되는 넓은 분포도에 활용
여러 개의 테이블이 빈번하게 조인을 일으킬 때 활용
대용량의 테이블을 파티션이라는 보다 작은 논리적인 단위로 나누어 성능 저하 방지 및 관리를 상대적으로 보다 용이하게 하고자 하는 기법
장점: 성능 향상, 가용성 향상, 백업 가능, 경합 감소
파티션 키의 해시 함수 값에 의한 파티셔닝
균등한 데이터 분할이 가능하고, 질의 성능이 향상 가능하다.
파티션을 위한 범위가 없는 데이터에 적합하다.
라운드로빈 분할로 회전하면서 새로운 행이 파티션에 할당되는 방식
행의 고른 분포를 원할 때 사용
정확한 용량을 산정하여 디스크 사용의 효율을 높인다.
업무량이 집중되어 있는 디스크를 분리하여 설계한다.
입출력 경합을 최소화하여 데이터의 접근 성능을 향상시킨다.
디스크 구성에 따라 테이블스페이스 개수와 사이즈 등을 결정한다.
파티션 수행 테이블은 별도로 분류한다.