데이터 마이닝 : 데이터 웨어하우스에 저장된 데이터 집합에서 사용자의 요구에 따라 유용하고 가능성 있는 정보를 발견하기 위한 기법
군집화 : 상호 간의 유사한 특성을 갖는 데이터들을 집단화(Clustering)하는 방법
문제 2
Q. 관계 대수에서 사용되는 순수 관계 연산자 중 DIVISION에 대한 설명이다. 다음 괄호 ( ) 안에 들어갈 알맞은 기호를 쓰시오.
두 릴레이션 R(X)와 S(Y)에 대해 Y⊆X이고, X-Y=Z라고 하면, R(X)와 R(Z, Y)는 동일한 표현이다. 이때 릴레이션 R(Z, Y)에 대한 S(Y)의 DIVISION 연산은 S(Y)의 모든 튜플에 연관되어 있는 R(Z)의 튜플을 선택하는 것으로 다음과 같이 표기한다.
Q. 데이터베이스와 관련한 다음 <처리 조건>에 부합하도록 괄호 (1) ~ (4)를 채워 SQL문을 완성하시오.
<처리 조건> 1. 이름, 학번, 전공, 성별, 생년월일로 구성된 <학생> 테이블을 정의하는 SQL문을 작성하시시오. 단, 제약 조건은 다음과 같다. - 이름은 NULL이 올 수 없고, 학번은 기본키다. - 전공은 <학과> 테이블의 학과코드를 참조하는 외래키로 사용된다. - <학과> 테이블에서 삭제가 일어나면 관련된 튜플들의 전공 값을 NULL로 만든다. - <학과> 테이블에서 학과코드가 변경되면 전공 값도 같은 값으로 변경된다. - 생년월일은 1980-01-01 이후의 데이터만 저장할 수 있다. - 제약 조건의 이름은 '생년월일제약'으로 한다. - 각 속성의 데이터형은 적당하게 지정한다. 단, 성별은 도메인 'SEX'를 사용한다.
2. SQL문의 문법은 ISO/IEC 9075 표준을 따른다.
<SQL문>
CREATE TABLE 학생
(이름 VARCHAR(15) ( 1 ),
학번 CHAR(8),
전공 CHAR(5),
성별 SEX,
생년월일 DATE,
( 2 ) KEY(학번),
( 3 ) KEY(전공) ( 4 ) 학과(학과코드)
ON DELETE SET NULL,
ON UPDATE CASCADE,
CONSTRANT 생년월일제약
CHECK(생년월일 >= '1980-01-01'));
비정규화 : 정규화로 인해 여러 개로 분해된 릴레이션들에게 원하는 정보를 얻기 위해서는 조인을 사용하여 다시 연결해야 하는데, 지나치게 자주 조인을 사용하면 응답 속도가 떨어지므로 정규화에 위배되지만 성능 향상을 위해 다시 테이블을 합쳐야 한다. 이것을 비정규화라고 한다.
2018년 1회
문제 1
Q. 다음 데이터베이스 함수 종속과 관련된 다음 설명에서 괄호(①, ②)에 가장 부합하는 답안을 쓰고 괄호(③)에는 완전 함수 종속의 개념에 대해 간단히 서술하시오.
함수 종속은 데이터의 의미를 표현하는 것으로, 현실 세계를 표현하는 제약 조건이 되는 동시에 데이터베이스에서 항상 유지되어야 할 조건이다.
어떤 릴레이션(관계) R에서 A와 B를 각각 R의 애트리뷰트(속성/column) 집합이라고 가정할 때 애트리뷰트 A의 값 각각에 대해서 시간에 관계없이 항상 애트리뷰트 B의 값이 오직 하나만 연관되어 있을 때 B는 A에 함수 종속이라 하고 A → B로 표기한다. 만약 B가 A에 종속되어 A 값을 알면 B 값을 알 수 있을 때 A를 ( ① )(이)라고 하고, B를 ( ② )(이)라고 한다.
함수 종속에는 이행적 함수 종속, 부분 함수 종속, 완전 함수 종속이 있다. 완전 함수 종속의 개념에 대해 간단히 서술하시오. ( ③ )
Q. 다음 데이터베이스 관리 시스템의 내용을 참고하여 괄호(①, ②)에 들어갈 알맞은 DBMS 구성 요소 명칭을 작성하시오.
데이터베이스 관리 시스템(Database Management System : DBMS)이란 응용 프로그램과 데이터베이스 사이의 중재자로서 사용자의 요구사항에 효율적으로 서비스를 수행하기 위하여 제공되는 데이터베이스 관리 소프트웨어이다. DBMS는 물리적인 데이터 저장 구조와 외부 인터페이스 사이의 다양한 소프트웨어들로 구성되어 있다.
Q. 데이터베이스와 관련된 다음 설명 중, 괄호(①, ②, ③)에 들어갈 가장 적합한 용어를 쓰시오.
회복(Recovery)은 트랜잭션들을 실행하는 도중 장애(Failure)가 발생하여 데이터베이스가 손상되었을 경우 손상되기 이전의 정상 상태로 복구하는 작업이다.
- 실행 장애(Action Failure) : 사용자의 실수, 무결성 규정 위반 등으로 질의 실행이 실패하는 현상 - 트랜잭션 장애(Transaction Failure) : 트랜잭션 내부에서 입력 데이터 오류, 불명확한 데이터, 시스템 자원 요구의 과다 등 비정상적인 상황으로 인하여 트랜잭션 실행이 중지되는 현상 - ( ① ) 장애(System Failure) : 데이터베이스에는 손상을 입히지 않으나 하드웨어 오동작, 정전, 소프트웨어(운영체제나 DBMS 등) 오류, 교착 상태 등에 의해 실행중인 모든 트랜잭션들이 더 이상 실행을 계속할 수 없는 현상 - 미디어 장애(Media Failure) : 저장 장치인 디스크 블록의 손상이나 디스크 헤드의 충돌 등에 의해 데이터베이스 일부 또는 전부가 물리적으로 손상되는 현상
회복 관리기는 로그(Log), 메모리 ( ② ) 등을 이용하여 회복 기능을 수행하는 DBMS의 핵심 구성 요소이다. 회복 관리기는 트랜잭션 실행이 성공적으로 완료되지 못하면 로그를 이용하여 트랜잭션이 데이터베이스에 생성했던 모든 변화를 취소(Undo)시켜서, 트랜잭션 실행 이전의 원래 상태로 되돌리는 역할을 담당한다.
회복 기법의 종류는 다음과 같다. - 연기 갱신(Deferred Update) 기법 : 연기 갱신 기법은 트랜잭션이 성공적으로 종료될 때까지 데이터베이스에 대한 실질적인 갱신을 연기하는 기법이다. - 즉각 갱신(Immediate Update) 기법 : 즉각 갱신 기법은 트랜잭션이 데이터를 변경하면 트랜잭션이 부분 완료되기 전이라도 즉시 실제 데이터베이스에 반영하는 기법이다. - 그림자 페이지(Shadow Paging) 기법 : 그림자 페이지 기법은 갱신 이전의 데이터베이스를 일정 크기의 페이지 단위로 구성하여 각 페이지마다 복사본인 그림자 페이지로 별도 보관해 두고, 실제 페이지를 대상으로 트랜잭션에 대한 변경 작업을 수행하는 기법이다. - ( ③ ) 기법 : 시스템 장애가 발생하였을 경우, Redo와 Undo를 수행하기 위해 로그 전체를 조사해야 하는 경우를 피하기 위한 기법이다.
Q. 다음 데이터베이스의 DCL(Data Control Language)과 관련된 다음 설명에서 괄호(① ~ ④)에 가장 적합한 답을 쓰시오.
DCL은 데이터의 보안, 무결성, 회복, 병행 제어 등을 정의하는 데 사용하는 언어이다. DCL은 데이터베이스관리자(DBA)가 데이터 관리를 목적으로 사용한다.
DCL의 유형 중, ( ① )은(는) 트랜잭션의 모든 변경 내용들을 영구적으로 데이터베이스에 반영하는 명령어이다. 트랜잭션이 성공적으로 끝나면 데이터베이스가 새로운 일관성(Consistency) 상태를 가지기 위해 수행된 모든 변경을 데이터베이스에 반영하여 ( ① )하여야 한다.
DCL의 유형 중, ( ② )은(는) 변경된 모든 내용들을 취소하고 데이터베이스를 이진 상태로 되돌리는 명령어이다. 트랜잭션의 일부를 성공적으로 끝내지 못하면 데이터베이스가 비일관성(Inconsistency)인 상태를 가질 수 있기 때문에(즉 트랜잭션이 수행한 일부 변경이 데이터베이스에 반영될 가능성이 있기 떄문에) 일부분만 ( ① )된 트랜잭션은 ( ② )되어야 한다.
DCL의 유형 중, ( ③ )은(는) 데이터베이스 관리자가 데이터베이스 사용자에게 권한을 부여하는 명령어이며, ( ④ )은(는) 권한을 취소하기 위한 명령어이다. 부여할 수 있는 권한의 종류에는 ALL, SELECT, INSERT, DELETE, UPDATE, ALTER 등이 있다. ( ③ )와(과) ( ④ )의 추가적인 옵션 중 권한 취소 시 권한을 부여받았던 사용자가 다른 사용자에게 부여한 권한도 연쇄적으로 취소하는 옵션은 ( ⑤ )이다.
스키마는 데이터베이스의 구조와 제약 조건에 관한 전반적인 명세(Specification)를 의미하며, 데이터베이스를 구성하는 데이터 개체(Entity), 속성(Attribute), 관계(Relationship) 및 데이터 조작 시 데이터 값들이 갖는 제약 조건 등에 관해 전반적으로 정의한다.
( ① )은(는) 사용자나 응용 프로그래머가 각 개인의 입장에서 필요로 하는 데이터베이스의 논리적 구조를 정의한 것이다. 전체 데이터베이스의 한 논리적인 부분으로 볼 수 있으므로 서브 스키마(Sub Schema)라고도 한다. 하나의 데이터베이스 관리 시스템에는 여러 개가 존재할 수 있으며, 하나의 ( ① )은(는) 여러 개의 응용 프로그램이나 사용자에 의해 공유될 수 있다.
단순히 스키마라고 하면 ( ② )을(를) 의미하며, 개체 간의 관계와 제약 조건을 나타내고 데이터베이스의 접근 권한, 보안 정책 및 무결성 규정에 관한 명세를 정의한 것이다. 데이터베이스의 전체적인 논리적 구조로서, 모든 응용 프로그램이나 사용자들이 필요로 하는 데이터를 통합한 조직 전체의 데이터베이스 명세로서 하나만 존재한다.
( ③ )은(는) 데이터베이스의 물리적 구조를 정의한 것으로, 물리적 저장장치의 관점에서 본 전체 데이터베이스의 명세로서 하나만 존재한다. ( ② )의 물리적 저장 구조에 대한 정의를 기술하고, 시스템 프로그래머나 시스템 설계자가 보는 관점의 스키마이다.
관계대수는 관계형 데이터베이스에서 원하는 정보와 그 정보를 어떻게 유도하는가를 기술하는 절차적 언어이다. 관계대수는 하나 또는 두 개의 릴레이션을 입력으로 받아들여 결과로서 새로운 릴레이션을 생성해내는 연산들의 집합이다. 관계대수의 연산에는 기본 연산인 SELECT, PROJECT, JOIN, DIVISION 등과 집합 연산인 UNION, DIFFERENCE, INTERSECTION, CARTESIAN, PRODUCT 등이 있다.
(2) SELECT 학번 FROM 학생 WHERE 이름='이%' ORDER BY 학년 DESC;
문제 2
Q. 다음 관계형 데이터 모델과 관련된 다음 설명에서 괄호(① ~ ⑥)에 가장 적합한 답을 쓰시오.
관계형 데이터 모델은 데이터를 테이블(Table) 또는 릴레이션(Relation)의 구조로 표현하는 논리적 데이터 모델이다. 관계형 데이터 모델에서는 데이터를 원자 값(Atomic Value)으로 갖는 이차원의 테이블로 표현하는데, 이를 릴레이션이라 한다. 릴레이션의 구조는 물리적인 저장 구조를 나타내는 것이 아닌 논리적 구조이므로 다양한 정렬 기준을 통하여 릴레이션을 표현할 수 있다.
릴레이션은 구조를 나타내는 릴레이션 스키마(Relation Schema)와 실제 값들인 릴레이션 인스턴스(Relation Instance)로 구성된다. 릴레이션의 열을 속성 또는 ( ① )(이)라 하고, 행을 ( ② )(이)라 한다. 릴레이션에서 하나의 ( ① )이(가) 취할 수 있는 같은 타입의 원자(Atomic) 값들의 집합을 ( ③ )(이)라고 한다. ( ③ )은(는) 실제 ( ① ) 값이 나타날 때 그 값의 합법 여부를 시스템이 검사하는 데에도 이용된다.
<학생> 릴레이션
학번
이름
학년
신장
학과
15001
홍길동
2
170
CD
15002
이순신
1
169
CD
14012
임꺽정
2
180
ID
15032
장보고
4
- ( ① ) : 데이터베이스를 구성하는 가장 작은 논리적 단위이며, 파일 구조상의 데이터 항목 또는 데이터 필드에 해당한다. <학생> 릴레이션의 ‘학번’, ‘이름’, ‘학년’, ‘신장’, ‘학과’가 여기에 속한다. - ( ② ) : 릴레이션을 구성하는 각각의 행을 말하며, ( ① )의 모임으로 구성된다. 파일 구조에서 레코드와 같은 의미이다. <학생> 릴레이션의 ‘15001’, ‘홍길동’, ‘2’, ‘170’, ‘CD’가 하나의 ( ② )(이)다. - ( ③ ) : <학생> 릴레이션에는 표시되지 않았으나 ‘학년’에 1~4의 숫자 값만을 저장하도록 제한해 두었다면 이것이 ( ③ )이(가) 된다. - ( ④ ) : 데이터베이스에서 아직 알려지지 않거나 모르는 값으로서 ‘해당 없음’ 등의 이유로 정보 부재를 나타내기 위해 사용하는, 이론적으로 아무것도 없는 특수한 데이터를 말한다. <학생> 릴레이션에서 ‘장보고’ 학생의 데이터 중 비어있는 ‘신장’과 ‘학과’의 값이 이에 해당한다. - ( ⑤ ) : ( ① )의 수를 의미하는 용어로, <학생> 릴레이션에서 ( ⑤ )은(는) 5다. - ( ⑥ ) : ( ② )의 수를 의미하는 용어로, <학생> 릴레이션에서 ( ⑥ )은(는) 4다.
관계형 데이터베이스에서 사용되는 SQL은 데이터베이스의 조작과 관리에 사용되는 프로그래밍 언어이다. 1974년 IBM 연구소에서 개발한 SEQUEL에서 유래한 SQL은 국제표준 데이터베이스 언어이며, 많은 회사에서 관계형 데이터베이스(RDB)를 지원하는 언어로 채택하고 있다. 관계대수와 관계해석을 기초로 한 혼합 데이터 언어이며, 데이터 구조의 정의, 데이터 조작, 데이터 제어 기능을 모두 갖추고 있다.
DCL은 이러한 SQL에서 데이터 관리를 목적으로 사용하는 언어이다. 주로 데이터의 보안, 무결성, 회복, 병행 수행 제어 등을 정의하는 데 사용된다. 그 중 ( ① )은(는) 데이터베이스 사용자에게 사용 권한을 부여하는데 사용하는 명령어이다.
( ① )은(는) ALL, SELECT, INSERT, DELETE, UPDATE, INDEX, ALTER 등의 다양한 권한을 다른 사용자에게 부여할 수 있으며, 부여받을 권한을 다른 사용자에게 다시 부여할 수 있는 권한을 부여하는 WITH GRANT OPTION 또한 존재한다.
예) GILDONG에게 STUDENT 테이블에 대한 모든 권한과 다른 사람에게도 권한을 부여할 수 있는 권한까지 부여한다.
( 1 ) ALL ON STUDENT TO GILDONG WITH GANT OPTION;
이와 반대로 부여된 권한을 취소하는 명령어는 ( ② )(이)라고 한다. 취소할 수 있는 권한의 종류는 ( ① )와(과) 동일하다. ( ② )(에)는 WITH GRANT OPTION을 취소할 수 있는 GRAND OPTION FOR가 있으며, 권한 해제 시 권한을 부여받았던 사용자가 다른 사용자에게 부여한 권한도 연쇄적으로 해제시키는 CASCADE가 있다.
예) GILDONG에게 부여된 STUDENT 테이블에 대한 권한은 유지하고, 다른 사용자에게 권한을 부여할 수 있는 권한만 취소한다.
( 2 ) GRANT OPTION FOR ALL ON STUDENT FROM GILDONG;
( ① )은(는) 기존의 관리 방법이나 분석 체계로는 처리하기 어려운 막대한 양의 정형 또는 비정형 데이터 집합으로, 스마트 단말의 빠른 확산, 소셜 네트워크 서비스의 활성화, 사물 네트워크의 확대로 데이터 폭발이 더욱 가속화됨에 따라 등장하였다. ( ① )이(가) 주목받고 있는 이유는 기업이나 정부, 포털 등이 ( ① )을(를) 효과적으로 분석하여 미래를 예측해 최적의 대응 방안을 찾고, 이를 수익으로 연결하여 새로운 가치를 창출할 수 있기 때문이다.
이렇게 실시간으로 발생하는 대용량의 연속적인 데이터의 흐름을 관리하는 시스템을 ( ② )(이)라고 한다. 연속적인 데이터의 흐름을 데이터 스트림이라고 하는데, ( ② )은(는) 이러한 데이터 스트림에 대해 등록된 질의를 연속으로 수행할 수 있도록 대용량의 데이터 스트림 처리에 최적화되어 있다.
데이터를 데이터베이스에 저장할 때 불필요하게 중복되어 릴레이션 조작 시 예기치 못한 곤란한 현상이 발생하는 것을 ( ③ )(이)라고 한다. 의도와는 상관없이 원하지 않은 값들이 삽입되거나, 삭제되거나, 갱신 시 모순이 발생하는 현상들이 모두 ( ③ )에 해당한다.
이러한 ( ③ )을(를) 방지하기 위해 데이터들의 중복성 및 종속성을 배제하는 정규화를 수행한다. 테이블에 속한 모든 속성의 도메인이 원자 값만으로 되어 있는 정규형을 1NF라고 한다. 아래 그림은 1NF에서 ( ④ )을(를) 제거하여 ( ⑤ )을(를) 만드는 과정이다.
<Table R>
A(key)
B(key)
C
D
A345
1001
Seoul
Pmre
D347
1001
Busan
Preo
A210
1007
Gwangju
Ciqen
A345
1007
Seoul
Esto
B230
1007
Busan
Loid
D347
1201
Busan
Preo
<Table R의 함수적 종속 관계>
A, B → C, D ( ⑥ )
↓
<Table R1>
A(key)
B(key)
D
A345
1001
Pmre
D347
1001
Preo
A210
1007
Ciqen
A345
1007
Esto
B230
1007
Loid
D347
1201
Preo
<Table R2>
A(key)
C
A345
Seoul
D347
Busan
A210
Gwangju
B230
Busan
<Table R>에서 함수적 종속관계를 보았을 때, C는 key에 해당하는 A와 B중 A에만 종속되는 ( ④ )이므로 C를 테이블에서 분리하면 <Table R1>과 <Table R2>와 같이 ( ⑤ )에 해당하는 테이블이 완성된다.
Q. 다음 트랜잭션과 관련된 다음 설명에서 괄호 ( )에 공통으로 들어갈 가장 적합한 답을 쓰시오.
트랜잭션은 데이터베이스에서 하나의 논리적 기능을 수행하기 위한 일련의 연산 집합으로서 작업의 단위이며, 데이터베이스 관리 시스템에서 회복 및 병행 수행 시 처리되는 작업의 논리적 단위이다. 하나의 트랜잭션은 정상적으로 종료될 경우 COMMIT 연산이 수행되어 변경 내용을 데이터베이스에 반영하며, 비정상적으로 종료될 경우 ROLLBACK 연산이 수행되어 모든 변경 작업을 취소하고 이전상태로 되돌린다.
이러한 트랜잭션이 갖추어야 할 특성으로는 ( ), 원자성(Atomicity), 일관성(Consistency), 영속성(Durability)이 있다.
( )은(는) 한 트랜잭션이 데이터를 갱신하는 동안 이 트랜잭션이 완료되기 전에는 갱신중인 데이터를 다른 트랜잭션들이 접근하지 못하도록 하는 성질이다. 여러 트랜잭션들이 동시에 수행되어도 그 결과는 순차적으로 실행된 결과와 같아야 함을 의미한다. 예를 들어 A계좌와 B계좌가 존재하여 A계좌에서 B계좌로 일정 금액을 이체하는 트랜잭션을 수행할 때 다른 트랜잭션이 A계좌와 B계좌에 접근할 수 없어야 한다.
1개 *[이름] : 속성 값 중 중복된 값이 없으므로 대체키에 해당한다. *[전화번호] : NULL이 있으므로 대체키에 해당하지 않는다.
문제 2
Q. 다음 데이터베이스 관리 시스템의 내용을 참고하여 괄호(①, ②)에 들어갈 알맞은 DBMS 구성 요소 명칭을 작성하시오.
데이터베이스 관리 시스템(Database Management System : DBMS)이란 응용 프로그램과 데이터베이스 사이의 중재자로서 사용자의 요구사항에 효율적으로 서비스를 수행하기 위하여 제공되는 데이터베이스 관리 소프트웨어이다. DBMS는 물리적인 데이터 저장 구조와 외부 인터페이스 사이의 다양한 소프트웨어들로 구성되어 있다.
INSERT INTO 학생 VALUES(193793, '홍길동', 3, '경영학개론', '010-1234-1234');
문제 5
Q. 다음은 T1~T5의 트랜잭션이 병행 처리되는 과정에서 시스템 오류로 시스템 장애(System Failure)가 발생한 상황을 <그림>으로 나타낸 것이다. 시스템 회복을 위해 REDO와 UNDO를 수행한다고 가정했을 때, REDO와 UNDO가 수행되는 트랜잭션을 적으시오. 단, 각 트랜잭션의 왼쪽과 오른쪽 끝의 원은 각 시작과 완료를 의미한다.
*REDO : 트랜잭션의 시작(start)과 완료(commit)에 대한 기록이 있는 트랜잭션들의 작업을 재작업한다. *UNDO : 트랜잭션의 시작을 나타내는 'start'는 있지만, 완료를 나타내는 'commit' 기록이 없는 트랜잭션들이 작업한 변경 내용들을 모두 취소한다.
2020년 1회
문제 1
Q. 다음은 트랜잭션의 특징이다. 괄호(①, ②)에 들어갈 알맞은 특징을 쓰시오.
( ① )
트랜잭션의 연산은 데이터베이스에 모두 반영되도록 완료(Commit)되든지 아니면 전혀 반영되지 않도록 복구(Rollback)되어야 한다. (All or Nothing)
일관성
트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환한다.
( ② )
둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어들 수 없다.
Q. 다음의 <성적> 테이블에서 과목별 점수의 평균이 90점 이상인 '과목이름', '최소점수', '최대점수'를 검색하고자 한다. <처리조건>을 참고하여 적합한 SQL문을 작성하시오.
<성적>
학번
과목번호
과목이름
학점
점수
a2001
101
컴퓨터구조
6
95
a2002
101
컴퓨터구조
6
84
a2003
302
데이터베이스
5
89
a2004
201
인공지능
5
92
a2005
302
데이터베이스
5
100
a2006
302
데이터베이스
5
88
a2007
201
인공지능
5
93
<결과>
과목이름
최소점수
최대점수
데이터베이스
88
100
인공지능
92
93
<처리 조건> - WHERE 문은 사용하지 않는다. - GROUP BY와 HAVING을 이용한다. - 집계함수(Aggregation Function)를 사용하여 명령문을 구성한다. - '최소점수', '최대점수'는 별칭(Alias)을 위한 AS문을 이용한다. - 명령문의 마지막의 세미콜론(;)은 생략이 가능하다. - 인용 부호가 필요한 경우 작은 따옴표(' ')를 사용한다.
Q. 데이터베이스의 회복(Recovery) 기법에 관련된 다음 설명에서 괄호에 들어갈 알맞은 답을 쓰시오.
( )은 트랜잭션이 데이터를 변경하면 트랜잭션이 부분 완료되기 전이라도 즉시 실제 DB에 그 내용을 반영하는 기법으로, 장애가 발생하여 회복 작업할 경우를 대비하여 갱신된 내용들을 로그(Log)에 보관시킨다. ( )에서 회복작업을 수행할 경우 Redo 와 Undo 모두 수행이 가능하다.
<질의> 학생 테이블에서 학과별 튜플의 개수를 검색하시오. (단, 아래의 실행 결과가 되도록 한다.)
<학생>
학번
이름
학년
학과
주소
20160011
김영란
2
전기
서울
19210113
이재우
3
컴퓨터
대구
21168007
함소진
1
전자
부산
19168002
우혜정
3
전자
광주
18120073
김진수
4
컴퓨터
울산
<실행 결과>
학과
학과별튜플수
전기
1
컴퓨터
2
전자
2
<처리 조건> - WHERE 조건절은 사용할 수 없다. - GROUP BY는 반드시 포함한다. - 집계함수(Aggregation Function)를 적용한다. - 학과별튜플수 컬럼이름 출력에 Alias(AS)를 활용한다. - 문장 끝의 세미콜론(;)은 생략해도 무방하다. - 인용 부호 사용이 필요한 경우 단일 따옴표(' ' : Single Quotation)를 사용한다.
가용성은 인가받은 사용자는 시스템 내의 정보와 자원을 언제라도 사용할 수 있다는 보안 요건이다.
2021년 1회
문제 1
Q. 데이터베이스 설계에 대한 다음 설명에서 괄호(①~③)에 들어갈 알맞은 답을 쓰시오.
( ① ) : 논리적 구조로 표현된 데이터를 디스크 등의 저장장치에 저장할 수 있는 데이터로 변환하는 과정으로, 파일의 저장 구조 및 액세스 경로를 결정하며, 테이블 정의서 및 명세서가 산출된다. ( ② ) : 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정으로, 개념 스키마 모델링과 트랜잭션 모델링을 수행하며, 요구 조건 명세를 E-R 다이어그램으로 작성한다. ( ③ ) : 현실의 자료를 특정 DBMS가 지원하는 자료구조로 변환하는 과정으로, 트랜잭션의 인터페이스를 설계하고, 정규화를 통해 스키마를 평가 및 정제한다.
Q. 데이터 모델의 구성요소에 대한 다음 설명에서 괄호(①, ②)에 들어갈 알맞은 답을 쓰시오.
1. ( ① )은 데이터베이스에 저장된 실제 데이터를 처리하는 작업에 대한 명세로서 데이터베이스를 조작하는 기본 도구에 해당한다. 2. ( ② )는 논리적으로 표현된 객체 타입들 간의 관계로서 데이터의 구성 및 정적 성질을 표현한다. 3. 제약 조건은 데이터베이스에 저장될 수 있는 실제 데이터의 논리적인 제약 조건을 의미한다.
접근 통제는 데이터가 저장된 객체와 이를 사용하려는 주체 사이의 정보 흐름을 제한하는 것이다. 이러한 접근 통제에 관한 기술 중 ( )는 데이터에 접근하는 사용자의 신원에 따라 접근 권한을 부여하여 제어하는 방식으로, 데이터의 소유자가 접근 통제 권한을 지정하고 제어한다. 객체를 생성한 사용자가 생성된 객체에 대한 모든 권한을 부여받고, 부여된 권한을 다른 사용자에게 허가할 수도 있다.
DBMS는 데이터베이스에 치명적인 손실이 발생했을 때 이를 복구하기 위해 데이터베이스의 처리 내용이나 이용 상황 등 상태 변화를 시간 흐름에 따라 기록한 로그를 생성한다. - ( 1 ) : 데이터베이스가 비정상적으로 종료되었을 때, 디스크에 저장된 로그를 분석하여 트랜잭션의 시작(start)와 완료(commit)에 대한 기록이 있는 트랜잭션들의 작업을 재작업한다. 즉, 로그를 이용하여 해당 데이터 항목에 대해 이전 값을 이후 값으로 변경하는 연산이다. - ( 2 ) : 데이터베이스가 비정상적으로 종료되었을 때, 디스크에 저장된 로그를 분석하여 트랜잭션의 시작을 나타내는 'start'는 있지만, 완료를 나타내는 'commit' 기록이 없는 트랜잭션들이 작업한 내용들을 모두 취소한다. 즉, 로그를 이용하여 해당 데이터 항목에 대해 이후 값을 이전 값으로 변경한다.
키(Key)는 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성을 말한다. - 슈퍼키(Super Key)는 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키로 릴레이션을 구성하는 모든 튜플에 대해 ( ① )을 만족한다. - 후보키(Candidate Key)는 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별하기 위해 사용되는 속성들의 부분집합으로, ( ① ) 과 ( ② )을 만족하는 특징이 있다.
- ( ) 은 관계 데이터의 연산을 표현하는 방법으로 관계 데이터 모델의 제안자인 코드(E. F. Codd)가 수학의 술어 해석(Predicate Calculus)에 기반을 두고 관계 데이터베이스를 위해 제안했다. - 원하는 정보가 무엇이라는 것만 정의하는 비절차적 특성을 지니며, 원하는 정보를 정의할 때 계산 수식을 사용한다. - 튜플 해석식을 사용하는 튜플 ( )과 도메인 해석식을 사용하는 도메인 ( )으로 구분된다
Q. 함수적 종속(Functional Dependency)에 대한 다음 설명에서 괄호(① ~ ②)에 들어갈 알맞은 용어를 <보기>에서 찾아 쓰시오. (단, 테이블 <R>의 속성 ‘학생’과 ‘학과’의 밑줄은 키(Key)임을 의미한다.)
<R>
학생
학과
성적
학년
이순신
컴퓨터공학
A+
2
이순신
전기공학
B
2
유관순
경제학
B+
1
강감찬
문예창작
C
3
강감찬
한국사
C+
3
홍길동
영문학
B
4
- 테이블 <R>에서 '성적'은 기본키인 { 학생, 학과 }에 대해 ( ① ) Functional Dependency이다. - 테이블 <R>에서 '학년'은 기본키인 { 학생, 학과 } 중 '학생'만으로 식별이 가능하므로 기본키에 대해 ( ② ) Functional Dependency이다. - 임의의 테이블에 속성 A, B, C가 있을 때 A → B이고, B → C 일 때 A → C인 관계는 ( ③ ) Functional Dependency이다.
<보기>
(ㄱ) Hybrid (ㄴ) Multi Valued (ㄷ) Transitive (ㄹ) Full (ㅁ) Defined (ㅂ) Natural (ㅁ) Relational (ㅇ) Partial
관계대수는 관계형 데이터베이스에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어이다. 관계대수에 사용되는 연산은 다음과 같다.
- 합집합(UNION)은 두 릴레이션에 존재하는 튜플의 합집합을 구하되 결과로 생성된 릴레이션에서 중복되는 튜플은 제거되는 연산으로, 사용하는 기호는 ( ① ) 이다. - 차집합(DIFFERENCE)은 두 릴레이션에 존재하는 튜플의 차집합을 구하는 연산으로, 사용하는 기호는 ( ② ) 이다. - 교차곱(CARTESIAN PRODUCT)은 두 릴레이션에 있는 튜플들의 순서쌍을 구하는 연산으로, 사용하는 기호는 ( ③ )이다. - 프로젝트(PROJECT)는 주어진 릴레이션에서 속성 리스트(Attribute List)에 제시된 속성 값만을 추출하여 새로운 릴레이션을 만드는 연산으로, 사용하는 기호는 ( ④ ) 이다. - 조인(JOIN)은 공통 속성을 중심으로 두 개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만드는 연산으로, 사용하는 기호는 ( ⑤ ) 이다