문제 1. 다음 데이터베이스의 함수 종속과 관련된 다음 설명에서 괄호 (①, ②)에 가장 부합하는 답안을 쓰시고 괄호 (③)에는 완전 함수 종속의 개념에 대해 간단히 서술하시오. (10점)
함수 종속은 데이터의 의미를 표현하는 것으로, 현실 세계를 표현하는 제약조건이 되는 동시에 데이터베이스에서 항상 유지되어야 할 조건이다.
어떤 릴레이션(관계) R에서 A와 B를 각각 R의 애트리뷰트(속성/column) 집합이라고 가정할 때 애트리뷰트 A의 값 각각에 대해서 시간에 관계없이 항상 애트리뷰트 B의 값이 오직 하나만 연관되어 있을 때 B는 A에 함수 종속이라고 하고 A → B로 표기한다.
만약 B가 A에 종속되어 A 값을 알면 B값을 알 수 있을 때 A를 ( ① )(이)라고 하고, B를 ( ② )(이)라고 한다.
함수 종속에는 이행적 함수 종속, 부분 함수 종속, 완전 함수 종속이 있다.
완전 함수 종속의 개념에 대해 간단히 서술하시오.
( ③ )
답:
① 결정자(Determinant)
② 종속자(Dependent)
③ 어떤 애트리뷰트(속성)가 기본키에 대해 완전히 종속적인 경우 완전 함수 종속이라고 한다.
<추가 정보>
관계형 데이터베이스 설계에서 중복된 데이터가 최소화되도록 데이터베이스의 구조를 결정하는 것을 정규화(Normalization) 라 하는데 이런 정규화 과정에서 함수 종속성이라는 개념은 매우 중요하게 이용됨함수 종속성은 수학에서의 함수와 같이 두 필드의 집합이 many-to-one 관계로 사상되는 것을 말한다.즉, 어떠한 값을 통해 종속 관계에 있는 다른 값을 유일하게 결정할 수 있다는 것
어떤 테이블 R에 존재하는 필드들의 부분집합을 각각 X와 Y라고 할 때 X의 한 값이 Y에 속한 오직 하나의 값에만 사상될 경우
"Y는 X에 함수 종속"이라고 하며 X(결정자) → Y(종속자)라고 표기
- augmentation: 만약 X→Y이면, XZ→YZ이다.
- transitivity(이행적 함수 종속): 만약 X→Y이고 Y→Z이면, X→Z이다.
- reflexivity: 만약 Y가 X의 부분집합이면, X→Y이다.
- self-determination: 자기 자신은 자신에 의해 함수 종속적이다. 즉, X→X이다.
- union: 만약 X→Y이고 X→Z이면, X→YZ이다.
- decomposition: 만약 X→YZ이면, X→Y이고 X→Z이다.
1) 완전 함수적 종속: 종속자가 기본키에만 종속되며, 기본키가 여러 속성으로 구성되어 있을 경우 기본키를 구성하는 모든 속성이 포함된 기본키의 부분집합에 종속된 경우
모든 정보가 학번을 알아야만 식별 가능한 경우
ex) 학번(기본키) → 이름, 학번 → 나이, 학번 → 성별
2) 부분 함수적 종속: 릴레이션에서 종속자가 기본키가 아닌 다른 속성에 종속되거나 기본키가 여러 속성으로 구성되어 있을 경우 기본키를 구성하는 속성 중 일부만 종속되는 경우
고객 ID, 제품코드가 기본키일 때 제품코드만 알아도 주문상품 식별 가능
ex) 제품코드(기본키) → 주문상품
3) 이행적 함수 종속: 릴레이션 X, Y, Z라는 3개의 속성이 있을 때 X→Y, Y→Z라는 종속 관계가 있을 경우, X→Z가 성립될 때
즉, X를 알면 Y를 알고 그를 통해 Z를 알 수 있는 경우
회원번호를 알면 이름을 알 수 있고, 이름을 알면 나이를 알 수 있음
ex) 회원번호 → 이름, 이름 → 나이
<참고 사이트>
문제 2. 다음 <처리 조건>에 유의하여 <학생> 테이블에 대한 알맞은 SQL문을 작성하시오. (3점)
<학생>
<처리 조건>
1. 학생 테이블에서 3학년과 4학년 학생의 학번과 이름을 검색하는 SQL문을 작성하시오.
2. 원소 함수 In을 사용하시오.
원소 함수 In(value1, value2, ...)
3. SQL문의 끝에는 세미콜론(;)으로 표시하시오.
답: 대소문자를 구별하지 않으나 스펠링 틀릴 경우 부분 점수 없음!
SELECT 학번, 이름 FROM 학생 WHERE 학년 IN (3, 4);
문제 3. 다음 데이터베이스 관리 시스템의 내용을 참고하여 괄호 (①, ②)에 들어갈 알맞은 DBMS 구성 요소 명칭을 작성하시오. (6점)
데이터베이스 관리 시스템(Database Management System: DBMS)이란 응용 프로그램과 데이터베이스 사이의 중재자로서 사용자의 요구사항에 효율적으로 서비스를 수행하기 위하여 제공되는 데이터베이스 관리 소프트웨어이다. DBMS는 물리적인 데이터 저장 구조와 외부 인터페이스 사이의 다양한 소프트웨어들로 구성되어 있다.
답:
① DDL컴파일러 또는 DDL처리기 또는 DDL번역기
② 트랜잭션 관리자
문제 4. 데이터베이스와 관련한 다음 설명 중 괄호 (①, ②, ③)에 들어갈 가장 적합한 용어를 쓰시오. (6점)
회복(Recovery)은 트랜잭션들을 실행하는 도중 장애(Failure)가 발생하여 데이터베이스가 손상되었을 경우 손상되기 이전의 정상 상태로 복구하는 작업이다.
- 실행 장애(Action Failure): 사용자의 실수, 무결성 규정 위반 등으로 질의 실행이 실패하는 현상
- 트랜잭션 장애(Transaction Failure): 트랜잭션 내부에서 입력 데이터 오류, 불명확한 데이터, 시스템 자원 요구의 과다 등 비정상적인 상황으로 인하여 트랜잭션 실행이 중지되는 현상
( ① ) 장애(System Failure): 데이터베이스에는 손상을 입히지 않으나 하드웨어 오동작, 정전, 소프트웨어(운영체제나 DBMS 등) 오류, 교착 상태 등에 의해 실행 중인 모든 트랜잭션들이 더 이상 실행을 계속할 수 없는 현상
미디어 장애(Media Failure): 저장 장치인 디스크 블록의 손상이나 디스크 헤드의 충돌 등에 의해 데이터베이스 일부 또는 전부가 물리적으로 손상되는 현상
회복 관리기는 로그(Log), 메모리 ( ② ) 등을 이용하여 회복 기능을 수행하는 DBMS의 핵심 구성 요소이다. 회복 관리기는 트랜잭션 실행이 성공적으로 완료되지 못하면 로그를 이용하여 트랜잭션이 데이터베이스에 생성했던 모든 변화를 취소(Undo)시켜서 트랜잭션 실행 이전의 원래 상태로 되돌리는 역할을 담당한다.
회복 기법의 종류는 다음과 같다.
- 연기 갱신(Deferred Update) 기법: 연기 갱신 기법은 트랜잭션이 성공적으로 종료될 때까지 데이터베이스에 대한 실질적인 갱신을 연기하는 기법
- 즉각 갱신(Immediate Update) 기법: 즉각 갱신 기법은 트랜잭션이 데이터를 변경하면 트랜잭션이 부분 완료되기 전이라도 즉시 실제 데이터베이스에 반영하는 기법
- 그림자 페이지(Shadow Paging) 기법: 그림자 페이지 기법은 갱신 이전의 데이터베이스를 일정 크기의 페이지 단위로 구성하여 각 페이지마다 복사본인 그림자 페이지로 별도 보관해 두고, 실제 페이지를 대상으로 트랜잭션에 대한 변경 작업을 수행하는 기법
- ( ③ ) 기법: 시스템 장애가 발생하였을 경우, Redo와 Undo를 수행하기 위해 로그 전체를 조사해야 하는 경우를 피하기 위한 기법이다.
답:
① 시스템 또는 System
② 더미 또는 Dummy
③ 검사점 또는 Check Point
문제 5. 다음 C언어의 <출력>과 <코드>를 보고 괄호 (①, ②, ③, ④)에 적용될 수 있는 가장 적합한 답을 쓰시오. (8점)
<출력>
stack's status
value = 40
value = 30
value = 20
<코드>
#include <studio.h>
#define MAX_STACK_SIZE 10
int stack[MAX_STACK_SIZE];
int top = -1;
void push(int item)
{
if (top >= ( ① ))
{
printf("stack is full\n");
}
stack[++top] = ( ② );
}
int pop()
{
if (top == ( ③ ))
{
printf("stack is empty\n");
}
return stack[( ④ )];
}
int isempty()
{
if(top == ( ③ ))
return 1; else return 0;
}
int isfull()
{
if(top >= ( ① ))
return 1; else return 0;
}
int main()
{
int e;
push(20); push(30); push(40);
printf"stack's status\n");
while(!isempty())
{
e = pop();
printf("value = %d\n", e);
}
}
답:
① MAX_STACK_SIZE -1 또는 9
② item
③ -1
④ top--
문제 6. 다음 Java 언어의 <처리조건>과 <코드>를 보고 괄호 (①), (②)에 적용될 수 있는 가장 적합한 답을 쓰시오. (7점)
<처리 조건>
- 배열에는 95, 75, 85, 100, 50이 차례대로 저장된다
- 배열에 저장된 값을 오름차순으로 정렬하여 출력한다
<코드>
public class Test1 {
public static void main(String[] arge) {
int E[] = { ( ① ) };
int i = 0;
int Temp = 0;
do
{
int j = i;
do
{
if (E[i] > ( ② ))
{
Temp = E[i];
E[i] = E[j];
E[j] = Temp;
}
j++;
} while (j < 5);
i++;
} while (i < 4);
for (int a = 0; a < 5; a++)
{
System.out.printf(E[a]+"\t");
}
System.out.println();
}
}
답:
① 95, 75, 85, 100, 50
② E[j]
문제 7. 5행 5열의 배열에 <처리 조건> ①번과 같은 과정으로 숫자를 기억시키는 알고리즘을 기술한 것이다. 알고리즘이 <처리 조건>에 따라 가장 효율적으로 구현될 수 있도록 괄호 (①) ~ (⑤)에 해당하는 답을 쓰시오. (10점)
답:
① J+S② N③ K-1④ N+1⑤ i+S문제 8. 업무 프로세스와 관련한 다음의 <실무 사례>를 분석하여 각 문제의 물음 (1)~(5)에 답하시오. (배점 15점)
<업무 프로세스 관련 설명>
한국 주식회사의 임원진들은 기업의 자금 조달, 재무 자원의 운용 및 평가에 관한 정보를 신속하고 정확하게 제공 받아 빠른 의사결정을 위하여 효율적인 재무 관리 시스텡을 개발하기로 결정하였다. 귀하는 이를 위해 개발팀의 일원으로 선발되었다. 재무 관리 시스템을 개발하기 위해 귀하가 먼저 수행해야할 업무는 재무 관리의 업무 프로세스를 파악하는 것이다. 귀하가 파악한 업무 프로세스는 다음과 같다.
재무관리는 기업의 구성요소 중에서 자금과 관련된 의사 결정을 효율적으로 수행하고자 하는 활동이다. 즉, 기업의 목표를 달성할 수 있도록 필요한 자금을 효율적으로 조달하고, 조달된 자금을 효과적으로 운용하는 것과 관련된 의사 결정을 행하는 것을 의미한다. 재무 관리 기능은 투자 결정, 자금 조달 결정, 배당 결정, 재무 자료 분석으로 요약할 수 있다.
일반적으로 기업회계의 목적은 영리기업의 경영자가 의사 결정을 하는데 필요한 유용한 정보를 제공하는 것이다. 기업 회계는 그 정보의 이용자에 따라 재무회계와 관리 회계로 나눌 수 있다. 재무 회계(financial accounting)는 외부 이해관계인인 주주나 채권자 등에게 경제적 의사 결정에 유용한 정보를 제공하는 것을 목적으로 하는 회계이며, 관리 회계(managerial accounting)는 기업의 내부 이해관계인인 경영자에게 관리적 의사 결정에 유용한 정보를 제공하려는 것을 목적으로 하는 회계이다.
재무 회계의 목적을 달성하기 위한 대표적인 수단으로 활용되는 것이 재무제표(financial statements)이다.
기업회계기준은 우리나라 기업들이 회계처리시 고려해야 될 일반적으로 인정된 회계원칙을 의미하며, 이 기준에서 규정하고 있는 재무제표에는 대차 대조표, 손익계산서, 이익잉여금처분 계산서, 현금 흐름표가 있다.
대차대조표(bakance sheet)는 기업의 일정 시점, 즉 기초의 재무상태 및 기말의 재무상태를 나타내는 정태적보고서로서, 기업이 소유하고 있는 자산, 부채, 자본에 관한 정보를 제공한다. 손익계산서는 기업의 일정기간 경영성과를 나타내는 통태적 보고서를 의미한다. 또한, 이익잉여금처분계산서는 이익잉여금의 처분 내용을 나타내는 보고서이고, 현금 흐름표는 기업이 일정기간 동안 기업의 영업활동 및 투자와 재무 활동으로 인한 현금과 예금의 변동 내용을 나타내는 동태적 보고서이다.
이들 재무제표는 각각 서로 다른 재무력 정보를 제공해 주면서 상호 관련성을 가지고 있는데, 이를 그림으로 나타내면 아래의 <그림>과 같다. 아래의 <그림>에서 괄호 안의 내용은 재무제표의 종류를 나타내며, 괄호 안에의 서술 내용은 재무제표의 설명으로 나타낸다.
<그림>
주주나 채권자 등 회계 정보 이용자들은 기업의 미래 재무상태와 미래의 경영성과에 관심이 있다.
주식을 투자하는 투자자는 미래의 배당금 수입과 시세차익을 기대하며, 채권자들은 이자 등의 적정한 투자 수익을 기대한다. 재무제표분석의 목적은 기업의 과거 경영성과와 현재의 재무 상태를 평가하고 이를 토대로 기업의 미래 수익 잠재력과 관련 위험을 예측하고자 하는데 있다.
재무제표분석기법들 중 일반적으로 사용되는 것으로는 추세분석, 수직적 분석, 재무제표분석 등이 있다. 추세분석(trend analysis)은 두 개이상의 연속된 회계기간에 대해 재무제표 항목들의 변화율을 비교하는 기법으로서 수평적분석이라고도한다. 수직적분석(vertical analysis)이란 재무제표항목의 상대적 크기를 백분율로 표시하여 분석하는 것으로 백분율재무제표라고 한다. 재무비율분석(financial ratio analysis)은 재무제표상의 개별항목 간 비율을 산출하여 기업의 재무 상태나 경영성과를 분석하고 판단하는 기법을 말한다.
재무비율분석은 기업특성 중 안전성, 수익성, 활동성, 성장성, 현금흐름성을 평가하는데 유용한 정보를 제공한다. 자기자본비율 , 이자보상비율, 유동비율은 기업의 아전성을 분석하는데 사용되고, 매출 순이익율, 총자산이익율은 수익성을 분석하는데 사용된다. 총자산회전율, 매출채권회전율, 재고자산회전율은 기업의 활동성을 분석하는데 사용되고, 매출액증가율은 성장성을 분석하는데 사용되며, 영업현금흐름부채비율은 현금흐름성을 분석하는데 사용된다. 기업의 신용분석시 평가될 수 있는 [기업 특성]과 연관된 [재무 비율]의 관계는 다음 <표>와 같다.
<표>
[기업특성] | [재무 비율] |
( 4 ) |
- 자기자본비율 - 이자보상비율 - 유동비율 |
수익성 | - 매출액순이익율 - 총자산이익율 |
활동성 | - 총자산회전율 - ( 5 ) - 재고자산회전율 |
성장성 | - 매출액 증가율 |
현금흐름성 | - 영업현금 흐름 부채비율 |
답:
1. 대차대조표
2. 이익잉여금처분계산서
3. 현금흐름표
4.안정성
5. 매출채권회전율
문제 9. 스니핑(Sniffing)에 대한 개념을 간단히 서술하시오. (5점)
답:
네트워크 중간에서 남의 패킷 정보를 도청하는 해킹 유형의 하나로 수동적 공격에 해당한다.
문제 10. 다음 정보 보호 및 보안과 관련한 다음 설명에서 각 지문 ①~⑤에 가장 부합하는 답안을 쓰시오. (10점)
① 웹 정보 노출이나 악성 코드, 스크립트, 보안이 취약한 부분을 연구하는 비영리 단체이다. 2001년 9월 9 일 Mark Curphey에 의해 설립되었으며, 2004년을 시작으로 2007년, 2010년, 2013년, 2017년에 각각 10대 웹 애플리케이션의 취약점을 'Top Ten'이라는 이름으로 발표하였고 문서도 공개하였다. 10대 웹 애플리케이션의 취약점은 보안이 취약한 부분 중에서도 빈도가 잦고, 보안에 미치는 영향이 큰 것을 기준으로 선정한 것이다.
② 제공하는 입장에서는 악의적이지 않은 유용한 소프트웨어라고 주장할 수 있지만 사용자 입장에서는 유용할 수도 있고 악의적일 수도 있는 애드웨어, 트랙웨어, 기타 악성 코드나 악성 공유웨어를 말한다. 정상적인 소프트웨어 이미지인 백색과 악성 소프트웨어의 이미지인 흑색의 중간에 해당한다고 하여 이러한 명칭으로 불리게 되었다.
답:
① OWASP또는 The Open Web Application Security Project
② 그레이웨어 또는 Grayware
③ CC 또는 공통 평가 기준 또는 Common Criteria
④ 아이핀 또는 i-PIN 또는 internet Personal Identification Number 또는 인터넷 개인식별번호
⑤ 타이포스쿼팅 또는 typosquatting
문제 11. 데이터베이스와 관련한 다음의 <실무 사례>를 분석하여 각 문제의 물음 (1), (2)에 답하시오. (6점)
② 웹 페이지 내에서 자바 스크립트와 CSS, XHTML 등을 이용하여 XML로 자료를 교환하고, 제어하게 되는데 사용자들은 이로 인해 웹 페이지를 '새로고침' 하지 않고도 대화형의 웹 페이지 기능을 이용할 수 있게 하는 기술이다.
⑤ 필요한 정보를 기다리지 않고 적극적으로 찾아다니는 정보 열광자를 의미한다. 이들은 가장 최근의 이슈들을 찾아내는 데 그치지 않고 자신의 홈페이지나 SNS 등을 활용해 정보를 대중화시키는 정보 제공자 역할을 수행한다.
답:
① QoS 또는 Quality of Service
② AJAX 또는 Asynchronous Java Script and XML 또는 비동기 바자 스크립트와 XML
③ 크리슈머 또는 Cresumer
④ 저전력 블루투스 기술 또는 BLE 또는 Bluetooth Low Energy
⑤ 인포러스트 또는 Infolust 또는 정보열광자
문제 12. 데이터베이스와 관련한 다음의 <실무 사례>를 분석하여 각 문제의 물음 (1), (2)에 답하시오. (6점)
① It is technique the makes entities in the real world into a singlew object like a machine part so that objects can be assembled and created even when software is deveoloed as if they were mechanical parts of a machine. It is used as a solution to the software crisis caused by structural problems. It is easy to re-use and scale software, to quickly develop and maintain high-quality software.
② It is a software module that encapsulates date and functions for processing data. It has status and behavior, has a name that can be distinguished from other ( )s, and has a certain memory location.
④ A tool used to interact with objects, a command or requirement that dictates the object to do something. Consists of the came of the recieves the ( ), the name of the method the object will perform, and the attribute values that are required to perform the method. The object that receives this will perform the requested method and return the result.
⑤ It is an object-oriented programming(OOP) language that is highly secure and easy to maintain. It has great portability by providing classes for the compiled code to be used by different operating systems. It also supports distributed surroundings for more efficient programming.
답:
① OOP 또는 Object-oriented programming
④ message
⑤ JAVA
[원문 해석]
② 데이터와 데이터를 처리하는 함수를 캡슐화한 하나의 소프트웨어 모듈이다. 이것은 상태와 행위를 가지고 있으며, 다른 (객체)들과 구별될 수 있는 이름과 일정한 기억장소를 갖는다.
③ 객체에 수행될 연산, 즉 객체의 속성값에 대한 변경이나 검색을 기술한 것이다. 또한 특정한 이것을 수행하기 위해서는 해당 객체에 메시지를 보내야 한다.
④ 객체들 간에 상호작용을 하는 데 사용되는 수단으로, 객체에게 어떤 행위를 하도록 지시하는 명령 또는 요구사항이다. (메시지)를 받는 수신자의 이름, 객체가 수행할 메소드 이름, 메소드를 수행할 때 필요한 속성값으로 구성된다. 이것을 받은 객체는 요구된 메소드를 수행하여 결과를 반환하게 된다.
⑤ 보안성이 뛰어나고 유지 보수가 용이한 객체지향 프로그래밍(OOP) 언어이다. 컴파일한 코드를 다른 운영체제에서 사용할 수 있도록 클래스를 제공함으로써 뛰어난 이식성을 갖고 있다. 또한 보다 효율적인 프로그래밍이 가능하도록 분산 환경을 지원한다.