이상(Anomaly)과 함수적 종속
- 이상현상은 데이터베이스의 논리적 설계 시 하나의 릴레이션에 많은 속성들이 존재하여, 데이터의 중복과 종속으로 인해 발생되는 문제점을 말한다.
- 삭제 이상(Deletion Anomaly) : 테이블에서 하나의 자료를 삭제하고자 하는 경우 그 자료가 포함된 튜플이 삭제됨으로 인해 원하지 않는 자료까지 함께 삭제가 이루어져 발생하는 문제점을 말한다. -> 튜플 단위로 삭제하는데, 한 튜플을 삭제한 결과 다른 필요한 자료들까지 함께 삭제되어 그 후부터 그 자료를 찾을 수 없게 되는 경우
- 삽입 이상(Insertion Anomaly) : 삽입하는 과정에서 원하지 않는 자료가 삽입된다든지 또는 삽입하는데 자료가 부족해 삽입이 되지 않아 발생하는 문제점을 삽입 이상이라고 한다. -> 역시 튜플단위로 삽입하는데, 기본키 없이 다른 자료들을 삽입하려는 경우 기본키를 알아낼 때까지 그 자료들을 저장할 수 없게 됨
- 갱신 이상(Update Anomaly) : 관계 데이터베이스의 자료를 갱신하는 과정에서 정확하지 않거나 일부의 튜플만 갱신됨으로 인해 정보가 모호해지거나 일관성이 없어져 정확한 정보의 파악이 안 되는 현상을 말한다. -> 어떠한 자료를 변경하고자 할 때, 연관된 모든 튜플을 변경하는 것이 아닌 일부만을 바꾸게 된다면 변경된 자료를 정확하게 알 수 없게 됨
함수적 종속(Functional Dependency)
- 종속이란 어떤 릴레이션에서 속성 A, B가 있을 때, 임의 튜플에서 A의 값이 B의 값을 함수적으로 결정한다면, 즉 A의 값을 알면 B의 값을 알 수 있거나 A의 값에 따라 B의 값이 달라진다면, B는 A에 함수적으로 종속되었다고 하고, 기호로는 'A -> B'로 표기한다.
- 결정자 : B가 A에 종속되어 A값을 알면 B의 값을 알 수 있을 때, A를 '결정자'라고 하고 B를 '종속자'라고 한다.
- 종속의 종류
- 완전 함수 종속(Full Functional Dependency) : 릴레이션에서 한 속성이 오직 기본키에만 종속이 되는 경우를 말한다. - ex) 학번을 알면 이름, 수강과목, 학년을 알 수 있음(학번 -> 이름, 학번 -> 수강과목, 학번 -> 학년)
- 부분 함수 종속(Partial Functional Dependency) : 릴레이션에서 한 속성이 기본키가 2개 이상 합성 키(복합 키)로 구성된 경우 이 중 일부 속성에 종속이 되는 경우를 말한다. - ex) 고객번호와 제품번호가 조합된 기본키가 있어야 주문량을 알 수 있고 제품번호만 알면 제품명을 알 수 있음({고객번호, 제품번호} -> 주문량, 제품번호 -> 제품명)
- 이행적 함수 종속(Transitive Functional Dependency) : 릴레이션에서 A, B, C 세 가지 속성 간의 종속이 A -> B, B -> C 일 때, A -> C 가 성립이 되는 경우를 말한다. - ex) 제품번호를 알면 제품명을 알 수 있고 제품명을 알면 단가를 알 수 있다. 제품번호를 알면 단가를 알 수 있다.(제품번호 -> 제품명, 제품명 -> 단가, 제품번호 -> 단가)
회복 기법과 병행 제어
- 회복이란 여러 가지 요인으로 인해 손상된 데이터베이스를 손상되기 이전의 정상적인 상태로 복구시키는 작업을 말한다.
- 즉시 갱신 기법 : 트랜잭션이 실행(활동) 상태에서 변경되는 내용을 바로 데이터베이스에 적용하는 기법, 변경되는 모든 내용은 로그(Log)에 기록하여 장애 발생 시 로그(Log)의 내용을 토대로 회복시킴
- 지연 갱신 기법 : 트랜잭션이 수행되어 부분 완료가 될 때까지 데이터베이스에 적용하지 않고 지연시킨 후 부분 완료가 되면 로그(Log)의 내용을 토대로 데이터베이스에 적용하는 기법
- 검사 시점 기법 : 트랜잭션이 실행되는 중간에 검사 시점(Check Point)을 지정하여 검사 시점까지 수행 후 완료된 내용을 데이터베이스에 적용하는 기법
- 그림자 페이징(shadow paging) 기법 : 로그(Log)를 사용하지 않고, 데이터베이스를 동일한 크기의 단위인 페이지로 나누어 각 페이지마다 복사하여 그림자 페이지를 보관하는 기법
- REDO(재수행) : 트랜잭션이 수행되어 COMMIT이 되면 변경된 내용을 데이터베이스에 반영하게 되는데, 이때 로그(Log)의 내용을 토대로 재수행하며 변경된 내용을 데이터베이스에 반영하게 되는 과정
- UNDO(취소) : 트랜잭션이 수행되는 도중 오류가 발생하거나 비정상적으로 종료되는 경우 트랜잭션이 시작된 시점으로 되돌아가는 과정
- 데이터베이스 수행 시 발생되는 장애의 유형
- 트랜잭션 장애 : 하나의 트랜잭션이 수행되는 과정에서 발생하는 오류
- 시스템 장애 : 트랜잭션 장애들로 인해 시스템 상의 문제가 발생하여 트랜잭션이 수행되지 못하는 경우
- 미디어 장애 : 하드웨어적으로 하드디스크 등이 손상되는 경우
- 병행 제어(Concurrency Control) : 동시에 여러 개의 트랜잭션이 실행되는 경우를 병행 실행이라고 하는데 이와 같은 병행 실행 시 트랜잭션 간의 격리성을 유지하여 트랜잭션 수행에 문제가 발생되지 않도록 제어하는 것
- 로킹(Locking) : 트랜잭션의 병행 실행 시 하나의 트랜잭션이 사용하는 데이터베이스 내의 데이터를 다른 트랜잭션이 접근하지 못하게 하는 것 - ex) LOCK -> 트랜잭션 실행 -> 트랜잭션 완료 -> UNLOCK
- 공유 락(Shared Lock) : 사용 중인 데이터를 동시에 쓸 수는 없지만 읽을 수는 있음
- 베타 락(Exclusive Lock) : 사용중인 데이터를 읽기도 쓰기도 못함
- 2단계 로킹 기법(Two-Phase Locking Protocol) : 로킹의 대표적인 기법으로 'LOCK' 설정 대상 데이터가 여러 개인 경우 모든 데이터에 'LOCK'을 설정하는 단계와 완료 후 'LOCK' 을 해제하는 단계의 2단계로 구성된 기법이다.
- 확장 단계(Growing Phase) : 트랜잭션 수행에 필요한 데이터들에 대해 'LOCK' 을 설정
- 축소 단계(Shrinking Phase) : 트랜잭션 수행에 사용되었던 데이터들이 더 이상 필요 없어 설정된 'LOCK' 을 해제
- 교착상태(Deadlock)가 발생할 수 있는 단점이 있다.
- ex) LOCk(T1) -> LOCK(T2) -> 실행 -> 완료 -> UNLOCK(T1) -> UNLOCK(T2)
- 타임스탬프(Time Stamp) : 각 트랜잭션이 데이터에 접근할 시간을 미리 지정하여 기억시킨 뒤 그 시간의 순서에 따라 순서대로 데이터에 접근하여 수행하는 방법
데이터베이스 관리 시스템(DBMS, DataBase Management System)
- DBMS의 구조
'정보처리기사 실기 > 데이터베이스' 카테고리의 다른 글
[2019/06/25] 데이터베이스 개념 공부 (0) | 2019.06.25 |
---|---|
[큐넷 공개문제 개념]데이터베이스 (0) | 2019.06.23 |
[데이터베이스 기출 개념]2017년 3회 (0) | 2019.06.22 |
[데이터베이스 기출 개념]2018년 2회 (0) | 2019.06.19 |