[7급 국가직 데이터베이스론] 21년 1회차 기출문제 정답·해설 페이지
- SQL은 관계 DBMS의 표준 언어라는 설명은 옳다.
- 데이터 정의·질의·갱신 문을 모두 갖춘 포괄적 언어라는 설명도 옳다.
- 트랜잭션의 완료·철회를 COMMIT·ROLLBACK으로 표현한다는 설명도 옳다.
- T4 redo: D를 15로, A를 20으로 다시 반영한다.
- T2 undo(역순): 로그 13으로 D를 15로, 로그 6으로 B를 12로 되돌린다.
- T3 undo: 로그 10으로 C를 30으로 되돌린다.
- 편의성·재사용성·보안성(필요한 열만 노출)을 높인다는 설명은 옳다.
- 조회는 자유롭지만 조인·집계 뷰 등은 갱신이 제한된다는 설명도 옳다.
- 하나의 테이블 위에 여러 뷰를 정의해 사용자별로 활용할 수 있다는 설명도 옳다.
- 행을 투플, 열을 애트리뷰트라 부른다는 설명은 옳다.
- 각 값이 원자값이어야 한다는 설명(제1정규형 조건)도 옳다.
- 알 수 없거나 지정되지 않은 값에 NULL을 쓴다는 설명도 옳다.
- 직급=‘대리’ 조건은 이수진과 함께 홍성대도 선택하므로 1행짜리 뷰_사원1과 다르다.
- 부서=‘연구’ 조건은 이수진 한 명만 선택해 뷰_사원1과 일치한다.
- ㉡이 600이 되려면 새 행의 50까지 합산되어야 하므로 팬텀 불허 조건에 어긋난다.
- ㉠이 500이 되려면 commit 전 삽입을 읽는 오손 읽기가 필요하므로 repeatable read에서 불가능하다.
- 1001은 국어만 있어 영어가 남으므로 제외된다.
- 1002는 영어만 있어 국어가 남으므로 제외된다.
- 1003은 국어·수학이어서 영어가 남으므로 제외된다.
- 학과별 평균·최고·최저 성적을 GROUP BY deptno로 구한 질의는 옳다.
- 학과·학년 두 열로 묶어 인원수와 평균을 구한 질의도 옳다.
- 행 조건 deptno >= 100을 WHERE로 거른 뒤 학과별 평균을 구한 질의도 옳다.
- ㄴ: 1NF는 모든 도메인이 더 이상 나눌 수 없는 원자값일 때 성립한다.
- ㄷ: 2NF는 기본키가 아닌 속성이 기본키에 완전 함수 종속이어야 하며, 부분 함수 종속은 제거 대상이다.
- ㅁ: 모든 결정자가 후보키인 것은 BCNF 조건이고, 4NF는 다치 종속을 제거한 형태다.
- 데이터를 여러 노드로 나누는 샤딩을 지원한다는 설명은 옳다.
- BigTable·Cassandra를 대표 NoSQL로 든 설명도 옳다.
- 가용성과 수평 확장성을 중시한다는 설명도 옳다.
- E→E는 반사 규칙에 의한 자명한 종속이다.
- AE→D: A→B로 AE의 폐포에 B가 들어오고, BE→D로 D가 유도된다.
- AC→BC: A→B의 양변에 C를 첨가(증가 규칙)하면 얻어진다.
- 이벤트 발생 시 자동으로 실행되는 작업이라는 설명은 옳다.
- 무결성 유지 도구라는 설명도 옳다.
- 이벤트 전후에 실행되는 BEFORE·AFTER 트리거가 있다는 설명도 옳다.
- redo — 체크포인트 전에 시작했지만 오류 전에 커밋되었으므로, 체크포인트 이후의 변경분을 재실행해야 한다는 설명은 옳다.
- 무작업 — 체크포인트 이전에 커밋이 끝나 변경이 이미 디스크에 반영되었으므로 옳다.
- 체크포인트 로그 기록 — 체크포인트 시점에 활성 상태인 트랜잭션은 와 뿐이므로 이 둘을 담은 checkpoint 레코드를 기록한다는 설명은 옳다.
- ID와 Dept_Number 값이 각각 중복되지 않으므로 유일성은 만족한다.
- 기본키에 NULL이 없으므로 엔티티 무결성도 만족한다.
- 주어진 인스턴스에서 함수 종속을 위반하는 투플 쌍도 없다.
- 내부 스키마가 물리적 저장 구조를 기술한다는 설명은 옳다.
- 외부 스키마가 사용자 그룹의 관심 부분만 보여 주고 나머지를 숨긴다는 설명도 옳다.
- 기본 테이블이 확장되어도 기존 뷰 사용자가 영향을 받지 않아 뷰가 논리적 독립성을 일부 제공한다는 설명도 옳다.
- ALTER와 COMMIT 조합은 COMMIT이 DDL이 아니어서 제외된다.
- TRUNCATE와 GRANT 조합은 GRANT가 권한 부여 명령이어서 제외된다.
- GRANT와 COMMIT 조합은 둘 다 DDL이 아니다.
- 최종 투영을 E.부서번호로 한 식은 결과 열이 부서명·예산이 아니며, 사원에 대해 부서명·예산을 투영해 성립하지 않는다.
- 재정에서 예산만 투영한 식은 조인 속성인 부서번호가 사라져 부서와 연결되지 않는다.
- 재정에 열 목록을 선택 조건처럼, 사원에 조건식을 투영 목록처럼 쓴 식은 선택과 투영이 뒤바뀌었다.
- 자연 조인은 a2가 d2·d3와 두 번, a3·a4가 각각 d4와 결합해 총 5행이 되므로 맞다.
- 왼쪽 외부 조인은 자연 조인 5행에 짝이 없는 a5를 D=NULL로 더한 결과로 맞다.
- 오른쪽 외부 조인은 짝이 없는 S의 (b4, c4, d5)를 A=NULL로 더한 결과로 맞다.
- 릴레이션의 단편화 방식을 사용자가 알 필요가 없다는 설명은 옳다.
- 중복 데이터와 그 저장 위치를 인지할 필요가 없다는 설명도 옳다.
- 데이터의 물리적 위치를 알 필요가 없다는 위치 투명성 설명도 옳다.
- 차수를 3으로 본 조합은 열과 행의 개수를 혼동한 것이다.
- 카디날리티를 4로 본 조합은 열 개수를 행 개수로 센 것이다.
- 암·복호화 모듈을 애플리케이션 서버에 설치한다는 설명은 옳다.
- 암·복호화를 애플리케이션 서버에서 처리해 플러그인 방식보다 상대적으로 빠르다는 설명도 옳다.
- DB 서버에 암·복호화 부하가 거의 걸리지 않는다는 설명도 옳다.
- 서로 상대가 끝나기만 기다리며 영원히 완료되지 못하는 것은 교착상태다.
- 롤백 전에 변경 데이터를 가져간 트랜잭션이 이미 완료되어 롤백할 수 없는 것은 회복 불가능(연쇄 복귀) 문제다.
- 일관성이 깨진 상태의 데이터를 읽어 연산하는 것은 모순성(비일관성 분석) 문제다.
- 1단계 수행 중 고장이 발생하면 트랜잭션은 완료되지 않고 취소된다.
- 지역 사이트에서 시작된 트랜잭션의 실행을 조정하는 것은 트랜잭션 관리자가 아니라 트랜잭션 조정자(TC)의 역할이다.
- prepare T 응답을 모두 받아 완료 가능 여부를 판단하는 것은 1단계가 아닌 2단계에 해당한다.
- 재해 시 백업 사본은 백업 장치에서 디스크로 적재되므로 방향이 반대로 서술되었다.
- 시스템 로그를 백업해 두면 마지막 DB 백업 이후의 트랜잭션도 잃지 않고 복구할 수 있다.
- 완료된 트랜잭션의 실행 결과는 undo가 아니라 redo에 사용된다.
SQL 언어에 대한 설명으로 옳지 않은 것은?
SQL은 관계 데이터베이스 시스템의 표준 언어이다.
SQL은 포괄적인 데이터베이스 언어로서 데이터 정의, 질의, 갱신을 위한 문들을 가지고 있다.
트랜잭션의 시작, 철회, 완료 등을 표현하기 위해 SQL에서는 COMMIT, ROLLBACK 등을 사용한다.
데이터 조작어는 데이터베이스에 데이터를 검색하여 추가하고 삭제하는 데 사용하며 SELECT, REVOKE가 이에 해당된다.
SELECT는 데이터 조작어(DML)이지만 REVOKE는 권한을 회수하는 데이터 제어어(DCL)이므로, 둘을 함께 DML로 묶은 설명이 옳지 않다.
DML에는 SELECT·INSERT·UPDATE·DELETE가, DCL에는 GRANT·REVOKE가 속한다.
오류나 개정된 내용이 보이면 알려주세요
다음은 4개의 트랜잭션 T1, T2, T3, T4에 대하여 시스템 고장(crash) 시점에 특정 스케줄에 대응하는 로그를 나타낸 것이다. 이 시스템은 로그를 이용한 회복기법으로 검사점(checkpoint)을 가진 즉시갱신규약(immediate update protocol)을 사용한다고 가정한다. 시스템 고장으로부터 회복(recovery)하는 과정에서 undo와 redo 연산들을 수행하게 된다. 회복 후 데이터 항목 A, B, C, D 값들을 바르게 연결한 것은? (단, 로그 레코드 구조는 <트랜잭션, 데이터 항목, 현재 값, 변경 값>이다)
| 로그 번호 | 로그 레코드 |
|---|---|
| 1 | <T1 start> |
| 2 | <T1, D, 20, 25> |
| 3 | <T1 commit> |
| 4 | <checkpoint {}> |
| 5 | <T2 start> |
| 6 | <T2, B, 12, 18> |
| 7 | <T4 start> |
| 8 | <T4, D, 25, 15> |
| 9 | <T3 start> |
| 10 | <T3, C, 30, 40> |
| 11 | <T4, A, 30, 20> |
| 12 | <T4 commit> |
| 13 | <T2, D, 15, 25> |
| 시스템 고장 |
30 12 30 20
20 18 40 25
30 18 40 15
20 12 30 15
회복 후 값은 A=20, B=12, C=30, D=15이다.
검사점 이전에 완료된 T1은 처리하지 않고, 검사점 이후 commit 기록이 있는 T4는 redo, commit 기록이 없는 T2·T3는 undo한다.
따라서 B·C는 변경 전 값으로 돌아가고, A·D는 T4가 기록한 값이 남는다.
오류나 개정된 내용이 보이면 알려주세요
뷰(view)에 대한 설명으로 옳지 않은 것은?
생성된 뷰는 새로운 독립적인 테이블로 물리 저장소에 저장된다.
데이터베이스 질의 시 사용자 편의성 및 재사용성, 보안성을 높이기 위한 기술이다.
뷰의 질의연산은 제한을 받지 않지만 갱신연산은 제한을 받는다.
하나의 테이블로 여러 개의 상이한 뷰를 정의하여 사용자의 요구에 따라 활용할 수 있다.
뷰는 물리적으로 저장되지 않는 가상 테이블이므로, 독립 테이블로 물리 저장소에 저장된다는 설명이 옳지 않다.
뷰는 정의(질의문)만 시스템 카탈로그에 저장되고, 사용할 때 기본 테이블에서 데이터를 가져온다.
오류나 개정된 내용이 보이면 알려주세요
관계모델에 대한 설명으로 옳지 않은 것은?
관계모델에서 행은 투플(tuple), 열은 애트리뷰트(attribute)로 부른다.
투플 내의 각 값은 더 이상 나누어지지 않는 원자값이어야 한다.
투플 내 어떤 애트리뷰트의 값을 알 수 없거나 값이 지정되지 않을 때는 NULL이라는 특수한 값을 사용한다.
릴레이션은 투플들의 집합이기 때문에 릴레이션에서 투플이 순서대로만 나타나야 한다.
릴레이션은 투플의 집합이므로 투플 사이에 순서가 없다. 순서대로만 나타나야 한다는 설명이 옳지 않다.
집합의 성질상 투플의 무순서성과 중복 투플 불허가 관계 모델의 기본 특성이다.
오류나 개정된 내용이 보이면 알려주세요
다음 사원 테이블에 대해 뷰_사원1과 같은 뷰를 생성하는 SQL 질의어를 작성할 때, ㉠, ㉡에 들어갈 내용을 바르게 연결한 것은?㉠ ㉡
사원 사번 이름 직급 부서 108002 김진수 부장 인사 105123 이수진 대리 연구 128372 박지훈 과장 영업 126721 김지수 부장 영업 132122 홍성대 대리 인사
뷰_사원1 사번 이름 105123 이수진 CREATE VIEW 뷰_사원1(사번, 이름)
( ㉠ )SELECT 사번, 이름
FROM 사원
WHERE ( ㉡ );
IN 직급=‘대리’
AS 부서=‘연구’
AS 직급=‘대리’
IN 부서=‘연구’
㉠에는 AS, ㉡에는 부서=‘연구’가 들어간다.
뷰는 CREATE VIEW 뷰이름(열 목록) AS SELECT … 형식으로 정의하며, IN은 이 자리에 올 수 없다.
오류나 개정된 내용이 보이면 알려주세요
트랜잭션 T1과 T2가 아래와 같이 수행될 때, T1의 ㉠, ㉡의 출력 값은? (단, 팬텀(phantom)을 초래하는 위반들을 허용하지 않는다)㉠ ㉡
sale no name price 1 a1 200 2 a2 150 3 b1 100
T1 T2 set transaction isolation
level repeatable read;set transaction isolation
level repeatable read;start transaction; start transaction; insert into sale
values(4, ‘b2’, 50);select ㉠ sum(price)
from sale;commit update sale set price=price+100
where no=3;select ㉡ sum(price)
from sale;commit
450 550
450 600
500 600
500 500
㉠은 450, ㉡은 550이다.
㉠ 시점에 T2의 삽입은 아직 commit되지 않았으므로 T1은 기존 세 행만 읽어 200+150+100=450을 얻는다.
T2가 commit한 뒤에도 팬텀을 허용하지 않으므로 T1에는 새 행(no=4)이 보이지 않는다. T1이 no=3의 price를 200으로 바꾸었으므로 ㉡은 200+150+200=550이다.
오류나 개정된 내용이 보이면 알려주세요
테이블 R과 S에 대해 아래의 SQL 질의어를 수행한 결과로 나오는 RSID 값은?
R RSID CName 1001 국어 1002 영어 1003 국어 1003 수학 1004 국어 1004 영어 1004 수학 1005 과학
S CName 영어 국어 SELECT distinct(RSID) FROM R as x
WHERE NOT EXISTS (
(SELECT p.CName FROM S as p)
EXCEPT
(SELECT y.CName FROM R as y WHERE
x.RSID = y.RSID));
1001
1002
1003
1004
질의 결과로 남는 RSID는 1004뿐이다.
이 질의는 S의 과목에서 x가 수강한 과목을 뺀 차집합이 비어 있는지(NOT EXISTS)를 보아, S의 모든 과목(영어·국어)을 가진 RSID를 찾는 관계 나눗셈이다.
1004는 국어·영어·수학을 모두 가져 차집합이 공집합이 되므로 선택된다.
오류나 개정된 내용이 보이면 알려주세요
다음과 같은 student 테이블의 스키마가 주어졌을 때, 주어진 요구에 대한 SQL 질의어로 옳지 않은 것은?student(studno, name, grade, score, deptno)(단, studno는 학번, name은 학생 이름, grade는 학년, score는 성적, deptno는 학생이 속한 학과 번호를 의미하며, studno는 기본키이다)
student 테이블에서 각 학과별 평균 성적, 최고 성적, 최저 성적 검색SELECT deptno, AVG(score), MAX(score), MIN(score)
FROM student
GROUP BY deptno
student 테이블에서 각 학과의 각 학년별 인원수와 평균 성적 검색SELECT deptno, grade, COUNT(*), AVG(score)
FROM student
GROUP BY deptno, grade
student 테이블에서 학과 번호가 100번 이상인 학과들의 평균 성적 검색SELECT deptno, AVG(score)
FROM student
WHERE deptno >= 100
GROUP BY deptno
student 테이블에서 각 학년별로 학생 수가 10명 이상인 학년, 학생 수, 평균 성적 검색SELECT grade, COUNT(*), AVG(score)
FROM student
WHERE COUNT(*) >= 10
GROUP BY grade
집계 함수는 WHERE 절에 쓸 수 없으므로, WHERE COUNT(*) >= 10을 쓴 학년별 질의가 옳지 않다.
그룹 단위 조건은 GROUP BY grade 뒤에 HAVING COUNT(*) >= 10으로 지정해야 한다.
오류나 개정된 내용이 보이면 알려주세요
정규화(normalization)에 대한 설명 중 옳은 것만을 모두 고르면?ㄱ. 데이터의 정규화는 중복을 최소화하고 삽입, 삭제, 수정 이상을 최소화하기 위해서 함수적 종속성과 기본키를 기반으로, 주어진 릴레이션 스키마를 분석하는 과정이다.
ㄴ. 릴레이션 스키마 R의 모든 원소들의 도메인(domain)이 나눌 수 있는 단위로 되어있을 때, R이 제1정규형에 속한다.
ㄷ. 제2정규형이 되기 위해서는 릴레이션 R이 제1정규형이고 기본키가 아닌 속성이 기본키에 부분함수 종속이어야 한다.
ㄹ. 제3정규형이 되기 위해서는 릴레이션 R이 제2정규형이고, 릴레이션 R의 함수 종속 관계에서 이행적 함수 종속을 제거해야 한다.
ㅁ. 제4정규형이 되기 위해서는 릴레이션 R이 제3정규형이고, 함수 종속 관계에서 모든 결정자가 후보키이면 된다.
ㄱ, ㄹ
ㄴ, ㄷ
ㄱ, ㄹ, ㅁ
ㄷ, ㄹ, ㅁ
옳은 것은 ㄱ, ㄹ이다.
정규화는 함수 종속과 키를 바탕으로 이상을 줄이는 분석 과정이고(ㄱ), 3NF는 2NF에서 이행적 함수 종속을 제거한 형태다(ㄹ).
오류나 개정된 내용이 보이면 알려주세요
NOSQL에 대한 설명으로 옳지 않은 것은?
NOSQL은 샤딩(sharding)을 지원한다.
BigTable, Cassandra 등이 대표적인 NOSQL이다.
NOSQL은 RDBMS와 같이 스키마(schema)를 필요로 한다.
NOSQL은 가용성(availability)과 확장성(scalability)을 중요시 한다.
NoSQL은 스키마가 없거나 유연한(schema-less) 구조이므로, RDBMS처럼 스키마를 필요로 한다는 설명이 옳지 않다.
고정 스키마 없이 키-값·문서·컬럼·그래프 형태로 저장해 구조 변경에 유연하다.
오류나 개정된 내용이 보이면 알려주세요
함수 F의 종속성이 다음과 같을 때 구할 수 있는 함수 종속으로 옳지 않은 것은?F ={A →B, D →B, D →AC, BE →D}
E →D
E →E
AE →D
AC →BC
E의 폐포는 E 자신뿐이므로 E→D는 유도할 수 없다.
F에는 E만으로 결정되는 종속이 없고, BE→D는 B가 함께 있어야 적용된다.
오류나 개정된 내용이 보이면 알려주세요
데이터베이스 트리거(trigger)에 대한 설명으로 옳지 않은 것은?
테이블에서 이벤트 발생 시 자동으로 반응해 실행되는 작업이다.
트리거는 데이터베이스의 무결성을 유지하기 위한 도구이다.
행-수준 트리거(row-level trigger)는 FOR EACH STATEMENT 절을 사용하여 표시한다.
이벤트가 발생한 이후 실행되는 After 트리거와 이벤트가 발생하기 전에 실행되는 Before 트리거가 있다.
행 수준 트리거는 FOR EACH ROW 절로 표시하므로, FOR EACH STATEMENT를 쓴다는 설명이 옳지 않다.
FOR EACH STATEMENT는 문장 전체에 대해 한 번 실행되는 문장 수준 트리거에 쓴다.
오류나 개정된 내용이 보이면 알려주세요
트랜잭션 수행 과정이 다음과 같을 때, DBMS에서 데이터 복원을 위해 수행되는 작업으로 옳지 않은 것은?
T2는 redo(재실행)된다.
T4는 undo(실행취소)된다.
T1에 대해서는 어떠한 작업도 수행하지 않는다.
체크포인트 시 로그 레코드 <checkpoint {T2, T5}>를 저장장치에 기록한다.오류 발생 직전에 이미 완료(커밋)된 는 실행취소 대상이 아니라 redo(재실행) 대상이므로, 가 undo된다는 설명이 옳지 않다.
즉시 갱신·체크포인트 회복에서는 체크포인트 이후 오류 전까지 커밋된 트랜잭션은 redo, 오류 시점에 미완료인 트랜잭션은 undo, 체크포인트 이전에 커밋된 트랜잭션은 무시한다. 그림에서 와 는 오류 시점까지 끝나지 않아 undo, 와 는 오류 전에 끝나 redo된다.
오류나 개정된 내용이 보이면 알려주세요
다음 데이터베이스가 만족하지 않는 제약조건은? (단, STUDENT 릴레이션의 Dept_No는 DEPARTMENT 릴레이션의 Dept_Number를 참조한다)
STUDENT ID Name Dept_No Birth_Data 20120011 이지연 1 1993-01-23 20130023 김병수 3 1994-11-05 20140101 김남현 3 1995-08-21 20144006 차기현 2 1995-04-19 20105789 안정민 4 1991-01-03
DEPARTMENT Dept_Name Dept_Number Quota Dean 컴퓨터공학과 1 35 김지연 전자공학과 2 40 정주현
유일성 제약조건
참조 무결성 제약조건
엔티티 무결성 제약조건
함수적 종속성 제약조건
STUDENT의 Dept_No 값 3·4가 DEPARTMENT의 Dept_Number에 없으므로 참조 무결성 제약조건을 만족하지 않는다.
외래키 값은 참조 릴레이션의 기본키 값이거나 NULL이어야 한다.
오류나 개정된 내용이 보이면 알려주세요
외부, 개념, 내부 스키마로 구성되는 3-레벨 스키마 구조와 데이터 독립성에 대한 설명으로 옳지 않은 것은?
내부 레벨 또는 내부 스키마는 데이터베이스의 물리적 스토리지 구조를 기술한다.
논리적 데이터 독립성은 응용 프로그램이나 데이터베이스의 논리적 구조에 영향을 주지 않고 DBMS가 데이터의 물리적 구조를 변경할 수 있는 것을 말한다.
외부 스키마는 특정 사용자 그룹이 관심을 가지고 있는 데이터베이스의 일부분을 기술하며 데이터베이스의 나머지 부분을 그 사용자 그룹으로부터 숨겨 준다.
SQL 뷰가 정의된 기본 테이블이 확장된다든지 뷰가 속해 있는 테이블이 더 늘어난다고 하더라도 기존의 뷰를 사용하는 프로그램이나 사용자는 영향을 받지 않으므로, SQL 뷰는 데이터의 논리적 독립성을 어느 정도 제공할 수 있다.
응용 프로그램이나 논리 구조에 영향 없이 물리 구조를 바꿀 수 있는 것은 물리적 데이터 독립성이므로, 이를 논리적 독립성이라 한 설명이 옳지 않다.
논리적 데이터 독립성은 개념 스키마가 바뀌어도 외부 스키마·응용 프로그램이 영향을 받지 않는 성질이다.
오류나 개정된 내용이 보이면 알려주세요
다음 SQL 명령어 중 데이터 정의어(DDL)만을 고르면?ㄱ. ALTER
ㄴ. DROP
ㄷ. TRUNCATE
ㄹ. GRANT
ㅁ. COMMIT
ㄱ, ㅁ
ㄴ, ㄷ
ㄷ, ㄹ
ㄹ, ㅁ
DDL로만 이루어진 조합은 DROP, TRUNCATE(ㄴ, ㄷ)이다.
ALTER·DROP·TRUNCATE는 객체 구조를 정의·변경·제거하는 DDL이고, GRANT는 DCL, COMMIT은 트랜잭션 제어어(TCL)다.
오류나 개정된 내용이 보이면 알려주세요
다음 데이터베이스 스키마를 보고, 아래 SQL 질의문과 동등한 관계대수식은?○ 스키마
사원(사원번호, 부서번호, 급여, 취미)
부서(부서번호, 부서명, 건물층, 전화번호)
재정(부서번호, 예산, 매출, 비용)
○ 질의문Select D.부서명, F.예산
From 사원 E, 부서 D, 재정 F
Where E.부서번호=D.부서번호 and D.부서번호=F.부서번호
and D.건물층=1 and E.급여>=3000000
and E.취미=‘테니스’
동등한 식은 사원에서 급여·취미 조건을 선택해 부서번호를 추출하고, 건물층=1인 부서의 부서번호·부서명과 조인한 뒤 재정의 예산·부서번호와 조인해 부서명·예산을 투영한 식이다.
선택·투영을 조인 앞으로 내려 보내도 결과가 같다는 관계대수 동치를 이용한 형태다.
오류나 개정된 내용이 보이면 알려주세요
다음 릴레이션 R과 S에 대한 조인 연산 결과가 옳지 않은 것은? (단, ⋈N은 자연 조인, ⟕은 왼쪽 외부 조인, ⟖은 오른쪽 외부 조인, ⋉은 세미 조인을 의미한다)
| A | B | C |
|---|---|---|
| a1 | b1 | c1 |
| a2 | b2 | c2 |
| a3 | b3 | c3 |
| a4 | b3 | c3 |
| a5 | b5 | c5 |
| B | C | D |
|---|---|---|
| b1 | c1 | d1 |
| b2 | c2 | d2 |
| b2 | c2 | d3 |
| b3 | c3 | d4 |
| b4 | c4 | d5 |
R ⋈N S
| A | B | C | D |
|---|---|---|---|
| a1 | b1 | c1 | d1 |
| a2 | b2 | c2 | d2 |
| a2 | b2 | c2 | d3 |
| a3 | b3 | c3 | d4 |
| a4 | b3 | c3 | d4 |
R ⟕R.B=S.B and R.C=S.C S
| A | B | C | D |
|---|---|---|---|
| a1 | b1 | c1 | d1 |
| a2 | b2 | c2 | d2 |
| a2 | b2 | c2 | d3 |
| a3 | b3 | c3 | d4 |
| a4 | b3 | c3 | d4 |
| a5 | b5 | c5 | NULL |
R ⟖R.B=S.B and R.C=S.C S
| A | B | C | D |
|---|---|---|---|
| a1 | b1 | c1 | d1 |
| a2 | b2 | c2 | d2 |
| a2 | b2 | c2 | d3 |
| a3 | b3 | c3 | d4 |
| a4 | b3 | c3 | d4 |
| NULL | b4 | c4 | d5 |
R ⋉R.B=S.B and R.C=S.C S
| A | B | C |
|---|---|---|
| a1 | b1 | c1 |
| a2 | b2 | c2 |
| a3 | b3 | c3 |
세미 조인 결과에 (a4, b3, c3)이 빠져 있으므로 이 결과가 옳지 않다.
세미 조인은 S와 B·C 값이 일치하는 R의 투플을 R의 속성만으로 돌려준다. (b3, c3)은 S에 있으므로 a1·a2·a3·a4의 네 투플이 나와야 한다.
오류나 개정된 내용이 보이면 알려주세요
분산 데이터베이스 관리시스템에서 복수의 분할된 물리적 데이터베이스를 논리적으로 단일화된 데이터베이스처럼 인식하게 하기 위한 투명성(transparency)에 대한 설명으로 옳지 않은 것은?
단편화(fragmentation) 투명성은 사용자들이 릴레이션이 어떻게 단편화되어 있는지 알 필요가 없다.
장애(failure) 투명성은 다수의 트랜잭션이 동시에 수행되는 경우에도 오류 없이 결과의 일관성이 유지되어야 하는 성질이다.
중복(replication) 투명성은 중복된 데이터가 무엇인지 저장 위치 등에 대한 정보를 사용자가 별도로 인지할 필요가 없어야 하는 성질이다.
위치(location) 투명성은 사용자나 애플리케이션에서 작업을 수행하기 위해 데이터의 물리적인 위치도 알 필요가 없어야 하는 성질이다.
여러 트랜잭션이 동시에 수행되어도 결과의 일관성을 유지하는 성질은 병행(concurrency) 투명성이므로, 이를 장애 투명성이라 한 설명이 옳지 않다.
장애 투명성은 사이트·통신 장애가 생겨도 트랜잭션의 원자성이 보장되어 사용자가 장애를 의식하지 않게 하는 성질이다.
오류나 개정된 내용이 보이면 알려주세요
다음 사원 테이블에서 차수와 카디날리티 값을 바르게 연결한 것은?
| 사번 | 이름 | 직급 | 부서 |
|---|---|---|---|
| 108002 | 김진수 | 부장 | 인사 |
| 105123 | 이수진 | 대리 | 연구 |
| 128372 | 박지훈 | 과장 | 영업 |
3 3
3 4
4 3
4 4
사원 테이블의 차수는 4, 카디날리티는 3이다.
차수(degree)는 애트리뷰트(열)의 수로 사번·이름·직급·부서 4개이고, 카디날리티(cardinality)는 투플(행)의 수로 3개다.
오류나 개정된 내용이 보이면 알려주세요
데이터베이스 암호화 방식 중 API 방식에 대한 설명으로 옳지 않은 것은?
API 방식은 암․복호화 모듈을 어플리케이션 서버에 설치한다.
플러그인 방식보다 암․복호화 속도가 상대적으로 빠르다.
플러그인 방식보다 응용 프로그램의 수정이 필요 없어 사용이 편리하다.
플러그인 방식보다 데이터베이스 서버의 부하가 거의 발생하지 않는다.
API 방식은 응용 프로그램이 암·복호화 API를 직접 호출하므로 응용 프로그램 수정이 필요하다. 수정이 필요 없어 편리하다는 설명이 옳지 않다.
응용 프로그램 수정이 거의 없는 쪽은 DB 서버에 모듈을 설치하는 플러그인 방식이다.
오류나 개정된 내용이 보이면 알려주세요
여러 트랜잭션을 병행수행(concurrency)하였을 때, 발생할 수 있는 문제 가운데 갱신분실(lost update)에 대한 설명으로 옳은 것은?
두 개의 트랜잭션은 서로 상대 트랜잭션이 완료되기만을 기다리고 있는 상태로, 두 트랜잭션은 영원히 완료될 수 없는 문제이다.
장애가 발생한 트랜잭션에 대한 롤백(rollback)이 수행되기 전에, 변경된 데이터를 가져가 사용하는 다른 트랜잭션의 수행이 완료되어 롤백이 실행될 수 없는 문제이다.
하나의 트랜잭션이 수행한 데이터 변경 연산의 결과를 다른 트랜잭션이 덮어써서 기존 트랜잭션의 변경 연산 결과가 손실되는 것이다.
하나의 트랜잭션이 여러 개의 데이터에 대해 변경 연산을 실행했을 때, 일관성이 유지되지 않는 데이터베이스로부터 데이터를 가져와 연산을 실행함으로 발생될 수 있다.
갱신분실은 한 트랜잭션의 변경 결과를 다른 트랜잭션이 덮어써서 앞선 갱신이 사라지는 문제다.
두 트랜잭션이 같은 값을 읽고 각자 갱신해 기록하면 나중에 쓴 값만 남는다.
오류나 개정된 내용이 보이면 알려주세요
다중 데이터베이스 시스템에서 2단계 완료 프로토콜(two-phase commit protocol) 기법에 대한 설명으로 옳은 것은?
1단계 수행 중 고장이 발생하면, 해당 트랜잭션은 회복되거나 완료된다.
트랜잭션 관리자(Transaction Manager: TM)는 그 지역 사이트에서 시작된 트랜잭션의 실행을 조정하는 역할을 한다.
1단계에서는 조정자가 메시지[prepare T]에 대한 응답을 모든 사이트로부터 받으면 트랜잭션 T가 완료(commit)될 수 있는지 결정할 수 있다.
2단계에서 조정자가 모든 참여 사이트로부터 메시지[ready T]를 받았다면 트랜잭션 T는 완료되고 그렇지 않으면 취소된다.
2단계에서 조정자는 모든 참여 사이트로부터 ready T를 받으면 T를 완료하고, 그렇지 않으면 취소한다.
1단계는 조정자가 prepare T를 보내고 각 사이트가 ready 또는 abort로 응답하는 과정이며, 응답을 모아 완료 여부를 결정하는 것은 2단계의 일이다.
오류나 개정된 내용이 보이면 알려주세요
데이터베이스 재해 복구(disaster recovery) 기술에 대한 설명으로 옳은 것은?
재해적 실패가 발생하면 가장 최근의 백업 사본이 디스크에서 백업장치로 적재된다.
은행, 보험, 주식 등과 같은 중요한 응용에서는 데이터 전체를 주기적으로 백업하여 안전한 장소에 보관한다.
시스템 로그를 백업하면 사용자는 마지막 데이터베이스 백업 이후에 수행한 모든 트랜잭션을 잃게 된다.
백업된 시스템 로그에 기록되어 있는 모든 완료된 트랜잭션의 실행결과는 데이터베이스를 undo하는 데 사용될 수 있다.
은행·보험·주식처럼 중요한 응용에서는 데이터 전체를 주기적으로 백업해 안전한 장소에 보관한다는 설명이 옳다.
재해 시에는 백업본을 복원한 뒤 백업된 로그로 이후의 완료 트랜잭션을 redo해 최근 상태까지 되살린다.
오류나 개정된 내용이 보이면 알려주세요
릴레이션 R에 K 단계 합병(k-way merge) 정렬을 수행하고자 한다. 정렬이 완료될 때까지 최소 몇 번의 디스크 접근(읽기+쓰기 횟수)이 필요한가? (단, 문제에서 언급되지 않은 다른 기법은 고려하지 않는다)○ 각 디스크 블록에는 레코드 200개씩 저장되어 있음
○ 주 기억장치의 최대 사용가능한 크기: 레코드 1,000개 크기
○ 전체 정렬해야 할 레코드의 개수: 3,200개
32회
64회
96회
128회
오류나 개정된 내용이 보이면 알려주세요
[7급 국가직 데이터베이스론] 21년 1회차 시험지 PDF 다운로드·인쇄 →
[7급 국가직 데이터베이스론] 21년 1회차 정답과 해설은 무료인가요?
이 페이지의 25문항 정답과 해설은 로그인 없이 무료로 볼 수 있습니다. 무제한 풀이·실전 모의고사·PDF 출력·전자책 다운로드는 베이직 플랜에 포함됩니다.
이 회차를 CBT 로 직접 풀어볼 수 있나요?
7급 국가직 데이터베이스론 기출문제 암기장에서 이 회차를 회차별·랜덤으로 풀고 오답노트에 자동으로 모을 수 있습니다. 7급 국가직 데이터베이스론 기출문제 풀러 가기 →
시험지 PDF 나 전자책으로도 볼 수 있나요?
이 회차의 인쇄용 시험지 PDF 페이지에서 시험지를 받을 수 있습니다. 시험지 PDF 받기 →
