데이터베이스 ( SQL 활용 )

Codren·2021년 3월 20일
0

데이터베이스

목록 보기
1/4
post-custom-banner

정보처리기사 필기 3과목 데이터베이스 ( SQL 활용)


Section 1. 데이터베이스 기본

1. 정보시스템이란 ?

조직에서 필요한 데이터들을 수집, 저장, 가공하여 운영에 필요한 정보를 제공하는 시설과 장비


2. 데이터베이스란 ?

여러 사람이 사용할 수 있도록 데이터를 저장하고 통합해서 운영하는 공유 데이터의 집합 (정보시스템)


3. 데이터베이스의 특징

  • 실시간 접근, 계속적인 변화, 공유, 내용에 의한 참조



4. DBMS

데이터베이스 관리 시스템(DataBase Management System)은 다수의 사용자들이 데이터베이스 내의 데이터를 접근할 수 있도록 해주는 소프트웨어


5. DBMS의 기능      중요 !!

    ① 데이터 정의 - DDL
    ② 데이터 조작 - DML
    ③ 데이터 제어 - DCL, 무결성 관리, 보안권한검사, 병행제어)



6. 3단계 스키마 구조      중요 !!

    ① 외부 스키마 - 사용자 / 응용프로그램이 접근, 여러 개, View라는 가상 테이블
    ② 개념 스키마 - DB의 전체적인 논리적 구조, 외부 스키마 통합, 개체간 관계제약조건
    ③ 내부(물리)스키마 - 물리적 저장 형태, 저장 장치 측면

     * 스키마 - 데이터베이스의 개체, 속성, 관계, 제약조건등에 대해 정의한 것


7. 관계형 데이터베이스 용어

    ① 릴레이션 = 테이블
    ② 행 = 레코드 = 튜플 = 기수(개수) = 카디널리티(개수)
    ③ 열 = 속성 = 컬럼 = 필드 = 차수(개수)
    ④ 도메인 - 속성이 가질 수 있는 모든 원자값의 집합(범위)


8. SQL 이란 ?

RDBMS의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어이다.



9. SQL의 원리

  • 관계 대수 + 관계 해석 = 비절차적 언어

  • 관계 대수 - 절차적 (What + How)
    ① 일반(집합) 연산 - 합(union), 교(intersection), 차(difference), cartesian product
    순수 연산 - select, project, join, division

  • 관계 해석 - 비절차적 (What)



10. SQL 종류      중요 !!

    ① DDL - create, alter, drop
    ② DML - select , insert, update, delete
    ③ DCL - grant, revoke
    ④ TCL - commit, rollback



11. 와일드카드 문자

    ① %김% : 앞뒤 0~n개의 단어를 포함하고 사이에 '김'이라는 단어 포함하는 데이터 조회
    ② _길동 : 지정된 위치에 _ 의 개수만큼 단어를 포함하는 데이터 조회 (홍길동)
    ③ [김이 ] : 김길동, 이길동 등이 조회됨


12. Null 데이터 확인문

  • where name = null    X
  • where name is null   O


13. 테이블 생성 시 제약조건

    ① Primary key - 주키
    ② Foreign key - 외래키
    ③ Unique - 고유값
    ④ Not null - null 값 허용 X



14. 시스템 카탈로그

데이터베이스의 객체와 구조들에 관한 모든 데이터 (메타 데이터)를 포함하는 시스템 테이블

  • 사용자가 직접 SQL로 갱신 불가, 자동으로 갱신
  • 데이터 사전 (Data Dictionary) = 시스템 데이터베이스 라고도 불림



Section 2. 트랜잭션

1. 트랜잭션이란 ?

데이터베이스의 상태를 변화시키는 논리적 업무 처리(기능) 단위로써 일련의 연산 집합이다



2. 트랜잭션의 특징     중요!!

    ① 원자성 (Atomicity) - 트랜잭션 내의 모든 명령은 모두 수행 또는 모두 수행되지 않는다
    ② 일관성 (Consistency) - 트랜잭션 처리 전과 후에 DB의 일관된 상태는 같아야 한다
    ③ 격리성 (Isolation) - 트랜잭션 실행 시 다른 트랜잭션의 간섭을 받지 않아야 한다
    ④ 영속성 (Durability) - 트랜잭션의 완료 결과가 데이터베이스에 영구히 기억되어야 한다



3. 트랜잭션의 상태변화


4. 트랜잭션 병행제어란 ?

동시에 여러 개의 트랜잭션을 병행 수행할 때 트랜잭션들이 DB의 일관성을 파괴하지 않도록 트랜잭션 간의 상호작용을 제어하는 것



5. 트랜잭션 병행제어 기법

    ① 2단계 잠금 기법 (Two Phase Locking) - 확장단계 / 축소단계
    ② 타임 스탬프 기법 : 도착순으로 순서 번호 부여
    ③ 검증 기법 : 메모리상에서 복사본을 수행해본 후에 적용



6. 병행제어를 하지 않을 경우 발생하는 문제점

    ① 갱신 분실 (Lost update) - 2개 이상의 트랜잭션이 같은 데이터를 갱신할 때 문제점
    ② 오손 판독 (Dirtyread) - 아직 commit 되지 않은 데이터를 읽을 때 발생하는 문제점
    ③ 연쇄 복귀 (Cascading rollback) - 다른 트랜잭션도 rollback되는 문제점



7. 트랜잭션 회복 (Recovery)

  • 로그 (Log)를 이용한다

    ① 지연 갱신 - Redo ( 나중에 commit 시켜 아직 적용 안된 상황)
    ② 즉시 갱신 - Redo / Undo 둘 다 수행 (즉시 commit 시키므로)
    ③ 그림자 페이지




Section 3. 고급 SQL

1. 뷰 (View)란 ?

허용된 자료만을 제한적으로 사용자에게 보여주는 가상(논리) 테이블 (외부 스키마)

  • 저장장치내 물리적으로 저장되어 있지 않다
  • 삽입, 삭제, 갱신에 제약이 존재한다
  • ALTER 명령어는 불가능하다
  • 인덱스가 존재하지 않는다
  • 보안성 ↑, 사용용이



2. 인덱스 (Index)란 ?

데이터를 빠르게 식별할 수 있도록 컬럼값과 레코드의 논리적인 주소를 별도의 저장구조로 저장

  • 분포도는 10~15%가 적당
  • B -Tree 구조
  • 기본키는 자동으로 Index 생성
  • 삽입, 삭제, 변경에 대하여 성능 ↓



3. 해시 인덱스

    ① 버킷 (Bucket) - 슬롯의 집합
    ② 슬롯 (Slot) - 1개의 해시 레코드 저장 공간
    ③ 충돌 (Collision) - 해시 값이 같은 경우 발생
    ④ 동거자 = 동의어 (Synonyms) - 충돌이 일어난 레코드들
    ⑤ 오버플로우 - 해시 테이블에 들어갈 자리가 없는 상황



4. 해시 함수 종류

    ① 계수 분석 - 분포
    ② 제산법 - 나누기
    ③ 제곱법 - 곱하기
    ④ 폴딩 - 레코드 키를 여러 부분으로 나누고 나눈 부분의 각 숫자를 더하거나 XOR
    ⑤ 기수 변환 -진수를 다른 진수로 변환
    ⑥ 대수적 코딩 - 각자리 비트수를 다항식으로 간주하여 다항식 연산



5. 클러스터 (Cluster)

물리 저장 공간에서 그룹 형태로 같이 저장 하는 기법

  • 액세스 기법이 아닌 물리적 저장 기법
  • 분포도 ↑, 대량의 범위
  • 단일 테이블 클러스터링 / 다중 테이블 클러스터링



6. 파티션 (Partition)

저장 되는 물리적 공간을 아예 별도로 두는 기법

  • 독립적으로 관리 및 백업
  • 범위 / 해시 / 조합(합성) 분할



7. ORM (Object Relation Mapping)

클래스(Object)와 데이터베이스의 테이블(Relation)을 자동으로 Mapping하는 기법

post-custom-banner

0개의 댓글