본문 바로가기
IT License

정보처리기사 필기대비 공부노트 (1_데이터베이스)

by 시뮝 2018. 4. 13.
728x90

■   스키마의 3계층

  1. 외부 스키마(External Schema) = 서브 스키마 = 사용자 뷰(View)
    - 사용자나 응용 프로그래머가 각 개인의 입장에서 필요로 하는 데이터베이스의 논리적 구조를 정의한 것이다.
    - 전체 데이터베이스의 한 논리적인 부분으로 볼 수 있으므로 서브 스키마(Subschema)라고도 한다.
    - 하나의 데이터베이스 시스템에는 여러 개의 외부 스키마가 존재할 수 있으며, 하나의 외부 스키마를 여러 개의 응용 프로그램이나 사용자가 공용할 수도 있다.
    - 같은 데이터베이스에 대해서도 서로 다른 관점을 정의할 수 있도록 허용한다.
    - 일반 사용자는 질의어(SQL)를 이용하여 DB를 쉽게 사용할 수 있다.
    - 응용 프로그래머는 COBOL, C 등의 언어를 사용하여 DB에 접근한다.

  2. 개념 스키마(Conceptual Schema) = 전체적인 뷰(View)
    - 데이터베이스의 전체적인 논리적 구조로서, 모든 응용 프로그램이나 사용자들이 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로 하나만 존재한다.
    - 개체간의 관계와 제약 조건을 나타내고 데이터베이스의 접근 권한, 보안 및 무결성 규칙에 관한 명세를 정의한다.
    - 단순히 스키마(Schema)라고 하면 개념 스키마를 의미한다.
    - 기관이나 조직체의 관점에서 데이터베이스를 정의한 것이다.
    - 데이터베이스 관리자(DBA)에 의해서 구성된다.

  3. 내부 스키마(Internal Schema)
    - 내부 스키마는 데이터베이스의 물리적 구조이다.
    - 내부 스키마는 데이터의 실제 저장 방법을 기술한다.
    - 물리적인 저장장치와 밀접한 계층이다.
    - 시스템 프로그래머나 시스템 설계자가 보는 관점의 스키마이다.


■   VIEW

  1. 뷰(View)의 개념
    - 뷰는 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된, 이름을 가지는 가상 테이블이다.
    - 뷰는 저장장치 내에 물리적으로 존재하지 않지만, 사용자에게는 있는 것처럼 간주된다.

  2. 뷰(View)의 특징
    - 뷰는 기본 테이블로부터 유도된 테이블이기 때문에 기본 테이블과 같은형태의 구조를 사용하며, 조작도 기본 테이블과 거의 같다.
    - 뷰는 가상 테이블이기 때문에 물리적으로 구현되어 있지 않다.
    - 데이터의 논리적 독립성이 어느 정도 보장된다.
    - 필요한 데이터만 뷰로 정의해서 처리할 수 있기 때문에 관리가 용이하고 명령문이 간단해진다.
    - 뷰를 통해서만 데이터에 접근하게 하면 뷰에 나타나지 않는 데이터를 안전하게 보호하는 효율적인 기법으로 사용할 수 있다.
    - 기본테이블의 기본 키를 포함한 속성(열) 집합으로 뷰를 구성해야만 삽입, 삭제, 갱신 연산이 가능하다.
    - 정의된 뷰는 다른 뷰의 정의에 기초가 될 수 있다.
    - 하나의 뷰를 삭제하면 그 뷰를 기초로 정의된 다른 뷰도 자동으로 삭제된다.



■   DDL(Data Definition Language, 데이터 정의어)

- CREATE 

- ALTER

- DROP

- TRUNCATE

- GRANT

- REVOKE

- COMENT


■   DML(Data Manipulation Language, 데이터 정의어)

- INSERT

- UPDATE

- DELETE

- DELETE문의 특징

- 삭제문은 테이블에서 특정 튜플을 삭제할 때 사용된다.

- 모든 레코드를 삭제할 때는 WHERE절을 생략한다.

- 모든 레코드를 삭제하더라도 테이블 구조는 남아 있기 때문에 디스크에서 테이블을 완전히 제거하는 DROP과는 다르다.

- 형식 및 구조

DELETE

FROM 테이블명

WHERE 조건;

- SELECT

- LOCK

- TABLE

- EXPLAIN PLAN

- CALL


■   DCL(Data Control Language, 데이터 정의어)

- SET TRANSACTION

- COMMIT

- ROLLBACK

- SAVEPOINT



■   관계대수/관계해석

  1. 계(대)수 - (절)차적언어
    - 관계형 대이터베이스에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적 언어이다.
    - 릴레이션을 처리하기 위해 연산자와 연산규칙을 제공하는 언어로 피연사자가 릴레이션이고, 결과도 릴레이션이다.
    - 질의에 대한 해를 구하기 위해 수행해야 할 연산의 순서를 명시한다.
    - 순수 관계 연산자 : Select (σ), Project (π), Join (▷◁), Division (÷)
    - 일반 집합 연산자 : UNION(합집합), INTERSECTION(교집합), DIFFERENCE(차집합), CARTESIAN PRODUCT(교차곱)
  1. 관계(해)석 - (비)절차적언어
    - 관계 데이터 모델의 제안자인 코드(E. F. Codd)가 수학의 Predicate Calculus(술어해석)에 기반을 두고 관계 데이터베이스를 위해 제안했다.
    - 관계 데이터의 연산을 표현하는 방법으로, 원하는 정보를 정의할 때는 계산 수식을 사용한다.
    - 원하는 정보가 무엇이라는 것만 정의하는 비절차적 특성을 가진다.
    - 튜플 관계해석과 도메인 관계해석이 있다.
    - 기본적으로 관계해석과 관계대수는 관계 데이터베이스를 처리하는 기능과 능력면에서 동등하며, 관계대수로 표현한 식은 관계해석으로 표현할 수 있다.
    - 질의어로 표현한다.



■   트랜잭션의 특성

  1. Atomicity (원자성)
    - 트랜잭션의 연산은 데이터베이스에 모두 반영되든지 아니면 전혀 반영되지 않아야 함
    - 트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야 하며, 모두가 완벽히 수행되지 않고 어느 하나라도 오류가 발생하면 트랜잭션 전부가 취소되어야 함

  2. Consistency (일관성)
    - 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환함
    - 시스템이 가지고 있는 고정 요소는 트랜잭션 수행 전과 트랜잭션 수행 완료 후의 상태가 같아야 함

  3. Isolation (독립성, 격리성)
    - 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어들 수 없음
    - 수행 중인 트랜잭션은 완전히 완료될 때까지 다른 트랜잭션에서 수행 결과를 참조할 수 없음

  4. Durability (영속성, 지속성)
    - 성공적으로 완료된 트랜잭션의 결과는 영구적으로 반영되어야 함



■   관계형 데이터베이스의 릴레이션(Relation) 구조

  1. 튜플(Tuple)
    - 릴레이션을 구성하는 각각의 행을 말한다.
    - 속성의 모임으로 구성된다.
    - 파일 구조에서 레코드와 같은 의미이다.
    - 튜플의 수를 카디널리티(Cardinality) 또는 기수, 대응수라고 한다.

  2. 속성(Attribute)
    - 데이터베이스를 구성하는 가장 작은 논리적 단위이다.
    - 파일 구조상의 데이터 항목 또는 데이터 필드에 해당된다.
    - 개체의 특성을 기술한다.
    - 속성의 수를 디그리(Degree) 또는 차수라고 한다.

  3. 도메인(Domain)
    - 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자(Atomic) 값들의 집합이다.
    - 도메인은 실제 애트리뷰트 값이 나타날 때 그 값의 합법 여부를 시스템이 검사하는데에도 이용된다.



■   릴레이션의 특징

  1. 튜플들의 삽입, 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변한다.
  2. 튜플의 유일성 : 한 릴레이션에서는 똑같은 튜플이 포함될 수 없다.
  3. 튜플의 무순서 : 한 릴레이션에 포함된 튜플 사이에는 순서가 없다.
  4. 속성의 무순서 : 릴레이션 스키마를 구성하는 속성들 간의 순서는 중요하지 않다.
  5. 속성의 명칭 : 속성의 유일한 식별을 위해 속성의 명칭은 유일해야 하지만, 속성을 구성하는 값은 동일한 값이 있을 수 있다.
  6. 키(Key) 릴레이션을 구성하는 튜플을 유일하게 식별하기 위해 속성들의 부분집합을 키(Key) 로 설정한다.
  7. 속성의 원자값 : 속성의 값은 논리적으로 더 이상 쪼갤 수 없는 원자값만을 저장한다.



■   관계형 데이터베이스의 제약조건


   키(Key) 의 개념 및 종류

 : 키는 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 튜플들을 서로 구분할 수 있는 애트리뷰트를 말한다.
  1. 후보키(Candidate Key)
    - 후보키는 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합, 즉 기본키로 사용할 수 있는 속성들을 말한다.
    - 하나의 릴레이션내에서는 중복된 튜플에 대해서 유일성과 최소성을 만족시켜야 한다.
            - 유일성(Unique) : 하나의 키값으로 하나의 튜플만이 유일하게 식별할 수 있어야 한다.
            - 최소성(Minimality) : 모든 레코드들을 유일하게 식별하는 데 꼭 필요한 속성으로만 구성되어야 한다.

  2. 기본키(Primary Key)
    - 기본키는 후보키 중에서 선택한 주키(Main Key)이다.
    - 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성
    - NOT NULL
    - 기본키로 정의된 속성에는 동일한 값이 중복되어 저장될 수 없다.

  3. 대체키(Alternate Key)
    - 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키들을 말한다.
    - 보조키라고도 한다.

  4. 슈퍼키(Super Key)
    - 슈퍼키는 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키로서 릴레이션을 구성하는 모든 튜플들 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타자지 않는다.
    - 슈퍼키는 릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족시키지만, 최소성은 만족시키지 못한다.

  5. 외래키(Foreign Key)
    - 관계(Relationship) 를 맺고 있는 릴레이션 R1, R2 에서 릴레이션 R1 이 참조하고 있는 릴레이션 R2 의 기본키와 같은 R1 릴레이션의 속성을 외래키라고 한다.
    - 외래키는 참조되는 릴레이션의 기본키와 대응되어 릴레이션 간에 참조 관계를 표현하는데 중요한 도구이다.
    - 외래키로 지정되면 참조 릴레이션의 기본키에 없는 값은 입력할 수 없다.

   무결성
  1. 개체 무결성
    - 릴레이션에서 기본키를 구성하는 속성은 널(NULL)값이나 중복값을 가질 수 없다.

  2. 참조 무결성
    - 외래키 값은 NULL 이거나 참조 릴레이션의 기본키 값과 동일해야 한다. 즉, 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다.
    - 외래키와 참조하려는 테이블의 기본키는 도메인과 속성 개수가 같아야 한다.



■   OLAP 연산


- Roll-up : 분석할 항목에 대해 한 차원의 계층 구조를 따라 단계적으로 구체적인 내용의 상세 데이터로부터 요약된 형태의 데이터로 접근하는 기능

- Drill-down : 분석할 항목에 대해 한 차원의 계층 구조를 따라 단계적으로 요약된 형태의 데이터로부터 구체적인 내용의 상세 데이터로 접근하는 기능

- Drill-through : 데이터 웨어하우스나 OLTP에 존재하는 상세 데이터에 접근하는 기능

- Drill-across : 다른 데이터 큐브의 데이터에 접근하는 기능

- Pivoting : 보고서의 행, 열, 페이지 차원을 바꾸어 볼 수 있는 기능

- Slicing : 다차원 데이터 항목들을 다양한 각도에서 조회하고 자유롭게 비교하는 기능

- Dicing : Slicing을 더 세분화하는 기능



■   NoSQL

- Not Only SQL의 약자이다.

- 비정형 데이터의 저장을 위해 유연한 데이터 모델을 지원한다.

- 전통적인 관계형 데이터베이스관리시스템과는 다른 비관계형(non-relational) DBMS 이다.



■   트리

  1.  노드(Node) : 트리의 기본 요소로서 자료 항목과 다른 항목에 대한 가지(Branch)를 합친 것
  2.  디그리(Degree) : 각 노드에서 뻗어 나온 가지의 수
  3.  단말 노드(Terminal Node) = 입 노드(Leaf Node) : 자식이 하나도 없는 노드, 즉 Degree가 0인 노드
  4.  트리의 디그리 : 노드들의 디그리 중에서 가장 많은 수



■   스택(Stack) 알고리즘

  1.  오버플로(Overflow) : 스택으로 할당받은 메모리 부분의 마지막 주소가 M번지라고 할 때, Top Pointer의 값이 M보다 커지면 스택의 모든 기억 장소가 꽉 채워져 있는 상태이므로 더 이상 자료를 삽입할 수 없어 Overflow를 발생시킴

  2. 언더플로(Underflow) : Top Pointer 가 주소 0을 가리키고 있다면 스택에는 삭제할 자료가 없으므로 Underflow를 발생시킴



■   이진 검색 알고리즘


- 탐색 효율이 좋고 탐색 시간이 적게 소요된다.

- 검색할 데이터가 정렬되어 있어야 한다.

- 비교횟수를 거듭할 때마다 검색 대상이 되는 데이터의 수가 절반으로 줄어든다.



■   해싱(Hashing)

- 해싱은 Hash Table 이라는기억 공간을 할당하고, 해시 함수(Hash Function)을 이용하여 레코드 키에 대한 Hash Table 내의 Home Address 를 계산한 후 주어진 레코드를 해당 기억 장소에 저장하거나 검색 작업을 수행하는 방식이다.
- 해싱은 DAM(직접접근) 파일을 구성할 때 사용되며, 접근 속도는 빠르나 기억 공간이 많이 요구된다.
- 검색 속도가 가장 빠르다.
- 삽입, 삭제 작업의 빈도가 많을 때 유리한 방식이다. 


■   해시테이블(Hash Table, 해시 표)

- 버킷(Bucket) : 하나의 주소를 갖는 파일의 한 구역을 의미하며, 버킷의 크기는 같은 주소에 포함될 수 있는 레코드 수를 의미함
- 슬롯(Slot) : 1개의 레코드를 저장할 수 있는 공간으로 n개의 슬롯이 모여 하나의 버킷을 형성함

- Collision(충돌 현상) : 서로 다른 2개 이상의 레코드가 같은 주소를 갖는 현상
- Synonym : 같은 Home Address 를 갖는 레코드들의 집합
- Overflow : 계산된 Home Address 의 Bucket 내에 저장할 기억 공간이 없는 상태로 Bucket 을 구성하는 Slot 이 여러 개일 때 Collision은 발생해도 Overflow는 발생하지 않을 수 있음



■   해싱함수(Hashing Function)

  1.  제산법  
  2.  제곱법
  3.  폴딩법
  4.  기수 변환법
  5.  대수적 코딩법
  6.  계수 분석법(숫자 분석법)
  7.  무작위법



■   중위 표기법(Infix)을 후위 표기법(Postfix) 으로 변환


예시문제) 중위 표기법 수식 (A B) * C + (C + E) 을 후위 표기법으로 표기하기

>> A B + C D E + +


풀이)

※ 후위 표기 방식은 중위 표기 방식으로 표현된 수식에서 연산자를 해당 피연산자 두 개의 뒤(오른쪽)로 이동시킨 것이다.

1. 연산 순서 순위에 맞게 괄호로 묶고 연산자 이동

( ( (A + B) * C) + (D + E) )  →→  ( ( (A  B) + C) (D  E) ++

2. 괄호를 제거한다.

A B + C D E + +


728x90

댓글