정보처리기사 필기시험을 준비하며
전자문제집CBT
의 해설을 정리한 것입니다.
1. 정규화
0) 필요성
논리적 설계 단계에서 발생할 수 있는 종속으로 인한 삭제, 갱신, 삽입 이상(Anomaly) 현상의 문제점을 해결하기 위해 속성들 간의 종속 관계를 분석하여 여러 개의 릴레이션으로 분해하는 과정.
정규화된 결과를 정규형
이라고 부른다.
- 중복을 최대한 제거하기 위해 테이블을 분해하는 것
- 테이블 many → 조인현상이 많이 발생 (정보를 얻을 때 여러 테이블의 값들을 참조해서 조합) → 퍼포먼스 저하 우려 → 데이터의 정합성과 이상현상을 해결하기 위해 적절한 정규화는 매우 중요함
1) 정규형
- 1NF : 도메인이 원자값(Atomic Value:더이상 쪼개지지 않는 단위)만으로 구성된 정규형
- 2NF : 기본 키가 아닌 모든 속성이 기본 키에 대해 완전 함수적 종속을 만족하는 정규형
- 3NF : 기본 키가 아닌 모든 속성이 기본 키에 대해 이행적 종속을 만족 안하는 정규형
- BCNF : 모든 결정자가 후보 키인 정규형 (보이스 코드 정규형)
- 4NF : 다치 종속 A→B가 성립하는 경우 A에 함수적 종속 관계를 만족하는 정규형
- 5NF : 모든 조인 종속이 후보 키를 통해서만 성립되는 정규형
1-1) 예시
- 제 1규형 (서울, 부산 과 워싱턴, 뉴욕을 도메인에서의 원자값으로만 구성되게 정규화 함)
2) 데이터들의 중복으로 발생하는 곤란한 현상(Anomaly)
- 삽입 이상 : 삽입할 때 의도와 달리 원하지 않는 값들도 함께 삽입되는 현상
- 삭제 이상 : 삭제할 때 의도와 달리 원하지 않는 값들도 함께 삭제되는 현상
- 갱신 이상 : 릴레이션에서 튜플에 있는 속성값을 갱신할 때 일부 튜플의 정보만 갱신, 정보 모순이 생기는 현상
2. 관계 모델 (Relation Model)
1) 관계형 모델
-
실제 세계의 데이터를 관계라는 개념을 사용해 표현한 데이터 모델
- 데이터 모델 : '~~라는 개념을 사용해 데이터를 표현 해주세요'라고 정의하는 것.
- 수학적 집합론에 근거한 모델로, 릴레이션(테이블)의 연산을 술어논리로 표현할 수 있어야 함
- SQL과 관계형 모델은 다른 개념이다.
- 관계 모델은 릴레이션의 관계를 표현하는 것
2) 관계형 데이터 모델 해석
-
relation : 테이블 수
- 개체를 표현하기 위한 데이터 구조로써 2차원 테이블로 ㅍ현한다.
- heading(스키마) + body(본체) 로 구성
- heading은 속성의 집합. 이름과 데이터형으로 구성.
- body는 속성값의 집합인 튜플의 집합.
-
attribute : 열의 수
- 개체의 속성들을 의미함
-
tuple : 행의 수
- 하나의 개체를 의미.
- 릴레이션 상태(Relation State)라고도 함
3) 릴레이션 특징
- 각 튜플은 유일함
- 튜플사이 순서 없음
- 속성간 순서 중요 X
- 속성의 명칭은 유일. 구성값은 동일값 가능
- 속성 값은 원자값
3. 트랜잭션의 특성 (ACID)
- 원자성 (Atomicity) :
트랜잭션 연산은 DB에 모두 반영되어 commit(완료)되든지 아니면 반영되지 않고 Rollback(복구)되어야 한다.
즉, All or Nothing. 작업 단위를 일부분만 실행하지 않는다. - 일관성 (Consistency) :
트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성있는 데이터베이스 상태로 변환한다.
여기서 일관성이란, 데이터 타입이 변하지 않는다는 뜻. (int→string X) - 독립성 (Isolation) :
둘 이상 트랜잭션이 동시 병행 실행될 경우 트랜잭션 실행 중 타 트랜잭션의 연산이 끼어들 수 없다.
즉, 트랜잭션끼리는 서로를 간섭할 수 없다. - 지속성 (Durability) :
성공적 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 한다.
4. 함수 종속의 추론 규칙
1) 분해 규칙
X→ YZ 이면 X → Y와 X → Z이다.
2) 반사 규칙
X → Y 이면 X → Y 와 Y → X 이다.
3) 결합 규칙
X → Y 이고 X → Z 이면 X → YZ 이다.
5. 데이터베이스 회복 기법
1) 회복(Recovery)이란
- 트랜잭션 도중에 손상된 데이터베이스를 이전 상태로 복귀하는 작업
- 트랜잭션의 연산을 수행할 때 데이터베이스를 변경하기 전에 log 데이터를 생성한다.
- 취소(Undo) 연산으로 이미 데이터베이스에 쓰여진 것도 수정할 수 있다.
2) 장애의 유형
트랜잭션 장애, 시스템 장애, 미디어 장애
3) 회복 기법
3-1) 즉각 갱신 기법 (Immediate Update)
- 트랜잭션의 연산을 수행하여 데이터를 갱신할 때 실제 데이터 베이스에 반영하는 기법
- 갱신한 모든 내용을 로그(Log)에 보관한다.
- 회복 작업을 위해 취소(Undo)와 재시도(Redo) 모두 사용할 수 있다.
3-2) 연산 갱신 기법 (Deffered Update)
- 트랜잭션을 완료할 때까지 데이터베이스에 갱신을 연기하는 기법
- 트랜잭션 수행으로 갱신할 내용은 로그(Log)에 보관한다.
- 트랜잭션이 부분 완료 시점에 로그의 기록을 실제 데이터 베이스에 반영한다.
- 트랜잭션 수행 중에 장애가 발생하여 Rollback해도 취소할 필요가 없다.
- 재시도(Redo) 작업을 통해 최근의 정상적인 데이터베이스로 회복한 후에 트랜잭션을 재실행 할 수 있다.
3-3) 검사점 기법 (Check Point)
- 트랜잭션 중간에 검사점을 로그에 보관하여 트랜잭션 전체를 취소하지 않고 검사점까지 취소할 수 있는 기법)
3-4) 그림자 페이지 대체 기법 (Shadow Paging) - 로그가 필요 없음
- 트랜잭션의 연산으로 갱신할 필요가 있을 때 복사본인 그림자 페이지를 보관하는 기법
- 트랜잭션을 취소할 때 그림자 페이지를 이용하여 회복
- Log, Undo, Redo할 필요가 없다.
6. SQL문
1) DSTINCT
- 중복 튜플 발견 시 그 중 첫번째 하나만 검색
- ex)
SELECT DISTINCT 학년 FROM R1;
7. 데이터 ㅇㅇ어
1) DCL(Data Control Language) 데이터 제어어
- GRANT : 데이터베이스 사용자에게 사용권한을 부여함
- REVOKE : 데이터베이스 사용자의 사용권환을 취소
- COMMIT : 데이터베이스 조작 작업이 정상적으로 완료 되었음을 알려줌
- ROLLBACK : 데이터베이스 조작 작업이 비정상적으로 작동하여 원래 상태로 복구
2) DDL(데이터 정의어)
CREATE / ALTER / DROP
3) DML(데이터 조작어)
SELECT / INSERT / DELETE / UPDATE *
8. 병행제어 기법
1) 로킹
-
로킹 단위가 크면 나머지가 다 작아짐 (단위가 작으면 나머지가 다 커짐)
- ex) 로킹 단위가 작아지면 오버헤드가 적어지지만, 병행성 수준이 낮아지고, 공유도 저하됨
- 로킹의 대상이 되는 객체의 크기를 '로킹 단위'라고 한다.
- 데이터베이스, 파일, 레코드 등은 로킹 단위가 될 수 없다.
- 로킹의 단위가 작아지면 로킹 오버헤드가 증가한다.
9. 뷰(View)
- 하나이상의 테이블로부터 유도되는 가상테이블이며 논리적 독립성이 제공된다.
- 실제 테이블처럼 권한을 나눌 수 있다.
- 특정 사용자가 볼 필요가 없는 다른 열들을 배제하고 뷰를 만든 후, 해당 사용자에게 뷰에 대한 권한을 할당하면 테이블 전체에 대한 권한을 부여하지 않아도 된다. (보안 up)
- 하지만, 자체 인덱스를 가지지 않는다. 따라서 삽입, 삭제, 수정이 제한적이다.
10. 분산 데이터베이스
1) 정의
- 여러 곳으로 분산되어있는 데이터베이스를 하나의 가상 시스템으로 사용할 수 있도록 한 데이터베이스
- 논리적으로 동일한 시스템에 속하지만, 네트워크를 통해 물리적으로 분산되어 있는 데이터들의 모임
- 분산DB가 되기 위해선 6가지 투명성을 만족해야 한다.
2) 6가지 투명성
- 분할 투명성(단편화) : 하나의 논리적 Relation이 여러 단편으로 분할되어 각 단편의 사본이 여러 사이트에 저장
- 위치 투명성 : 어떠한 데이터의 물리적인 위치도 알 필요가 없다. (즉, 사용자는 데이터나 입력 시스템의 위치와 무관하게 접근가능). 위치정보는 System Caltalog에 유지
- 지역사상 투명성 : 지역DBMS와 물리적 DB사이의 Mapping 보장.
- 중복 투명성 : DB객체가 여러 사이트에 중복되어 있는지 알 필요가 없음 (Replication)
- 장애 투명성 : 구성요소(DBMS, Computer)의 장애에 무관한 트랜잭션의 원자성유지
- 병행 투명성 : 다수 트랜잭션 동시수행시 결과의 일관성 유지, Timm stamp, 분산 2단계 Locking을 이용하여 구현