DataBase Flashcards Preview

PE > DataBase > Flashcards

Flashcards in DataBase Deck (122)
Loading flashcards...
61

Apache Chukwa

▣ 개념
- 분산된 머신에서 데이터를 수집하고, 수집된 데이터를 빠르게 처리 (유연하면서 강력한 플랫폼)
- 데이터를 수집하는 단계와 처리하는 단계를 파이프라인 형태로 구조화
▣ 구조
- Data : App1 log, App2 log
- Agent : 호스트 당 하나
- Collector : Agent 100개당 하나
- HDFS (Data Sink , Map-Reduce Jobs, Structured Storage)
▣ 주요요소
- Agent : 각 머신에서 실행되고, 데이터 전송
- Collector : 에이전트로부터 데이터를 받아 안정적인 스토리지에 저장
- MapReduce : 데이터 파싱 및 아카이빙
- HICC(Hadoop Infrastructure Care Center) : 포털 형식의 인터페이스로 데이터 표시

62

빅데이터 수집 절차와 기술

▣ 수집절차
1) 수집 대상 데이터 선정
- 수집 데이터 도출
- 목록 작성
2) 수집 세부 계획 수립
- 데이터 소유기관 파악 및 협의
- 데이터 유형 분류 및 확인
- 수집 기술 선정
- 수집 주기 결정
- 수집 계획서 작성
3) 데이터 수집 실행
- 사전 테스트 진행
- 데이터 수집 시행
- 데이터 수집 후 처리
▣ 수집 기술
- 크롤링
- FTP
- Open API
- RSS
- Streaming
- Log Aggregator
- RDB Aggregator
▣ 데이터 유형별 수집기술
1) 정형 데이터
- RD, 스프레드 시트
- ETL, FTP, Open API
2) 반정형 데이터
- HTML, XML, JSON, 웹문서, 웹로그, 센서 데이터
- Crawling, RSS, Open API, FTP
3) 비정형 데이터
- 소셜 데이터, 문서(워드, 글), 이미지, 오디오, IoT
- Crawling, RSS, Open API, Streaming, FTP

63

데이터베이스의 키

▣ 키의 정의
- 튜플을 유일하게 식별할 수 있는 Attribute 집합을 그 릴레이션의 키라 함
- 여러 개의 집합체를 담고 있는 하나의 엔티티 타입에서 각각의 엔티티를 구분할 수 있는 결정자
▣ 종류
- 슈퍼키 : 유일성만 만족
- 후보키 : 유일성, 최소성 만족
- 기본키 : 후보키 중 선정
- 대체키 : 후보키 중 기본키를 제외한 나머지 후보키
- 외래키 : 릴레이션 R2의 한 속성이나 속성 조합이 릴레이션 R1의 기본 키인 경우
▣ Key 결정 및 도출 과정
1) 결정자 도출 : 유일성 검증
2) 슈퍼키 선정 : 최소성 확인
3) 후보키 선정 : 엔터티 대표성
4) 기본키 결정

64

기본키

▣ 정의
- 후보키 중 데이터베이스 설계자가 선정하는 하나의 키
- 기본키는 엔티티 타입을 대표하는 주 식별자
▣ 주식별자와 보조식별자
- 주식별자 : PRIMARY KEY
- 보조식별자 : UNIQUE INDEX
▣ 특징 (유최불존)
- 유일성 : 유일한 식별자
- 최소성 : 최소 속성 구성
- 불변성 : 식별자 불변
- 존재성 : 식별자 값의 존재
▣ 기본키의 선정 기준
1) 속성의 사용 빈도
- 빈번하게 사용되는 속성
2) 명칭, 내역 등의 이름 속성은 제외
- 방안1 : 부서에 부서코드를 부여하여 주 식별자로 사용
- 방안2 : 부서인련번호를 주 식별자, 부서명은 보조 식별자로 선정
3) 과도한 복합키 배재
- 주식별자 속성 개수 최대 7~8개 이내로 유지
- 방안 : 주식별자 속성 수가 8개 이상 시, 모델 단순화를 위해 새로운 식별자를 주식별자로 선정

65

외래키

▣ 정의
- 한 테이블 내의 필드 또는 필드의 결합으로서 반드시 다른 테이블의 기본키와 대응되거나 또는 널값을 가지는 역할을 하는 키
▣ 사용 목적
1) 데이터 모델의 운영규칙 명시
- 엔터티간 운영규칙
2) 관계의 명확성
- 부모-자식 관계 확실화
3) 데이터의 중복성 확인
- 수퍼타입-서브타입 재검토
4) 테이블간 참조 메커니즘
- 관련 테이블 간 참조장치
5) 엔티티의 의미부여
- 의미 있는 이름 부여
6) 데이터의 참조 무결성
- 허용된 데이터 수치만 저장
- 참조 테이블과 연결고리를 통해 무결성 유지

66

무결성을 위한 Key 제약

▣ 키워드 : 유최 후기대 참범
▣ 데이터 모델링의 무결성을 위한 Key의 제약
1) 본질적 제약
- 반드시 주키가 있어야 함
- Primary Key
- Unique Key
- 특성 : 유일성, 최소성
- 종류 : 후보키, 기본키, 대체키
2) 내재적 제약
- DB 스키마에 지정하는 제약
- Foreign Key
- Check, Default, Not Null
- 유형 : 참조무결성 제약 (restrict, cascade, nullify, default), 범위제약 (check, default, Not Null, Rule)
3) 명시적 제약
- 프로그램에 명시

67

System Catalog

▣ 정의
- DBA의 도구로서 데이터베이스에 저장되어 있는 모든 데이터 개체들에 대한 정의나 명세에 대한 정보를 수록한 시스템 테이블 (데이터 사전, Data Dictionary)
▣ 특징
- DBMS가 스스로 생성하고 유지
- 스키마에 대한 정보 제공
- 테이블, 인덱스, 뷰 정보 저장
▣ 구성요소
- 스키마구조 : 테이블명, 인덱스명, 컬럼명, 뷰, 참조관계
- 감사/추적 : 수행이력, 트랜잭션정보, 세션정보
- 사용자 권한 : 접근, 입력, 수정, 삭제 권한
- 질의 최적화기 : Execution Plan
- 컴파일러 : DML, DCL

68

함수적 종속성

▣ 정의
- 릴레이션 R 에서, 속성 X의 값 각각에 대해 속성 Y의 값이 하나만 연관되는 관계를 Y는 X에 함수적 종속이라고 하고, X->Y로 표현
▣ 중요성
- 갱신이상 제거
- 제2 정규형에서 BCNF 까지 적용
▣ 함수적 종속성의 추론규칙(암스트롱의 법칙)
(재증이 연분의)
1) 기본
- 재귀 : Y가 X의 부분집합이면 X->Y 이다
- 증가 : X->Y 이면, XZ->YZ 이다
- 이행 : X->Y이고, Y->Z이면, X->Z이다
2) 부가
- 연합 : X->Y이고, X->Z이면, X->YZ 이다.
- 분해 : X->YZ 이면, X->Y 이고, X->Z 이다
- 의사이행 : X->Y 이고, YW->Z 이면, XW->Z 이다
▣ 다음 함수의 종속성을 기반으로 키를 도출하시오.
- FD1 : A->B
- FD2 : A->D
- FD3 : DK->H
- FD4 : DK->Z
▣ 주어진 사례에서 Key 결정
1) FD5 (합집합)
- FD1과 FD2에서, A->DB
2) FD6 (의사이행)
- FD2와 FD3에서, AK->H
3) FD7 (의사이행)
- FD2와 FD4에서, AK -> Z
4) 유일성 만족
- 7개의 종속성에서 유일하게 독립변수로 나온 것은 A, D, K 임
5) 최소성 만족
- AD, DK, AK 가 후보키가 되는데 3개중에서 완전 함수종속성은 AK 가 됨. 기본키는 AK 임
※ D는 FD에서 종속변수 위치에 존재하는 경우가 있어 AD, DK는 완전함수족속성을 위배

69

관계대수

▣ 정의
- 관계형 데이터베이스에서 원하는 정보와 그 정보를 어떻게 유도하는가를 기술하는 절차적 정형 언어
▣ 용도
- SQL 이론의 기초
- SQL 구현 최적화
▣ 종류
1) 집합연산자
- 합집합(UNION, U)
- 교집합(INTERSECT, ∩)
- 차집합(DIFFERENCE, -)
- 카티션 프로덕트(CARTESIAN PRODUCT, X)
2) 순수연산자
- 실렉트(SELECT, σ(시그마))
- 프로젝트(PROJECT, π(파이))
- 조인(JOIN, ▷◁)
- 디비전(DIVISION, ÷)
▣ 관계대수 표현
1) 과목코드가 20인 과목에서 등록한 학생의 이름, 학년 조회
- π이름,성적(σ과목코드=20(학생 ▷◁n 등록))
2) 학변 100, 이름 '홍길동', 학년 4, 학과 '컴퓨터' 인 학생을 학생테이블에 삽입
- 학생 U (}
3) 과목 릴레이션에서 과목이름이 'DB'인 릴레이션을 선택하여 원래의 과목 릴레이션에서 제거
- 과목 - (σ과목이름='DB'(과목))

70

인덱스

▣ 정의
- 데이터 검색 속도 향상을 위하여 테이블에 저장된 row를 식별 가능하도록 구조화된 형태의 테이블과 별도의 체계를 저장한 데이터베이스 오프젝트
▣ 특징
- 조회 성능향상
- 독립적 인덱스 저장
- 트리 알고리즘
- Trade-off
▣ 필요성
- 개발자 : 개발생산성 향상, 유지보수 비용절감
- 사용자 : 응답속도 향상, 고객만족도 개선
- 시스템 : 가용성 향상, 신뢰성 증진
▣ 인덱스 구조의 종류
1) 형태기준
- 트리 인덱스 : B-Tree
- 해쉬 인덱스 : Hash Table
- 비트맵 인덱스 : ROWID
2) 목적
- 함수 인덱스 : 함수결과 인덱스
- 조인 인덱스 : DW 컬럼 조인
- 도메인인덱스 : 사용자정의
3) 구조
- 정적 인덱스 : 인덱스의 내용은 변하지만 구조는 변경되지 않는 기법
- 동적 인덱스 : 빈 공간을 미리 준비해 두는 기법
▣ 인덱스의 유형
1) 물리적
- Clustered : 레코드 순서와 인덱스 페이지 정렬 순서와 동일
- Non-Clustered : 물리적 순서가 인덱스의 엔트리 순서와 상관없음
2) 밀집도
- Dense : 레코드 하나에 하나의 인덱스
- sparse : 레코드 그룹에 하나의 인덱스
3) 구현방식
- bitmap : bit로 맵을 만드는 인덱스
- function : 함수 표현식으로 인덱스 생성
4) 형태
- tree : tree 구조를 이용한 인덱스
- hash : 해시함수를 이용한 인덱스
▣ 인덱스 설계순서
1) 인덱스 대상 선정
- 대상 컬럼 선정
- 대상 테이블 선정
- PK 인덱스 선정
- FK 인덱스 선정
2) 인덱스 최적화
- 인덱스 효율 검토
- 인덱스 데이터 타입 적용
- 인덱스 정렬
- 클러스터링 검토
3) 인덱스 정의서 작성
- 엔터티 타입명
- 인덱스 스페이스
- 인덱스 유형
- 정렬
- 구분
▣ 인덱스 선정기준

▣ 인덱스 선정시 고려사항

71

데이터베이스 논리적 인덱스

▣ Clustered Index
- 데이터의 레코드 순서가 인덱스 페이지의 정렬 순서와 동일하거나 비슷하게 만들어진 인덱스
- 인덱스를 기준으로 입력, 삭제, 수정 할 때마다 행들이 다시 배열
- 데이터 변경 시에는 속도가 느리지만 범위 검색을 할 때는 매우 빨라서 검색에 유용
▣ Non-Clustered Index
- 데이터 레코드의 물리적 순서가 인덱스의 엔트리 순서와 상관없이 저장되도록 구성된 인덱스
▣ Dense Index
- 데이터 레코드 하나에 대해 하나의 인덱스 엔트리가 만들어지는 인덱스
▣ Sparse Index
- 데이터 파일의 레코드 그룹, 또는 데이터 블록에 하나의 엔트리가 만들어지는 인덱스
▣ Unique Index
- 인덱스 컬럼에 대해 중복된 값을 허용하지 않음
- 인덱스 키는 연관된 테이블의 하나의 행만 가리킴
- 테이블에서 기본키와 고유키 제약조건을 정의하면 인덱스가 묵시적으로 생성
▣ Non-Unique Index
- 인덱스 컬럼에 대해 중복된 값을 허용
- 인덱스 키는 연관된 테이블의 여러 행을 가리킬 수 있음
▣ Single Index
- 하나의 컬럼으로 구성된 인덱스
▣ Composite Index
- 여러 개의 컬럼 조합으로 생성된 인덱스
- 조합 인덱스는 최대 32개의 컬럼까지 구성가능
▣ Function-based index
- 함수나 표현식의 계산 값으로 인덱스 생성
- 함수의 리턴 값은 DETERMINISTICS로 선언되어야 함
- Cost-based에서만 사용 가능함

72

데이터베이스 물리적 인덱스 유형

▣ Partition Index
- 큰 테이블의 인덱스 엔트리를 저장하는데 사용
- 인덱스까지 화일별로 다르게 저장 (대용량 테이블에서만 효과)
- 인덱스 값에 따라 여러 세그먼트에 나누어 보관
▣ Bitmap Index
- Bit로 맵을 만드는 인덱스 (컬럼 기반의 DBMS)
- Cardinality(한 릴레이션을 구성하는 투플의 수)의 개수로 맵을 만듦
▣ Reverse Index
- 연속된 데이터를 지우거나 관리하는 경우에는 이전의 데이터를 지워버리면 한쪽의 데이터가 지워진 것이기 때문에 인덱스의 밸런스가 깨져 효율이 좋지 않음
- 해당 컬럼의 값을 뒤집어서 그 값을 ROWID와 매칭시켜 인덱스를 만들면, 후에 연속된 데이터가 지워지더라도 균등하게 지워지기 때문에 밸런스 유지가 쉬움
▣ Descending Index
- 일반적인 인덱스는 기본적으로 오름차순이나 내림차순으로 데이터 정령

73

Clustered Index (비교)

▣ 정렬방식
- 인덱스 키 값의 순서에 따라 정렬되어 있으며 데이터 삽입, 삭제시 데이터 재 정렬해야 함
▣ 검색속도
- 실제 데이터가 순서대로 저장되어 있어 원하는 데이터를 빠르게 찾을 수 있다.
▣ 인덱스생성수
- 한 개의 릴레이션에 하나의 인덱스만 생성할 수 있음
▣ 리프 페이지
- 실제 데이터
▣ 조회성
- 적은 양이든, 많은 양이든 유리함
▣ 인덱스 크기
- 비교적 작음
▣ 선택도
- 30% 정도면 사용함
create table tbl
(
a int primary key, --> 자동 클러스터드
인덱스가 만들어짐
b int unique, -->자동 넌클러스터드
인덱스가 만들어짐
c int unique,
d int
)

74

Non Clustered Index (비교)

▣ 정렬방식
- 키값만 정렬되어있으며 실제 데이터는 정렬되지 않음
▣ 검색속도
- 인덱스검색 후 실제 데이터 위치를 확인하여 클러스터드 인덱스에 비해 속도가 느림
▣ 인덱스생성수
- 한 개의 릴레이션에 최대 249개 까지 생성가능
▣ 리프 페이지
- 실제 데이터 주소
▣ 조회성
- 비교적 적은 양의 데이터
▣ 인덱스 크기
- 클러스터드 인덱스 보다 크다
▣ 선택도
- 3% 이내면 사용함
create table tbl2
(
a int primary key nonclustered, --> 자동
클러스터를 넌 클러스터로 만듦
b int unique clustered, -->자동 넌클러스터드를
클러스터드로 만듦
c int unique,
d int
)

75

정적 인덱싱 (비교)

▣ 개념
- 데이터 파일에 레코드가 삽입되거나 삭제됨에 따라 인덱스의 내용은 변하지만 인덱스 구조 자체는 변경되지 않게 하는 인덱싱 기법
▣ 특징
- 데이터파일에 새로운 레코드를 저장할 공간이 없으면 오버플로우 영역 사용
- 논리적인 키 값의 분포보다는 기억장소의 물리적인 특성(실린더, 트랙)에 맞게 인덱스 구성
▣ 구성도
- 색인영역 (트랙/실린더/마스터 색인)
- 기본영역
- 오버플로우영역
▣ 오버플로우 처리 방법
- 오버플로우가 발생하면 오버플로우 영역에 체인으로 연결
- 오버플로우 체인에 연결되어 있는 레코드들은 오버플로우 영역 내에서 체인을 따라서 순차검색
▣ 장단점
- 보조기억장치의 물리적 특성에 맞추어 구성하므로 효율적인 액세스가 가능
- 삽입/삭제 등 파일의 변화를 오버플로우 구역을 이용하여 수용하므로, 시간이 흐름에 따라 파일의 성능이 저하
- 유형이 다른 장치로 복사 어려움
▣ 설계 시 고려사항
- 인덱스 구역/기본데이터구역/오버플로우 데이터 구역의 크기
- 인덱스의 레벨
- 기본 데이터구역의 인덱스 블로킹
▣ 사례
- IBM의 ISAM 파일

76

동적 인덱싱

▣ 정의
- 인덱스와 데이터 파일을 블록으로 구성하고, 각 블록에는 나중에 레코드가 삽입될 것을 감안하여 빈 공간을 미리 준비해두는 인덱싱 기법
▣ 특징
- 하나의 블록이 가득 차게 되면 동적으로 분열 (Split)
- 일정수의 레코드를 유지 못하면 병합 (merge)
- 기본 구역과 오버플로우 구역을 구분하지 않음
▣ 구성도
- 색인영역
- 기본영역
▣ 오버플로우 처리 방법
- 오버플로우가 발생하면 데이터 블록을 분할하고 인덱스 수정
- 오버플로우에 따라 새로운 인덱스 항목이 만들어짐
▣ 장단점
- 오버플로우 체인을 사용하지 않으므로 보다 효율적으로 레코드를 검색
- 레코드를 삭제하면 그 공간을 재사용
- 필요할 때마다 부분적을로 파일로
▣ 설계 시 고려사항
- 데이터 블록의 크기
- 인덱스 블록의 크기
- 초기 인덱스 레벨 수
- 최대 인덱스 레벨
▣ 사례
- IBM의 VSAM 파일

77

B-Tree (비교)

▣ 개념
- Root Block, Branched Block, Leaf Block 으로 구성되어 Branched Block의 군형을 유지하는 트리구조
▣ 인덱스 노드 구조
- Entry Header
- Key 값의 쌍
- ROWID
▣ 사용 환경
- OLTP
▣ 검색 속도
- 소량의 데이터를 검색하는데 유리
▣ 분포도
- 데이터 분포도가 높은 컬럼에 유리
▣ 장점
- 입력, 수정, 삭제가 용이함
▣ 단점
- 스캔 범위가 넓을 때 랜덤 I/O 발생

78

비트맵 인덱스 (비교)

▣ 개념
- 전체 로우의 인덱스 컬럼 값을 0과 1을 이용하여 저장
▣ 인덱스 노드 구조
- Entry Header
- Key 값의 쌍
- 시작 ROWID
- 끝 ROWID
- Bitmap Segment
▣ 사용 환경
- DW, DM
▣ 검색 속도
- 대량의 데이터를 읽을 때 유리
▣ 분포도
- 데이터 분포도가 낮은 컬럼에 유리
▣ 장점
- 비트 연산으로 OR연산, NULL값 비교 등에 강함
▣ 단점
- 전체 인덱스 조정의 부하로 입력, 수정, 삭제가 어려움

79

데이터 독립성

▣ 개념
- 하위 단계의 데이터 구조가 변경되더라도 상위 단계에 영향을 미치지 않는 속성
▣ 데이터 독립성의 종류
- 논리적 독립성 : 응용프로그램의 영향없이 논리적 구조 변경
- 물리적 독립성 : 내부스키마 변경 시 외부/개념에는 영향 없음
▣ 데이터 독립성을 위한 3단계 데이터 구조
1) 외부 스키마
- DB에 대한 각 사용자 View
2) 개념 스키마
- 조직전체 DB 기술
- 접근권한, 보안정책, 무결성 규칙 포함
3) 내부 스키마
- DB가 물리적으로 저장된 형식

80

데이터 무결성

▣ 정의
- 데이터의 중복이나 누락이 없는 정확성과 원인과 결과 의미의 연속성이 보장되는 일관성이 확보된 상태
- 정확성, 유효성, 일관성, 신뢰성을 위해 무효 갱신으로 부터 데이터 보호
▣ 중요성
- 의미 있는 가치 제공
- 정확하고 오류 없는 데이터
▣ 데이터 무결성의 종류
1) 개체무결성(Entity Integrity)
- 기본키 속성은 Not Null
- 기본키는 유일성 보장, 최소한의 집합
2) 참조무결성(Referential Integrity)
- 외래키는 참조할 수 없는 값을 가질 수 없음
- 기본키 값이거나 널 값
3) 속성 무결성(Attribute)
- 컬럼의 지정된 데이터 형식 만족
4) 사용자 정의 무결성
- 업무 규칙 준수
5) 키 무결성(Key)
- 같은 key 값 튜플 허용 안함
- 하나의 릴레이션에는 적어도 하나의 키 존재 해야함
6) 범위무결성(Domain)
- 정의된 범위에서 모든 열 선언되도록 규정
▣ 데이터 무결성 유지 방법
1) 선언적 방법 (DBA)
- Primary Key
- Foregin Key
- Unique
- Check
- Data Type
- Default
2) 절차적 방법 (개발자)
- Trigger
- Stored Procedure
- Application

81

정규화

▣ 정의
- 데이터의 이상현상을 제거하기 위해 데이터의 함수적 송속성이나 조인 속성을 이용하여 분리, 통합하는 방밥
▣ 목적
- 데이터 중복의 최소화
- 이상현상 발생 방지
- 데이터 구조의 안정성 유지
- 종속성 제거
- 관리 효율 향상
▣ 특징
- 종속관계를 이용하여 엔티티 타입을 정제
- 수학적인 접근 방법을 통해 분석하는 방법
▣ 원칙
- 분리의 원칙
- 정보의 무손실
- 데이터 중복성 감소
▣ 함수적 종속성(FD : Functional Dependency)
- 기준값을 결정자라 하고, 종속되는 값을 종속자
- 결정자(X) -> 종속자(Y)
- 주민등록번호 -> (이름, 출생지, 주소)
▣ 함수적 종속성의 종류
1) 완전 함수적 종속성
- {학번, 과목번호} -> 성적
2) 부분 함수적 종속성
- 결정자의 일부가 종속자를 종속
- 학번 -> 학과
3) 이행 함수적 종속성
- 기본키가 아닌 값이 다른 기본키가 아닌 값을 종속
- 학번 -> 지도교수
- 지도교수 -> 학과
- 학번 -> 학과
4) 결정자 함수 종속성
- 기본키가 아닌 속성이 기본키의 일부를 종속
- 교수 -> 과목
▣ 이상현상
- 데이터의 중복성으로 인해 릴레이션을 조작할 때 발생하는 비합리적 현상
- 갱신이상, 삭제이상, 삽입이상
▣ 정규화 단계
- 1차 정규화 : 반복되는 속성 및 그룹 속성 제거
- 2차 정규화 : 부분 함수 종속성 제거
- 3차 정규화 : 이행함수 종속성 제거
- BCNF : 결정자 함수 종속성 제거
- 4차 정규화 : 다중값 종속성 제거
- 5차 정규화 : 조인 종속성 제거

82

암스트롱의 공리

▣ 개념
- 릴레이션 R에 대해 X, Y, Z 라는 애트리뷰트의 집합이 주어졌을 경우 여러 가지 함수종속의 성질을 유도해 낼 수 있는 추론 규칙
▣ 특징
- 정규화에 이용
- 건전성 : 잘못된 함수종속 생성하지 않음
- 완전성 : 집합 F에 대해 모든 F+ 찾을 수 있음
▣ 추론규칙
1) 기본규칙
- 반사 : Y가 X의 부분집합이면 X->Y 이다
- 확대 : X->Y 이면 XZ->YZ 이다
- 이행 : X->Y, Y->Z 이면 X->Z 이다
2) 유도된 규칙
- 합집합 : X->Y 이고 X->Z이면 X->YZ 이다
- 분해 : X->YZ 이면 X->Y, X->Z 이다
- 의사이행 : X->Y, YZ->W 이면 XZ->W 이다

83

반정규화

▣ 정의
- 적정 수준의 정규화 이후, 질의 성능 향상을 위해, 일부의 데이터에 대해 중복을 허용하는 정규화의 역작업
▣ 검토기준
- 정합성과 데이터 무결성, 성능과 테이블 단순화의 Trade Off 검토
▣ 이유
- 과도한 디스크 I/O 성능저하
- 경로가 멀어진 조인 성능저하
- 과도한 정규화로 데이터 분산화
- 고객요구 충족 어려운 경우
- Query를 이용한 대용량 검색/통계처리/넓은범위 처리시
▣ 절차
1) 반정규화 대상조사
- 범위처리 빈도수 조사
- 대량의 범위 처리 조사
- 통계성 프로세스 조사
- 테이블 조인 개수 조사
2) 다른 방법 유도
- 뷰 테이블
- 클러스터링 적용
- 인덱스 적용
- 응용 어플리케이션
3) 반정규화 적용
- 테이블 반정규화
- 속성의 반정규화
- 관계의 반정규화
▣ 반정규화의 유형 (테컬관)(병분추 중파이P응 관)
1) 테이블 반정규화
- 테이블 병합 : 1:1, 1:M, 슈퍼/서브 타입
- 테이블 분할 : 수직/수평 분할
- 테이블 추가 : 중복/통계/이력/부분 테이블 추가
2) 컬럼 반정규화
- 중복컬럼 추가 : 조인감소
- 파생컬럼 추가 : 미리계산
- 이력 테이블 추가 : 최근 값, 시작/종료 일자 추가
- PK에 의한 컬럼 추가 : 복합의미 PK를 일반속성으로 포함
- 응용시스템 오동작을 위한 컬럼 추가 : 이전 데이터 임시적 중복
3) 관계 반정규화
- 중복관계 추가 : 추가관계 설정
▣ 고려사항
- update 기능이 많은 경우 정규화가 유리
- Select 많은 경우 반정규화 고려
- 정규화와 반정규화의 Trade Off
- 가독성 및 유지보수성에 주의
- 반정규화는 성능향상을 위한 우선순위 고려사항 아님

84

테이블 파티셔닝

▣ 정의
- SQL문이나 어플리케이션 수정없이, 큰 테이블이나 인덱스를 관리하기 쉬운 작은 단위로 분할하여 관리하기 위한 물리적 분할 관리 기법
▣ 목적
- 가용성, 관리용이성, 성능향상
▣ 종류
- 레인지 : 년월 분할
- 해쉬 : 컬럼 기준 분할
- 리스트 : 지역별 분할
- 컴포지트 : 레인지 + 해시 등등

85

연결함정

▣ 정의
- 데이터모델링시 개체와 개체사이에 부여하는 관계성 집합의 의미가 모호하여 원하는 결과를 얻을 수 없거나 향후 업무처리에 영향을 미치게 되는 ER모델의 문제점
▣ 유형
- 부채꼴 함정 : 관계성이 모호한 경우
- 균열 함정 : 관계성이 존재하지 않는 경우

86

데이터 모델링

▣ 정의
- 현실 세계의 업무를 추상화하여 데이터베이스의 데이터로 표현하기 위한 설계 과정
▣ 데이터 모델링 4단계
- 요구사항 분석
- 개념 모델링 : 엔티티 추출, 관계 정의
- 논리 모델링 : 스키마 설계, 정규화
- 물리 모델링 : DBMS 종류 결정, 데이터 타입과 사이즈 정의

87

데이터 모델링 - 개념적 모델링

▣ 정의
- 해당 조직의 업무요건을 충족하기 위해서 주제 영역과 핵심 데이터 집합간의 관계를 정의하는 상위 수준의 개략적 데이터 설계 작업
▣ 절차
1) 주제영역 선정 : 상향/하향/혼합
2) 핵심데이터 집합 선정 : 독립, 의존, 연관 데이터 집합 정의
3) 관계 설정 : 1:1, 1:N, M:N
4) 핵섬속성 정의 : 원자단위, 유일값
5) 식별자 정의 : PK, FK

88

데이터 모델링 - 논리적 모델링

▣ 개념
- 개념적 데이터 구조를 목표 데이터 베이스로 구현하기 위한 중간 단계로서 사용자 중심의 논리적 구조를 표현해 가는 과정을 통해 특정 DBMS가 처리할 수 있는 매핑 규칙 및 변환 기술을 적용하여 스키마를 생성하는 단계
▣ 주요 입력 요소
- 개념적 데이터 모델이 매핑규칙으로 적용
- 업무의 운영 요구조건, 자료량과 사용 용도
- 일관성 제약조건
- DBMS의 논리적 구조와 데이터 정의어
▣ 주요 출력 요소
- 특정 DBMS에 의해 구현 될 수 있는 스키마
- 처리 가능한 뷰 및 뷰를 이용한 보안 제약
- 물리적 설계 단계에서 적용될 메뉴얼
- 응용프로그램 설계 및 DB 운영 지침
▣ 주요 Task
- 엔티티 타입 도출 : 기본, 중심, 행위, 엔티티 타입
- 관계 도출 : 엔티티 타입 간 관계
- 식별자 도출 : PK, FK
- 세부사항 도출 : 용어사전, 도메인 정의, 속성의 규칙(기본값, 체크값)
- 정규화 : 1,2,3,BCNF,4,5
- 통합/분할 : 슈퍼/서브 타입
- 데이터 모델 검증 : 엔티티타입, 속성, 관계

89

데이터 모델링 - 물리적 모델링

▣ 정의
- 논리 데이터 모델을 특정 DBMS의 특성 및 성능을 고려하여 효율적이고 구현 가능한 물리적인 스키마를 생성하는 과정
▣ 변환단계
1) 일괄변환
- Entity를 Table로 전환
- 식별자의 PK 정의
- 속성을 컬럼으로 전환
- 관계를 컬럼으로 전환
2) 구조조정
- 슈퍼/서브타입 모델 전환
3) 성능향상
- 반정규화

90

슈퍼타입 서브타입

▣ 개념
- 엔티티 작성시 대부분의 속성이 비슷하고 일부만 다른 여러 엔티티들을 하나로 묶어 통합하는 경우 수행하는 확장형 데이터모델링
▣ 기법
- 통합화와 세분화
ex) 접수 (인터넷, 방문, 전화)
▣ 기법
1) One To One Type : 1:1 타입
2) Plus Type : 슈퍼 + 서브 타입
3) Single Type : All in One 타입