공부하는 스누피

[정보처리기사] 데이터 입출력 구현 정리 본문

CS/데이터베이스

[정보처리기사] 데이터 입출력 구현 정리

커피맛스누피 2020. 11. 26. 13:03

개념 데이터 모델링

: 주제 영역과 핵심 데이터 집합간의 관계를 정의하는 모델링으로, 전체 모델의 골격에 해당한다.

논리 데이터 모델링

: 개념 모델로부터 업무영역의 규칙을 구체적으로 표현

<특성>

- 정규화

- 포용성

- 완전성

- 독립성

 

물리 데이터 모델링

: 논리 모델을 기술에 맞게 상세화

<절차>

- 개체 -> 테이블

- 속성 -> 컬럼

- UID -> PK

- 관계 -> FK

- 컬럼유형과 길이정의

- 반정규화

 

이상현상 anomaly

: 데이터의 중복으로 나타나는 현상

=> 정규화로 중복을 최소화해서 해결

 

- 삽입 이상

: 의도하지 않은 데이터를 같이 삽입하는 경우

- 삭제 이상

: 의도하지 않은 데이터를 삭제하는 경우 (cascade 오용)

- 갱신 이상

: 데이터 갱신시 정보에 모순이 생기는 경우

 

정규화

: 데이터의 중복을 최소화하는 과정

 

1NF : 모든 데이터는 원자값이어야 한다.

2NF: 부분적 함수 종속성 제거. (ex. (A, B)->C일때 B->C일 경우)

3NF: 이행적 함수 종속성 제거. (ex. A->B, B->C일때 A->C일 경우)

BCNF: 결정자이면서 후보키 아닌 것 제거.

4NF: 다치 종속 제거 (N:N관계 제거)

5NF: 조인 종속성 제거

 

테이블 제약조건

- 개체 무결성 제약조건

=>기본키는 NULL값이 될 수 없다.

- 참조 무결성 제약조건

=> FK는 참조되는 릴레이션의 PK여야 한다.

- 도메인 무결성 제약조건

=> 특정 속성값은 그 속성이 정의된 도메인에 속해야 한다.

- 키 무결성 제약조건

=> 릴레이션에는 최소한 하나의 키를 가지고 있어야 함

- 고유 무결성 (UNIQUE)

=> 어떤 컬럼의 값은 모두 달라야함

- null 무결성 (NOT NULL)

=> 어떤 컬럼의 값은 모두 NULL이 아니어야 함

 

 

인덱스

: 검색연산 최적화를 위해 열에대한 정보를 구성한 데이터구조

 

- 적용기준

분포도(selectivity)가 10%~15%이거나 조회 및 출력 조건으로 사용되어야 한다.

 

- 결합 인덱스

: 자주 조합되어 사용되는 컬럼을 묶은 경우. 수정이 빈번하지 않은 컬럼을 선택한다.

 

- 단점

: 오버헤드, 저장공간 필요

 

클러스터

: 액세스 효율 향상을 위한 물리적 저장방법

 

- 인덱스의 단점을 해결하며, 분포도가 넓을수록 유리하다. 

- 대량의 범위에 자주 액세스할 경우

- 조인이 빈번할 경우

- 단점: 입력, 수정, 삭제시 오버헤드 증가함.

 

파티션

종류

- Range patitioning: 연속적인 값 기준.

=> 빠름

 

- List patitioning: 데이터에 대한 명시적 제어가 가능한 기법.

=> ex. A 컬럼의 값이 10 미만인 것과 10 이상인 것으로 파티션을 나눌 수 있다.

=> 조건이 많을 경우

 

- Hash patitioning: 해시 함수값 기준으로 분할.

=> 균등한 분할이 가능하다.

 

- Composite patitioning: Range와 Hash 파티셔닝을 함께 사용.

 

장점

- 데이터 액세스 범위를 줄여서 성능을 향상시킬 수 있다.

- 가용성 향상

- 백업이 가능하다

- 경합 감소: 디스크 스트라이핑으로 성능을 향상시킬 수 있다.

+ 디스크 스트라이핑

: 데이터를 여러 디스크에 저장해 디스크를 병렬로 사용할 수 있는 기술

 

프로시저

: 일정한 조건이 되면 자동으로 수행되는 데이터 조작 프로그램

 

- Stored Procedure : PL/SQL을 저장

- Stored Function: 프로시저와 비슷하나 return값을 받을 수 있다.

- Stored Package: 패키지 단위로 배포

- Trigger: 이벤트 발생 시 자동으로 실행한다.

 

- prepared statement

: 쿼리분석->컴파일->실행과정을 최초 한번만 실행후 캐시에 담아 재사용하는 기능이다.

 

- 유용한 명령문

프로시저 호출=> EXEC 프로시저이름();

콘솔 출력 설정하기 => SET SERVEROUTPUT ON;

콘솔 출력 => DBMS_OUTPUT.PUT_LINE();

에러 보기 => SHOW ERRORS;

 

옵티마이저

: SQL을 수행할 최적처리경로를 생성해주는 DBMS 엔진

<유형>

- RBO : 규칙기반

- CBO : 비용기반

 

<역할>

- 쿼리 변환

- 비용 산정

- 계획 생성

 

힌트

: 옵티마이저의 계획을 변경할 수 있다.

Comments