공부하는 스누피
[정보처리기사] 데이터 입출력 구현 정리 본문
개념 데이터 모델링
: 주제 영역과 핵심 데이터 집합간의 관계를 정의하는 모델링으로, 전체 모델의 골격에 해당한다.
논리 데이터 모델링
: 개념 모델로부터 업무영역의 규칙을 구체적으로 표현
<특성>
- 정규화
- 포용성
- 완전성
- 독립성
물리 데이터 모델링
: 논리 모델을 기술에 맞게 상세화
<절차>
- 개체 -> 테이블
- 속성 -> 컬럼
- 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 : 비용기반
<역할>
- 쿼리 변환
- 비용 산정
- 계획 생성
힌트
: 옵티마이저의 계획을 변경할 수 있다.
'CS > 데이터베이스' 카테고리의 다른 글
[MySQL] SELECT할 때 자주 쓰는 기능 모음 (0) | 2021.03.11 |
---|---|
[MySQL] 자주 쓰이는 명령어 정리 (0) | 2020.12.16 |
[정보처리기사] 집계함수, 그룹함수, 윈도함수 (0) | 2020.11.09 |