자격증/2020 정보처리기사 필기

2020 정보처리기사 필기 - 2.1 데이터 입출력 구현

지식냠냠 2020. 4. 15. 22:26
반응형

▶ 2020 정보처리기사 필기 정리 ◀

 

 

▶ 034 자료 구조


자료 구조

프로그램에서 사용하기 위한 자료를 기억장치 공간 내에 저장하는 방법과 저장된 그룹 내에 존재하는 자료 간의 관계, 처리 방법 등을 연구 분석하는 것

- 자료의 표현과 그것과 관련된 연산

- 일련의 자료들을 조직하고 구조화 하는 것

- 어떠한 자료 구조에서도 필요한 모든 연산들을 처리할 수 있음

- 자료 구조에 따라 프로그램 실행시간이 달라짐

 

 

자료 구조의 분류



 

 

 

선형 구조(Linear Structure)

 

1. 배열(Array)

동일한 자료의 데이터들이 같은 크기로 나열되어 순서를 갖고 있는 집합

- 정적인 자료 구조로 기억장소의 추가가 어려움

- 데이터 삭제 시 데이터가 저장되어 있던 기억장소는 빈 공간으로 남아있어 메모리의 낭비 발생

- 반복적인 데이터 처리 작업에 적합한 구조

- 데이터마다 동일한 이름의 변수를 사용하여 처리 간편

- 사용한 첨자의 개수에 따라  n차원 배열이라 부름

 

 

- a는 변수 이름

- '[숫자]' 는 첨자에 해당

- 하나의 사각형은 하나의 기억장소

 

 

 

2. 선형 리스트(Linear List)

일정한 순서에 의해 나열된 자료 구조

- 배열을 이용하는 연속 리스트와 포인터를 이용하는 연결 리스트로 구분

*포인터(Pointer) : 현재의 위치에서 다음 노드의 위치를 알려주는 요소

 

• 연속 리스트(Contiguous List)

배열과 같이 연속되는 기억장소에 저장되는 자료 구조

- 기억장소를 연속적으로 배정받기 때문에 기억장소 이용 효율은 밀도가 1로서 가장 좋음

*밀도가 1 : 기억장소를 빈공간없이 꽉 차게 사용한다.

- 중간에 데이터를 삽입하기 위해서는 연속된 빈 공간이 있어야 하며, 삽입, 삭제 시 자료의 이동 필요

 

 연결 리스트(Linked List)

자료들을 반드시  연속적으로 배열시키지는 않고 임의의 기억공간에 기억시키되, 자료 항목의 순서에 따라 노드의 포인터 부분을 이용해 서로 연결시킨 자료구조

*노드(Node) : 자료를 저장하는 데이터 부분과 다음 노드를 가리키는 포인터인 링크 부분으로 구성

- 노드의 삽입 삭제 작업이 용이

- 기억 공간이 연속적으로 놓여 있지 않아도 저장 가능

- 연결을 위한 링크 부분이 필요해 기억 공간의 이용 효율이 좋지 않음

- 연결을 위한 포인터를 찾는 시간이 필요해 접근 속도 느림

- 중간 노드 연결이 끊어지면 그 다음 노드를 찾기 힘듦

 

 

3. 스택(Stack)

리스트의 한쪽 끝으로만 자료의 삽입, 삭제 작업이 이루어지는 자료 구조

- 가장 나중에 삽입된 자료가 가장 먼저 삭제 됨 = 후입선출(LIFO; Last In First Out) 방식

- 스택의 모든 기억 공간이 꽉 채워져 잇는 상태에서 데이터 삽입 시. 오버플로(Overflow) 발생

- 더 이상 삭제할 데이터가 없는 상태에서 데이터 삭제 시. 언더플로(Underflow) 발생

 

 

 

4. 큐(Queue)

리스트의 한쪽에서는 삽입 다른 한쪽에서는 삭제가 이루어지도록 구성한 자료 구조

- 가장 먼저 삽입된 자료가 가장 먼저 삭제 됨 = 선입선출(FIFO; First In First Out) 방식

- 시작과 끝을 표시하는 2개의 포인터

- 운영체제의 작업 스케줄링에 사용

 

 

비선형 구조(Non-Linear Structure)

 

1. 트리(Tree)

정점(Node, 노드)과 선분(Branch, 가지)을 이용하여 사이클을 이루지 않도록 구성한 그래프의 특수한 형태

- 노드 : 하나의 기억 공간

- 링크 : 노드와 노드를 연결하는 선

- 족보, 조직도 등을 표현하기에 적합

 

- 노드(Node) : 트리의 기본 요소    ex) A, B, C, D, E, F, G, H, I, J

- 근 노드(Root Node) : 트리의 맨 위에 있는 노드    ex) A

- 디그리(Degree, 차수) : 각 노드에서 뻗어 나온 가지의 수    ex) A=2, B=2, E=1

- 단말 노드(Terminal Node) = 잎 노드(Leaf Node) : 자식이 하나도 없는 노드    ex) F, G   

- 자식 노드(Son Node) : 어떤 노드에 연결된 다음 레벨의 노드들    ex) D의 자식 노드 : H, I   

- 부모 노드(Parent Node) : 어떤 노드에 연결된 이전 레벨의 노드들    ex) H,I의 부모 노드 : D

- 형제 노드(Brother Node, Sibling) : 동일한 부모를 갖는 노드들    ex) H의 형제 노드 : I   

- 트리의 디그리 : 노드들의 디그리 중에서 가장 많은 수    ex) 디그리2가 최대니 앞 트리의 디그리는 2   

 

 

▶ 035 데이터저장소 / 데이터베이스 / DBMS


데이터저장소

소프트웨어 개발 과정에서 다루어야 할 데이터들을 논리적인 구조로 조직화하거나, 물리적인 공간에 구축한 것을 의미

- 논리 데이터저장소와 물리 데이터저장소로 구분됨

- 논리 데이터저장소 : 데이터 및 데이터 간의 연관성, 제약조건을 식별하여 논리적인 구조로 조직화 한것

- 물리 데이터저장소 : 논리 데이터저장소에 저장된 데이터와 구조들을 하드웨어적인 저장장치에 저장한 것

- 데이터저장소의 구축 과정과 DB 구축 과정은 동일

 

 

데이터베이스 중요

특정 조직의 업무를 수행하는 데 필요한 상호 관련된 데이터들의 모임으로 다음과 같이 정의 할 수 있음

- 통합된 데이터(Integrated Data) : 자료의 중복을 최소화한 데이터의 모임

- 저장된 데이터(Stored Data) : 컴퓨터가 접근할 수 있는 저장 매체에 저장된 자료

- 운영 데이터(Operational Data) : 조직의 고유한 업무를 수행하는 데 존재 가치가 확실하고 없어서는 안 될 반드시 필요한 자료

- 공용 데이터(Shared Data) : 여러 응용 시스템들이 공동으로 소유하고 유지하는 자료

 

 

DBMS(DataBase Management System)

사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해주고, DB를 관리해 주는 소프트웨어

- 기존의 파일 시스템이 갖는 데이터의 종속성과 중복성의 문제를 해결하기 위해 제한된 시스템

- DBMS의 필수 기능 : 정의, 조작, 제어

 

• 정의 기능 

모든 응용 프로그램들이 요구하는 데이터 구조를 지원하기 위해 DB에 저장될 데이터 형과 구조에 대한 정의, 이용 방식, 제약 조건 등을 명시하는 기능

응용 P DB

 

조작기능

데이터 검색, 갱신, 삽입 등을 체계적으로 처리하기 위해 사용자와 DB간의 인터페이스 수단을 제공하는 기능

사용자 DB

 

• 제어 기능

- 데

이터 무결성이 유지되도록 제어

- 보안 유지, 권한 검사- 여러 사용자가 DB를 동시에 접근해 데이터를 처리 할 때 처리 결과가 항상 정확성을 유지하도록 병형제어 

 

 

DBMS의 장 단점 중요

장점  단점 
- 데이터의 논리적, 물리적 독립성 보장
- 데이터의 중복 피할 수 있음, 기억 공간 절약
- 저장된 자료를 공동으로 이용할 수 있음
- 데이터의 무결성 유지
- 데이터의 일관성 유지
- 보안 유지
- 데이터 표준화 가능
- 데이터 통합 관리 가능
- 항상 최신의 데이터 유지
- 데이터 실시간 처리 가능 
- DB의 전문가 부족
- 전산화 비용 증가 
- 대용량 디스크로의 집중적인 접근으로 과부하 발생
- 파일의 Backup과 Recovery가 어려움
- 시스템 복잡 

 

 

▶ 036 데이터 입출력


데이터 입출력

소프트웨어의 기능 구현을 위해 DB에 데이터를 입력하고, DB의 데이터를 출력하는 작업

- 데이터 입출력 위해 SQL 사용

 

 

SQL(Structured Query Language)

국제 표준 데이터베이스 언어

- 관계대수와 관계해석을 기초로 함

- SQL은 데이터 정의어(DDL), 데이터 조작어(DML), 데이터 제어어(DCL)로 구분

 

 

데이터 접속(Data Mapping)

소프트웨어의 기능 구현을 위해 프로그래밍 코드와 DB의 데이터를 연결하는 것

- SQL Mapping : 프로그래밍 코드 내에 SQL을 직접 입력해  DBMS의 데이터에 접속하는 기술 (JDBC, ODBC, MyBatis 등)

- ORM(Object-Relational Mapping) : 객체지향 프로그래밍의 객체와 관계형DB의 데이터를 연결하는 기술 (JPA, Hibernate, Django 등)

 

 

트랜잭션(Transaction)

DB 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위, 한꺼번에 모두 수행되어야 할 일련의 연산

- 트랜잭션을 제어하기 위해 사용하는 명령어 : TCL(Transaction Control Language)

- TCL의 종류 : COMMIT, ROLLBACK, SAVEPOINT

 

 

▶ 037 절차형 SQL


절차형 SQL

C, JAVA 등의 프로그래밍 언어와 같이 연속적인 실행이나 분기, 반복 등의 제어가 가능한 SQL

- 절차형 SQL의 종류 : 프로시저, 트리거, 사용자 함수

 

• 프로시저(Procedure)

특정 기능을 수행하는 일종의 트랜잭션 언어, 호출을 통해 실행되어 미리 저장해 놓은 SQL 작업 수행

 

트리거(Trigger)

DB 시스템에서 데이터의 입력, 갱신, 삭제 등의 이벤트가 발생할 때마다 관련 작업이 자동으로 수행

 

사용자 정의 함수

프로시저와 유사하게 SQL을 사용해 일련의 작업을 연속적으로 처리, 종료 시 예약어 Return 사용해 처리 결과를 단일값으로 반환

 

 

절차형 SQL의 테스트와 디버깅

디버깅을 통해 기능의 적합성 여부를 검증, 실행을 통해 결과를 확인하는 테스트 과정 수행

*디버깅 : 오류 잡는 작업

 


쿼리 성능 최적화

데이터 입출력 애플리케이션의 성능 향상을 위해 SQL 코드를 최적화 하는 것

- 쿼리 성능 최적화 전, APM을 사용해 최적화 할 쿼리 선정

- 최적화 할 쿼리에 대해 옵티마이저가 수립한 실행 계획 검토, SQL 코드와 인덱스 재구성

 

 

▶ 2020 정보처리기사 필기 정리 ◀

 

반응형