2019년 5급 공채 기술 2차 데이터베이스론
문제 6개 · 100점. 참고 답안·채점 기준은 앱에서 볼 수 있습니다.
제1문 (20점)
두 개의 릴레이션 R(A, B, C)와 S(A, D, E)가 있을 때, 다음 물음에 답하시오. (총 20점)
| R | S | |||||
| A | B | C | A | D | E | |
| 1 | a | 10 | 1 | p | x | |
| 1 | a | 11 | 1 | p | y | |
| 1 | a | 25 | 2 | q | y | |
| 2 | b | 22 | 4 | r | w | |
| 3 | b | 21 | 6 | s | z | |
| 5 | c | 17 | ||||
| 6 | c | 26 | ||||
- (1) 다음 관계연산 및 SQL 문을 수행한 후, 생성되는 투플의 개수와 도출과정을 제시하시오. (각 2점)
가) R [그림] S
나) R [그림] S
다) select distinct A from R union all select A from S;
라) select A from R intersect all select A from S;
마) select A from R except all select A from S; - (2) 다음 SQL 문의 실행 결과를 쓰시오. (5점)select B from R
group by B
having sum(C) > some(select sum(C)
from R
group by B); - (3) 다음 SQL 문의 실행 결과를 쓰시오. (5점)select A from R
where not exists(select *
from S
where R.A = S.A);
제2문 (10점)
한 기업에서 DBA가 직원 정보를 담는 ‘직원’ 테이블을 만들고, 영업부 부장을 위한 ‘영업부직원’ 뷰(View)를 구성하였다. 다음 시나리오에 맞는 권한부여 또는 권한박탈을 위한 SQL 문을 작성하시오. (단, 총무과 직원은 user1, 영업부 부장은 user2, 영업부 과장은 user3의 id를 사용한다) (10점)
인사를 담당하는 총무과 직원에게는 ‘직원’ 테이블에 대한 검색 및 수정 권한을, 영업부 부장에게는 ‘영업부직원’ 뷰에 대한 검색 권한을 부여하였다. 영업부 부장은 자신이 해외 출장 중에 직무대리를 위하여 영업부 과장에게 다시 ‘영업부직원’ 뷰에 대한 검색 권한을 위임하였다. 이 사실을 안 DBA는 영업부 부장의 ‘영업부직원’ 뷰에 대한 검색 권한은 그대로 두고 이 검색 권한의 위임권만 박탈하였다.
제3문 (15점)
다음 E-R 다이어그램을 보고 물음에 답하시오. (총 15점)
대출번호
대출액
만기일
은행
은행지점
지점
은행코드
이름
주소
가입
지점번호
이름
대출
고객
주민번호
이름
연락처
1
1
N
N
N
M
대출액
만기일
은행
은행지점
지점
은행코드
이름
주소
가입
지점번호
이름
대출
고객
주민번호
이름
연락처
1
1
N
N
N
M
- (1) ‘대출’이라는 관계를 올바르게 표현할 수 있으면서 제1정규형을 만족시킬 수 있도록, ‘대출’ 테이블을 생성하는 SQL 문을 작성하시오. (단, 테이블 이름이나 속성 이름은 위 그림과 같이 한글로 작성하고, 도메인은 적절하게 작성한다) (5점)
- (2) 위 그림에서 약한 개체 타입(weak entity type)을 제시하고, 그 개체에 해당하는 테이블의 기본키를 제시하시오. (5점)
- (3) “대출이 한 건도 없는 고객의 주민번호를 검색하라”라는 질의를 관계대수로 작성하시오. (5점)
제4문 (15점)
릴레이션 R(A, B, C, D, E, F)에 대하여 함수 종속(functional dependency) 집합이 다음과 같을 때, 물음에 답하시오. (단, 클로저와 카노니컬 커버는 고려하지 않는다) (총 15점)
A→B, A→C, BC→D, BC→E, C→D, E→F, BC→F
- (1) 후보키를 모두 나열하시오. (5점)
- (2) BCNF 조건을 만족하지 않는 함수 종속을 모두 나열하시오. (5점)
- (3) R가 3NF인지 판별하고, 이유를 서술하시오. (5점)
제5문 (15점)
트랜잭션 T1, T2, T3이 동시에 실행된 후 로그의 내용이 다음과 같을 때, 물음에 답하시오. (총 15점)
| 로그 순서 번호 | 로그 레코드 |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | [T1, START] [T1, UPDATE, B, 50, 100] [T1, UPDATE, C, 700, 800] [T2, START] [T2, UPDATE, A, 500, 1000] [T1, UPDATE, A, 1000, 2000] [T1, COMMIT] [T2, UPDATE, B, 100, 200] [T3, START] [T3, UPDATE, A, 2000, 3000] [CHECKPOINT] [T2, UPDATE, D, 300, 400] [T2, COMMIT] [T3, UPDATE, B, 200, 300] ~~ 시스템 장애 ~~ |
- (1) 즉시 갱신(immediate update) 기법을 이용한 Undo/Redo 회복 절차를 기술하시오. (5점)
- (2) 즉시 갱신 기법을 이용하여 회복할 경우 T1, T2, T3의 복구 방법을 설명하고, 복구 후 A, B, C, D의 값을 쓰시오. (단, 복구 방법 설명 시에 복구 시작점과 끝점을 명시해야 한다) (10점)
제6문 (25점)
B-트리에 대한 다음 물음에 답하시오. (총 25점)
- (1) 다음은 B-트리에서 키 x를 삽입하는 알고리즘이다. 삽입 시 발생하는 오버플로우(overflow)를 고려하여 아래 ㉠~㉢에 들어갈 내용을 기술하시오. (5점)
①키 x를 삽입할 리프 노드 r를 검색한다.
②노드 r에 공간의 여유가 있으면㉠
③노드 r에 공간의 여유가 없으면 형제 노드를 조사한다.
④형제 노드에 공간의 여유가 있으면㉡
⑤형제 노드에 공간의 여유가 없으면㉢㉠ ㉡ ㉢ - (2) 다음 B-트리는 각 노드가 최대 4개의 키를 가질 수 있다. 주어진 B-트리에서 33, 12, 30, 31, 39, 40, 32를 순서대로 삽입할 때 B-트리 구조의 변화 과정을 순서대로 그리시오. (단, 키 값의 삽입 시, 발생하는 오버플로우와 이를 해결하는 과정이 그림으로 표현되어야 한다) (10점)1 2 8 9
13 14 15
20 22 24 25
27 29 35 37
11 16 26 - (3) 다음은 B-트리에서 키 x를 삭제하는 알고리즘이다. 삭제 시 발생하는 언더플로우(underflow)를 고려하여 아래 ㉣, ㉤에 들어갈 내용을 기술하시오. (5점)
①키 x를 포함한 노드를 찾는다.
②이 노드가 리프 노드가 아니면 x 다음의 키 값 y를 가진 리프 노드 r를 찾아 x와 y를 맞바꾼다.
③리프 노드 r에서 x를 제거한다.
④x 제거 후 리프 노드 r에서 언더플로우가 생기면 형제 노드에 충분한 키가 있는지 조사한다.
⑤형제 노드에 충분한 키가 있으면㉣
⑥형제 노드에 충분한 키가 없으면㉤㉣ ㉤ - (4) 다음 B-트리는 각 노드가 최대 4개의 키를 가질 수 있다. 주어진 B-트리에서 7, 13을 순서대로 삭제할 때 B-트리 구조의 변화 과정을 순서대로 그리시오. (단, 키 값의 삭제 시, 발생하는 언더플로우와 이를 해결하는 과정이 그림으로 표현되어야 한다) (5점)15
7 11
1 2 3
16 17 20
23 24 25
8 9
13 14
27 29
22 26