[정보처리기사/필기] 3과목 <데이터베이스 구축> 오답정리

정보처리기사 필기시험을 준비하며 전자문제집CBT의 해설을 정리한 것입니다.

1. 정규화

0) 필요성

논리적 설계 단계에서 발생할 수 있는 종속으로 인한 삭제, 갱신, 삽입 이상(Anomaly) 현상의 문제점을 해결하기 위해 속성들 간의 종속 관계를 분석하여 여러 개의 릴레이션으로 분해하는 과정.

정규화된 결과를 정규형이라고 부른다.

  • 중복을 최대한 제거하기 위해 테이블을 분해하는 것
  • 테이블 many → 조인현상이 많이 발생 (정보를 얻을 때 여러 테이블의 값들을 참조해서 조합) → 퍼포먼스 저하 우려 → 데이터의 정합성과 이상현상을 해결하기 위해 적절한 정규화는 매우 중요함

1) 정규형

  • 1NF : 도메인이 원자값(Atomic Value:더이상 쪼개지지 않는 단위)만으로 구성된 정규형
  • 2NF : 기본 키가 아닌 모든 속성이 기본 키에 대해 완전 함수적 종속을 만족하는 정규형
  • 3NF : 기본 키가 아닌 모든 속성이 기본 키에 대해 이행적 종속을 만족 안하는 정규형
  • BCNF : 모든 결정자가 후보 키인 정규형 (보이스 코드 정규형)
  • 4NF : 다치 종속 A→B가 성립하는 경우 A에 함수적 종속 관계를 만족하는 정규형
  • 5NF : 모든 조인 종속이 후보 키를 통해서만 성립되는 정규형

1-1) 예시

  • 제 1규형 (서울, 부산 과 워싱턴, 뉴욕을 도메인에서의 원자값으로만 구성되게 정규화 함)
스크린샷 2020-09-23 오후 11 45 36

2) 데이터들의 중복으로 발생하는 곤란한 현상(Anomaly)

  • 삽입 이상 : 삽입할 때 의도와 달리 원하지 않는 값들도 함께 삽입되는 현상
  • 삭제 이상 : 삭제할 때 의도와 달리 원하지 않는 값들도 함께 삭제되는 현상
  • 갱신 이상 : 릴레이션에서 튜플에 있는 속성값을 갱신할 때 일부 튜플의 정보만 갱신, 정보 모순이 생기는 현상

2. 관계 모델 (Relation Model)

1) 관계형 모델

  • 실제 세계의 데이터를 관계라는 개념을 사용해 표현한 데이터 모델

    • 데이터 모델 : '~~라는 개념을 사용해 데이터를 표현 해주세요'라고 정의하는 것.
  • 수학적 집합론에 근거한 모델로, 릴레이션(테이블)의 연산을 술어논리로 표현할 수 있어야 함
  • SQL과 관계형 모델은 다른 개념이다.
  • 관계 모델은 릴레이션의 관계를 표현하는 것

2) 관계형 데이터 모델 해석

스크린샷 2020-09-23 오후 11 45 36
  • 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을 이용하여 구현

(참조)

© 2020 euzl. from JunhoBaik's, Built with Gatsby