4장 : 데이터 입출력 구현(2과목)
0. 자료 구조의 분류 ★★★
1. 배열 (Array)
- 정적 자료 구조이다.
- 삽입, 삭제 시 번거롭다.
- 삭제 시 빈 공간으로 인해 메모리 낭비가 발생한다.
- Index를 이용해 접근한다.
- 반복적인 데이터 처리 작업에 용이하다.
- 처리가 간편하다.
2. 선형 리스트 (Linear List)
- 연속 리스트 (Contiguous List)
- 배열과 비슷하다.
- 연속적으로 배정을 받는다.
- 밀도가 1이다.
- 삽입, 삭제 시 자료의 이동이 필요하다.
- 연결 리스트 (Linked List)
- 연속적인 배정이 아닌, 임의의 공간에 배정받는다.
- 포인터로 서로 연결되어 있다.
- 삽입과 삭제가 용이하다.
- 순차 리스트에 비해, 이용 효율이 좋지 않다.
- 검색이 느리다.
- 끊어지면 다음 노드를 찾기 어렵다.
3. 스택(Stack)
- 리스트의 한쪽 끝으로만 자료의 삽입, 삭제 작업이 이루어짐
- 가장 나중에 삽입된 자료가 가장 먼저 삭제되는 후입선출(LIFO : Last In First Out)
- 스택의 모든 공간이 꽉 채워져 있는 상태에서 데이터가 삽입되면 오버플로우(Overflow)가 발생
- 더 이상 삭제할 데이터가 없는 상태에서 데이터를 삭제하면 언더플로우(Underflow)가 발생
- Stack의 응용
- 부 프로그램 호출 시 복귀주소를 저장할 때
- 함수 호출의 순서 제어
- 인터럽트 발생 시 복귀주소를 저장할 때
- 0 주소지정방식 명령어의 자료 저장소
- 재귀 프로그램의 순서 제어 등
4. 큐(Queue)
- 선형 리스트의 한쪽에서는 삽입, 다른 한쪽에서는 삭제 작업이 이루어지도록 구성한 자료구조
- 가장 먼저 삽입된 자료가 가장 먼저 삭제되는 선입선출(FIFO : First In First Out)
- Queue의 응용
- 창구 업무나 택시 정거장처럼 서비스 순서를 기다리는 등의 대기 행렬의 처리에 사용
- 운영체제의 작업 스케줄링에 사용
5. 데크(Deque)
- 삽입과 삭제가 리스트의 양쪽 끝에서 모두 발생할 수 있는 자료 구조
- 스택과 큐의 장점만 따서 구성한 것
- 입력 제한 데크 : Scroll, 출력 제한 데크 : Shelf
6. 트리 (Tree)
- 노드(Node)의 수 : 9개
- 차수 (Degree) : 각 노드에서 뻗어 나온 가지의 수
- 트리의 차수 : 2 (이유 : root 노드인 2번 노드의 뻗어 나가는 가지가 2개이므로)
- 노드의 차수 : 2 (이유 : 특정 노드를 명시하지 않으면, root 노드를 의미)
- 트리의 레벨 (Level=depth) : 4
7. 데이터저장소 ★★★
- 데이터들을 논리적인 구조로 조직화하거나, 물리적인 공간에 구축한 것을 의미한다.
- 논리 데이터저장소 : 논리적인 구조로 조직화 한 것
- 물리 데이터저장소 : 물리적 특성을 고려하여, 하드웨어적인 저장 장치에 저장한 것
8. 데이터베이스 ★★★
- 상호 연관이 있는 데이터들의 모임
데이터베이스는, | 통합된 데이터이다. (=Integrated Data) |
즉, 중복을 배제한 데이터의 모임이다. |
저장된 데이터이다. (=Stored Data) |
즉, 저장 매체에 저장된 자료이다. | |
운영 데이터이다. (=Operational Data) |
즉, 반드시 필요한 자료이다. | |
공용 데이터이다. ( =Shared Data) |
즉, 공동으로 소유한 데이터이다. |
** 데이터베이스는, 통합된 데이터의 효율성의 증진을 위해, 최소의 중복과 통제된 중복을 허용한다. ★★★
9. DBMS (DataBase Management System, 데이터베이스 관리 시스템) ★★★
- 종속성과 중복성을 배제하기 위해 제안된 시스템이다.
- DBMS는 데이터베이스의 구성, 접근 방법, 유지 관리에 대한 모든 책임을 진다.
- DBMS의 필수 기능
- 정의 (Definition) : 데이터간의 관계를 명확하게 명세(또는 Mapping)하는 것 (type, 구조 등)
- 조작 (Manipulation) : 갱신, 삽입, 삭제 작업이 정확하게 수행되게 끔 수단을 제공하는 것
- 제어 (Control) : 무결성 유지, 보안 유지, 권한 검사, 병행 제어
** 종속성 <ㅡ> 독립성
10. 스키마
- 데이터베이스의 구조와 제약 조건에 관한 전반적인 명세를 기술한 메타 데이터
- 개체, 속성, 관계 및 데이터 조작 시 데이터 값들이 갖는 제약조건 등에 관해 전반적으로 정의
외부 스키마 | 사용자나 응용 프로그래머가 각 개인의 입장에서 필요로 하는 데이터베이스의 논리적 구조를 정의 |
개념 스키마 | 데이터베이스의 전체적인 논리적 구조, 하나만 존재 |
내부 스키마 | 물리적 저장장치의 입장에서 본 데이터베이스 구조 |
11. 데이터 접속 (Data Mapping)
- 객체와 데이터를 연결하는 것
- 종류
- SQL Mapping : SQL을 직접 입력하여 DBMS의 데이터에 접속
- ORM (Object Relational Mapping) : 객체와 관계형 데이터베이스의 데이터를 연결
12. 트랜잭션 (Transaction) ★★★
- 논리적 기능을 수행하기 위한 작업의 단위
- 한꺼번에 모두 수행되어야 할 일련의 연산들
- TCL (Transaction Control Language) : 트랜잭션을 제어하는데에 사용되는 명령어
- TCL 종류
- COMMIT : 정상적 종료
- ROLLBACK : 비정상적 종료, 모든 변경 작업 취소, 이전 상태로 되돌림
- SAVEPOINT : ROLLBACK 할 위치 저장, 복수 개 가능
13. SQL (Structed Query Language)
- 관계대수와 관계해석을 기초로 한 혼합 데이터 언어
- 데이터베이스를 조작하는데에 사용되는 명령어
- 구분
- 데이터 정의어 (DDL : Data Define Language) : 정의, 변경, 삭제 시 사용
- 데이터 조작어 (DML : Data Manipulation Language) : 실질적인 처리 시 사용
- 데이터 제어어 (DCL : Data Control Language) : 무결성, 회복, 병행 수행 제어 등 사용
** SQL vs TCL
SQL | TCL |
데이터베이스의 데이터를 조작하는데에 사용하는 언어 | 트랜잭션을 제어하는데에 사용하는 명령어 |
14. 절차형 SQL
- C, JAVA 언어 처럼, 연속적인 실행이나 분기, 반복 등의 제어가 가능한 SQL
- 효율은 떨어진다.
- 연속적인 작업 처리에 적합하다.
- 저장 모듈을 생성할 수 있다.
- DBMS에서 직접 실행되기 때문에 입출력 패킷이 적은 편이다.
- 디버깅을 통해 적합성 여부를 검증한다.
- 테스트 전에 오류 여부를 확인한다.
- 특정 오류 및 경고 메시지가 상세히 출력되지 않으므로, SHOW 명령어를 통해 내용을 확인하고, 문제를 수정한다.
15. 절차형 SQL의 종류
- 프로시저 (Procedure)
- 일종의 트랜잭션 언어
- 미리 저장해 놓은 SQL 작업을 수행한다.
- 트리거 (Trigger)
- 이벤트 발생 시 자동으로 수행된다.
- 사용자 정의 함수
- 종료 시 return을 통해 처리 결과를 단일값으로 반환