3. 데이터 입/출력 구현
- 데이터 모델: 현실 세계의 정보를 컴퓨터에 표현하기 위해 단순화, 추상화 하여 체계적으로 표현한 개념적 데이터 모형이다.
- 데이터 모델 구성 요소: 개체, 속성, 관계
- 데이터 모델 종류
- 개념적 데이터 모델: 인간의 이해를 돕기 위해 표현
- 논리적 데이터 모델(defalut): 컴퓨터의 이해를 돕기 위해 표현
- 물리적 데이터 모델: 개체->테이블, 속성->컬럼, ->관계->기본키,외래키
- 데이터 모델 표시할 요소: 구조(개체들간의 관계), 연산(db의 데이터 처리, db조작하는 기본 도구), 제약조건
- 이상: 테이블에서 일부 속성의 종속으로 인해 데이터의 중복이 발생하고 중복으로 인해 테이블 조작에 문제가 발생하는 것
- 삽입 이상: 원치 않는 값으로 인해 삽입을 못하는 것
- 삭제 이상: 연쇄 삭제
- 갱신 이상: 일부만 갱신되어 정보의 불일치성 오는거
- 함수적 종속: 속성 X(결정자)의 값에 대해 속성 Y(종속자)의 값이 오직 하나만 연관되어 있는 경우 X(결정자)->Y(종속자)
- 완전 함수적 종속: 기본키(X,Y)(복합키)가 모두 있어야 종속 되는 경우
- 부분 함수적 종속: 기본키(X,Y)중 하나에만 종속 되는 경우
- 정규화: 테이블의 속성이 종속적인 관계를 갖는 특성을 이용해 테이블을 무손실 분해하는 것
- 도부이결다조
- 도메인이 원자값
- 부분함수적종속제거: 기본키가 2개인 테이블이 2개로 나뉘어지고 한쪽은 기본키2개 한쪽은 기본키1개로 나뉨
- 이행종속제거: 기본키가 1개이고, 기본키가 아닌애가 기본키가 됨. A->B이고,B->C일때 A->C이다
- BCNF : 기본키가 2개이고, 기본키가 아닌애가 기본키가 됨. 기본키 였던애는 기본키속성 제거 결정자이면서 후보키가 아닌 것 제거(모든 결정자가 후보키)
- 다치종속(Aㅡ>->B) : 기본키가 (A,B,C)일 때 (A,C)에 대응하는 B가 A에만 종속되고 C에는 무관하면 B는 A에 다치종속 Aㅡ>->B
- 조인종속이용
- 반정규화: 성능향상, 편의성을 위해 정규화된 데이터 모델을 통합, 분리, 중복하는 것으로 의도적으로 정규화 원칙을 위배하는 행위
- 테이블 통합: 두 테이블이 조인 되는 경우가 많을 때 사용
- 테이블 분할: 수직분할(속성이 많아서 속성을 기준으로 분할), 수평분할(레코드기준으로 분할)
- 중복테이블 추가: 특정범위, 넓은범위의 데이터를 자주 처리하는 경우, 정규화로 인해 느려진 경우
- 중복속성 추가: 데이터를 조회하는 경로를 단축하기위해 사용 (조인이 자주발생하는 경우, 접근 경로가 복잡한 속성인 경우에 사용)
- 물리 데이터모델
- 로우(튜플, 인스턴스, 어커런스)
- 컬럼, 기본키, 외래키
- 슈퍼타입 기준 테이블 변환: 서브타입을 슈퍼타입에 병합
- 서브타입 기준 테이블 변환: 슈퍼타입을 각각의 서브타입에 추가
- 개별타입 기준 테이블 변환: 슈퍼타입, 서브타입 각각의 개별적인 테이블로 변환
- O가 있는 쪽에 외래키 추가
- 인덱스 설계: 레코드에 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조
- 분포도가 좁은 테이블 (분포도 = 컬럼값의 평균 ROW 수/ 테이블의 ROW수) * 100)
- table scan: 모든 테이블을 확인 하는 것
- 클러스터드 인덱스: 인덱스의 순서와 레코드의 순서가 일치하는 것 (<-> 넌클러스터드 인덱스 :인덱스의 키값만 정렬되어 있고 실제 데이터는 정렬되어 있지 않은 것)
- 트리 기반 인덱스: 인덱스를 저장하고 있는 블록들이 트리 구조임 (B+ 트리, B 트리)
- 비트맵 인덱스: 인덱스 컬럼의 데이터를 Bit값(0,1)로 변환하여 인덱스 키로 사용
- 함수 기반 인덱스: 특정함수나 수식 이용, B+트리 인덱스 또는 비트맵 인덱스 생성해서 사용
- 비트맵 조인 인덱스: 조인된 객체로 구성된 인덱스
- 도메인 인덱스: 개발자가 직접 인덱스를 만들어 사용
- 뷰 설계: 접근이 허용된 자료만 제한적으로 보여주기 위한 가상 테이블, 물리적으로 존재하지는 않지만 데이터의 논리적 독립성을 제공한다 (create view 뷰이름 (뷰속성) as select (컬럼명) from~)
- 클러스터: 데이터 저장 시 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 방법
- 분포도가 넓은 테이블 , 자주 조인되는 테이블
- 데이터 조회속도는 향상, 데이터 입력, 수정, 삭제 성능은 저하
- 파티션 설계 : 대용량의 테이블이나 인덱스를 나누는 것
- 범위 분할: 지정한 열의 값 기준으로 나눔
- 해시 분할: 해시 함수를 적용한 값을 기준으로 나눔(고르게 분산됨)
- 조합 분할: 범위 분할 + 해시 분할
'IT > 정보처리기사실기 공부' 카테고리의 다른 글
실기 정리 노트 4 (0) | 2020.11.25 |
---|---|
실기 정리 노트 3 (0) | 2020.11.25 |
실기 정리노트 1 (0) | 2020.11.24 |
[정보처리기사 실기] 애플리케이션 테스트 관리 (0) | 2020.10.06 |
[정보처리기사실기] 화면 설계 (0) | 2020.10.05 |