정보처리기사 -필기
1과목 - 데이터베이스
로킹
로킹(Locking)이란?
하나의 트랜잭션이 데이터를 액세스 하는 동안 다른 트랜잭션이 그 데이터 항목을 액세스할 수 없도록 하는 방법
- 로킹단위 : 로킹의 대상이되는 객체의 크기
(데이터 베이스, 파일, 레코드등) - 로킹단위가 커지면, 로크수가 적어 관리하기 쉽지만 데이터베이스의 공유도(병행성)이 감소
- 로킹단위가 작으면, 로크수가 많아 오버헤드가 커지지만 병행성 수준이 높아진다.
이진트리의 운행법
- Preorder(전위)운행 : Root -> Left -> Right
A -> B -> C - Inorder(중위)운행 : Left -> Root -> Right
B -> A -> C - Postorder(후위)운행 : Left -> Right -> Root
B -> C -> A
데이터 베이스의 정의
- 통합된 데이터(Integrated Data) : 자료의 중복을 배제한 데이터의 모임
- 저장된 데이터(Stored Data) : 컴퓨터가 접근할 수 있는 저장매체에 저장된 자료
- 운영 데이터(Operational Data) : 조직의 업무를 수행하는데 있어서 존재 가치가 확실하고 없어서는 안될 반드시 필요한 자료
- 공용 데이터(Shared Data) : 여러 응용 시스템들이 공통으로 소유하고 유지하려는 자료
트랜잭션의 특성
- Atomicity(원자성)
- 트랜잭션의 연산은 데이터베이스에 모두 반영되든지 아니면 전혀 반영되지 않아야함.
- 트랜잭션 내의 모든 명령은 반드시 완벽히 수행되야 하며, 모두가 완벽히 수행되지않고 어느하나라도 에러가 발생하면 트랜잭션 전부가 취소되어야 함.
- Consistency(일관성)
- 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환함.
- 시스템이 가지고 있는 고정요소는 트랜잭션 수행전과 트랜잭션 수행 완료 후의 상태가 같아야 함.
- Isonlation(독립성, 격리성)
- 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행중에 다른 트랜잭션의 연산이 끼어들 수 없음.
- 수행중인 트랜잭션은 완전히 완료 될 때 까지는 다른 트랜잭션의 결과를 참조할 수 없음.
- Durability(영속성, 지속성)
- 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 함.
- 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 함.
데이터베이스의 특징
- 실시간 접근성(Real Tiem Accessibility) : 수시적이고 비정형적인 질의(조회)에 대하여 실시간 처리에 의한 응답이 가능함.
- 계속적인 변화(Continuous Evolution) : 새로운 데이터의 삽입, 삭제, 갱신으로 항상 최신의 데이터를 유지함.
- 동시공유(동시공용)(Concurrent Sharing) : 여러 사용자가 동시에 자기가 원하는 데이터를 이용할 수 있음.
- 내용에 의한 참조(Content Reference) : 데이터베이스에 있는 데이터를 참조할 때 데이터 주소나 위치에 의해서가 아니라 사용자가 요구하는 데이터 내용으로 데이터를 찾음.(값에의한 참조)
함수적 종속 관계
어떤 릴레이션 R에서 X와 Y를 각각 R의 애트리뷰트 집합의 부분집합이라고 할 경우, X의 값 각각에 대한 시간에 항상 애트리뷰트 Y의값이 오직하나면 연관되어 있을때, Y는 X에 함수종속적이라고 하며, 'X->Y'와 같이 표기한다.
스키마의 3계층
외부 스키마(ExterSchema) = 서브 스키마 = 사용자 뷰(View)
- 사용자나 응용 프로그래머가 각 개인의 입장에서 필요로 하는 데이터베이스의 논리적 구조를 정의한다.
- 전체 데이터베이스의 한 논리적인 부분으로 볼 수 있으므로 서브 스키마라고도 한다.
- 하나의 데이터 베이스 시스템에는 여러 개의 외부 스키마가 존재 할 수 있으며, 하나의 외부 스키마를 여러 개의 응용프로그램 사용자가 공용할 수 있다.
- 같은 데이터베이스에 대해서도 서로 다른 관점을 정의 할 수 있도록 허용한다.
- 일반 사용자는 질의어(SQL)를 사용하여 DB를 사용한다.
개념 스키마(Conceptual Schema) = 전체적인 뷰(View)
- 데이터베이스의 전체적인 논리적 구조로서, 모든 응용 프로그램이나 사용자들이 필요로 하는 데이터를 통합 한 조직 전체의 데이터베이스로 하나만 존재 한다.
- 개념 스키마는 개체 간의 관계와 제약조건을 나타내고 데이터베이스의 접근 권한, 보안 및 무결성 규칙에 관한 명세를 정의한다.
- 단수히 스키마라고 하면, 개념 스키마를 의미한다.
- 기관이나 조직체의 관점에서 데이터베이스르 정의한것이다.
- 데이터베이스 관리자에 의해서 구성된다.
내부 스키마(Internal Schema)
- 물리적 저장장치의 입장에서 본 데이터베이스 구조로, 물리적인 저장장치와 밀접한 계층이다.
- 실제로 데이터베이스에 저장될 레코드의 물리적인 구조를 정의하고, 저장 데이터 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타낸다.
- 시스템 프로그래머나, 시스템 설계자가 보는 관점의 스키마이다.
- 데이터베이스의 물리적 구조를 정의한다.
- 데이터의 실제 저장 방법을 기술한다.
- 물리적인 저장장치와 밀접한 계층이다.
시스템 카탈로그
- 시스템 그 자체에 관련이 있는 스키마 및 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스이다.
- 데이터베이스에 포함되는 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지관리하는 시스템 테이블이다.
- 데이터 정의어의 결과로 구성되는 기본 테이블, 뷰, 인덱스, 패키지, 접근권한 등의 데이터 베이스 구조 및 통계정보를 저장한다.
- 카탈로그들이 생성되면 자료사전에 저장되기 때문에 좁은 의미로는 카탈로그를 자료 사전이라고도 한다.
- 카탈로그에 저장된 정보를 메타 데이터라고 한다.
특징
- 카탈로그 자체도 시스템 테이블로 구성되어 있어 일반 사용자도 SQL을 이용하여 내용을 검색해 볼 수 있다.
- INSERT, DELETE, UPDATE문으로 갱신하는 것은 허용하지 않는다.
- DBMS가 스스로 생성하고 유지한다.
- 카탈로그는 사용자가 SQL문을 실행시켜 기본 테이블, 뷰, 인덱스 등에 변화를 주면 시스템이 자동으로 갱신된다.
자료구조의 분류
- 선형구조 : 선형 리스트(배열), 연결 리스트, 스택, 큐, 데크
- 비선형구조 : 트리, 그래프
릴레이션의 특징
- 한 릴레이션에 포함된 튜플들은 모두 상이하다.
- 한 릴레이션에 포함된 튜플 사이에는 순서가 없다.
- 튜플들의 삽입, 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변한다.
- 릴레이션 스키마를 구성하는 속성들 간의 순서는 중요하지 않다.
- 속성의 유일한 식별을 위해 속성의 명칭은 유일해야 하지마, 속성을 구성하는 값은 동일한 값이 있을 수 있다.
- 릴레이션을 구성하는 튜플은 유일하게 식별하기 위해 속성들의 부분집합을 키(Key)로 설정한다.
- 속성은 더이상 쪼갤 수 없는 원자값만을 저장한다.
- 릴레이션에서 degree는 속성의 술를 의미한다.
정렬
버블정렬
선택정렬
- n개의 레코드 중에서 최소값을 찾아 첫번째 레코드 위치에 놓고, 나머지 n-1개 중에서 다시 최소값을 찾아 두번째 레코드 위치에 놓는 방식을 반복하여 정렬하는 방식이다.
삽입정렬
수와 관계해석
- 관계대수 : 원하는 정보와 그 정보를 어떻게 유도하는가를 기술하는 절차적인 특성을 가지는것
- 관계해석은 원래 수학의 프레디킷 해석에기반을 두고 있다.
- 관계대수는 릴레이션을 처리하기 위한 연산의 집합으로 피연산자가 릴레이션이고 결과도 릴레이션이다.
- 관계해석과 관계대수는 관계 데이터베이스를 처리하는 기능과 능력 면에서 동등하다.
분산데이터베이스
- 장점
- 분산제어가 용이하다.
- 지역자치성이 높다.
- 효용성과 융통성이 높다.
- 점진적 시스템 확장이 용이하다.
- 단점
- 데이터베이스 설계가 어렵다.
- 개발비용이 증가한다.
트리(Tree)와 차수(Degree)
- 차수(Degree) : 가장 차수가 많은 노드의 차수
- 터미널 노드 : 자식이 하나도 없는 노드
E-R 다이어그램
- 표현
- 마름모 : 관계타입
- 속성 : 타원
- 개체 : 사각형
- 특정 DBMS를 고려한 것은 아니다.
- 1976년 Peter Chen이 제안하였다.
- 개체타입과 관계타입을 기본 개념으로 현실 세계를 개념적으로 표현하는 방식이다.
데이터 모델의 구성요소
- 데이터 모델의 구성요소 3가지
- 구조(Structure) : 논리적으로 표현된 개체 타입들 간의 관계로서 데이터 구조 및 정적성질을 표현함.
- 연산(Operation) : 데이터베이스에 저장된 실제 데이터를 처리하는 방법을 표시하는 것으로 데이터베이스를 조작하는 기본도구이다.
- 제약조건(Constaint) : 데이터베이스에 저당될 수 있는 실제 데이터의 논리적인 제약조건을 표시함.
순차파일
- 파일 탐색 시, 모든파일을 비교하면서 검색해야 하므로 검색효율이 낮아 즉각적인 응답을 요구하는 대화형 처리에는 적합하지 않습니다.
- 레코드가 키 순서대로 편성되어 취급이 용이하다.
- 연속적인 레코드의 저장에 의해 레코드 사이에 빈 공간이 존재하지 않으므로 기억장치의 효율적인 이용이 가능하다.
- 필요한 레코드를 삽입, 삭제, 수정하는 경우 파일을 재구성해야 하므로 파일 전체를 복사해야한다.
색인 순차 파일
- 색인 순차 파일은 인덱스를 저장하기 위한 공간과 오버플로우 처리를 위한 별도의 공간이 필요하다.
- 순차 처리와 직접 처리가 모두 가능하다.
- 레코드를 추가 및 삽입하는 경우, 파일 전체를 복사할 필요가 없다.
- 색인 구역은 트랙 색인 구역, 실린더 색인 구역, 마스터 색인 구역으로 구성된다.
구성
- 기본 구역(Prime Area) : 실제 레코드들을 기록하는 부분, 각 레코드를 키 값 순으로 저장
- 색인 구역(Index Area) : 기본 구역에 있는 레코드들의 위치를 찾아가는 색인이 기록되는 부분으로, 트랙 색인 구역, 실린더 색인 구역, 마스터 색인 구역으로 구분할 수 있음.
- 오버플로 구역(Overflow Area) : 기본 구역에 빈 공간이 없어서 새로운 레코드의 삽입이 불가능할 때를 대비하여 예비적으로 확보해 둔 부분
정규화
함수적 종속성등의 종속성 이론을 이요하여, 잘못 솔계된 관계형 스키마를 더 작은 속성의 세트로 쪼개어 바람직한 스키마로 만들어가는 과정
- 정규화의 목적
- 데이터 구조의 안정성을 최대화한다.
- 어떠한 릴레이션이라도 데이터베이스 내에서 표현 가능하게 만든다.
- 효과적인 검색 알고리즘을 생성할 수 있다.
- 중복을 배제하여 삽입, 삭제, 갱신 이상의 발생을 방지한다.
- 데이터 삽입 시 릴레이션을 재구성할 필요성을 줄인다.
- 정규화과정
- 비정규릴레이션
- 1NF -> 도메인이 원자값
- 2NF -> 부분적 함수 종속 제거
- 3NF -> 이행적 함수 종속 제거
- BCNF(강한 제 3정규형) -> 결정자이면서 후보키가 아닌 것 제거
- 4NF -> 다치종속
- 5NF -> 조인 종속성 이용
폴리쉬
순수 관계 연산자
Select
- 릴레이션에 존재하는 튜플 중에서 선택 조건을 만족하는 튜플의 부분집합을 구하여 새로운 릴레이션을 만듦
- 릴레이션의 행에 해당하는 튜플을 구하는 것이므로 수평연산 이라고도 함.
- 연산자의 기호는 그리스문자 마(𝝈)를 사용함.
Project
- 주어진 릴레이션에서 속성 List에 제시된 Attribute만을 추출하는 연산
- 릴레이이션의 열에 해당하는 Attribute를 추출하는 것이므로 수직 연산자라고도 함.
- 연산자의 기호는 그리스 문자 파이를 사용함.
Join
- 공통 속성을 중심으로 2개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만드는 연산
- 연산자기호는 ⧓ 사용함.
Division
- X ⊃ Y인 2개의 릴레이션 R(X)와 S(Y)가 있을 때, R의 속성이 S의 속성값을 모두 가진 튜플에서 S가 가진 속성을 제외한 속성만을 구하는 연산
예제
관계 데이터베이스의 Relation 구조
- 튜플 : 행
- Degree : 속성 수
- Cardinality : 튜플의 수
망(그래프, 네트워크)형 데이터 모델
- CODASYL 이 제안한 것으로 CODASYL DBTG 모델 이라고도 한다.
- 상위와 하위 레코드 사이에서 다대다(N : M) 대응관계를 만족하는 구조이다.
- 상위의 레코드를 Owner, 하위의 레코드를 Member라하여 Owner-Member 관계라고도한다.
- 레코드 타입 간의 관계는 1:1, 1:N, N:M이 될 수 있다.
- 대표적인 DBMS : DBTG, EDBS, TOTAL 등
해싱(Hashing)
- 버킷(Bucket) : 하나의 주소를 갖는 파일의 한 구역을 의미하며, 버킷의 크기는 같은 주소에 포함될 수있는 레코드 수를 의미함.
- 슬롯(Slot) : 1개의 레코드를 저장할 수 있는 공간으로 n개의 슬롯이 모여 하나의 버킷을 형성함.
- Collision(충돌현상) : 서로 다른 2개 이상의 레코드가 같은 주소를 갖는 현상
- Synonym : 같은 Home Address를 갖는 레코드들의 집합
- Overflow
- 계산된 Home Address의 Bucket 내에 저장할 공간이 없는 상태
- Bucket을 구성하는 Slot이 여러개 일때는 Collision은 발생해도 Overflow는 발생하지 않을 수 있음.
DBMS의 필수기능
- 정의(조직)(Definition)
- 데이터의 형과 구조, 데이터가 DB에 저장될 때의 제약조건 등을 명시하는 기능이다.
- 데이터와 데이터의 관계를 명확하게 명세할 수 있어야 하며, 원하는 데이터 연산은 무엇이든 명세할 수 있어야한다.
- 조작(Manipulation)
- 데이터 검색, 갱신, 삽입, 삭제 등을 체계적으로 처리하기 위해 데이터 접근 수단등을 정하는 기능이다.
- 사용자와 데이터베이스 사이의 인터페이스 수단을 제공한다.
- 제어(Control)
- 데이터베이스를 접근하는 갱신, 삽입, 삭제 작업이 정확하게수행되어 데이터의 무결성을 유지되도록 제어 해야한다.
- 정당한 사용자가 허가된 데이터만 접근할 수 있도록 보안을 유지하고 권한을 검사할 수 있어야 한다.
- 여러 사용자가 데이터베이스를 동시에 접근하여 데이터를 처리할 때, 처리결과가 항상 정확성을 유지하도록 병행 제어를 할 수 있도록 한다.