본문 바로가기
other

[정보처리기사] DB 데이터베이스 관련 요약

by Jayson Jeong 2022. 7. 18.

2022.07.21 - [정보처리기사] - [정보처리기사] 실기 꼼수로 합격하기

 

트랜잭션(Transaction)

  • 데이터베이스에 행해지는 작업의 논리적인 수행 단위
  • 데이터베이스에 한꺼번에 모두 수행되어야 할 일련의 연산들

트랜잭션의 특성

종류 내용
원자성
(Atomicity)
트랜잭션의 연산은 데이터베이스에 모두 반영되도록 완료되든지 아니면 전혀 반영되지 않도록 복구되어야 함.
일관성
(Consistency)
트랜잭션이 실행을 성공적으로 완료하면 언제나 모순 없이 일관성 있는 데이터베이스 상태로 보존됨
독립성/고립성
(Isolation)
둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어들 수 없음 
영속성/지속성
(Durability)
성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영속적으로 반영되어야 함. 

ACID

 

트랜잭션 제어 명령어(TCL, Transaction Control language)

명령어 설명
COMMIT 하나의 논리적 단위에 대한 작업이 성공적으로 끝났고, 데이터베이스가 일관된 상태에 있을 때 트랜잭션이 수행한 갱신 연산이 완료된 것을 트랜잭션 관리자에게 알려주는 연산
ROLLRACK 하나의 트랜잭션 처리가 비정상 종료되어 데이터베이스의 일관성을 깨트렸을 때, 트랜잭션 일부가 정상 처리되었더라도 트랜잭션의 원자성을 구현하기 위해 이 트랜잭션이 수행한 모든 연산을 취소시키는 연산
CHECKPOINT ROLLBACK 할 위치 지정

 

지연 갱신 기법

DB변경 내역을 로그에만 기록 후 트랜잭션 완료 시 로그를 이용하여 데이터베이스에 반영한다.

 

즉시 갱신 기법

데이터베이스 회복(Recovery) 기법 중 rollback 시 redo, undo가 모두 실행되는 트랜잭션 처리법으로 트랜잭션 수행 중의 갱신 결과를 DB에 즉시 반영한다. 데이터를 변경하면 로그 파일로 저장되며 모든 내용 수정 시 즉시 데이터베이스에 반영된다.

정규화

종류 설명
제 1정규형 한 릴레이션을 구성하는 모든 도메인이 원자값으로 구성된 정규형
제 2정규형 제 1정규형을 만족하면서 릴레이션에 존재하는 부분 함수적 종속을 제거하여, 모든 속성이 기본키에 완전 함수 종속이 되도록 만들어진 정규형

 ※부분 함수적 종속 제거 = 완전 함수 종속
제 3정규형 제 2정규형을 만족하면서 릴레이션을 구성하는 속성들 간의 이행적 종속관계를 분해하여 속성들이 비이행적 함수 종속관계를 만족하도록 만들어진 정규형

 ※이행적 함수적 종속
 : A → B 이고, B → C 일 때, A → C를 만족하는 관계
BCNF 제 3정규형을 만족하면서 릴레이션의 모든 결정자가 후보키가 되도록 하는 정규형

 ※결정자가 후보키가 아닌 속성을 제거
제 4정규형 BCNF를 만족하면서 릴레이션에서 다치 종속 관계를 제거한 정규형

 ※다치 종속 : 두 속성이 1:다 대응이 되는 경우
제 5정규형 후보키를 통하지 않은 조인종속(Join Dependency)을 제거한 정규형

도부이걸다조

 

반정규화(비정규화/역정규화)

  • 정규화된 데이터 모델을 중복 허용, 데이터 통합, 데이터 분할을 통해 의도적으로 정규화 원칙을 위배하는 행위
  • 시스템의 성능 향상, 개발과 운영의 단순화를 위해 진행

 

릴레이션 반정규화

  • 릴레이션 병합 : 두 릴레이션 간의 잦은 참조로 성능이 저하될 경우 이 문제점을 해결하기 위해 병합
  • 릴레이션 분할 
    • 수직 분할 : 자주 사용하는 속성과 그렇지 않은 속성을 구분해서 분할
    • 수평 분할 : 자주 사용하는 튜플과 그렇지 않은 튜플을 구분해서 분할, 파티션 적용으로 성능 향상 도모

속성 반정규화

  • 릴레이션의 성능을 향상시키기 위해 속성 또는 파생속성을 추가
  • 파생속성 : 현재 릴레이션에는 없는 속성이지만 작업의 효율을 위해 한 속성으로부터의 계산이나 가공에 의해 파생되는 속성

이상(Anomaly)

  • 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복(Redundancy)이 발생하고, 이 중복으로 인해 테이블 조작 시 문제가 발생하는 현상

이상의 종류

종류 내용
삽입 이상(Insertion Anomaly)  테이블에 데이터를 삽입할 때 의도와는 상관없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
삭제 이상(Deletion Anomaly) 테이블에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는, 즉  연쇄 삭제가 발생하는 현상
갱신 이상(Update Anomaly) 테이블에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보에 불일치성이 생기는 현상

 

스키마

스키마는 데이터베이스의 구조와 조제약조건에 대한 전반적인 명세를 기를 기술한 메타데이터의 집합

속성, 개체, 관계에 대한 정의와 제약 조건을 기술한 것

 

종류 내용
개체(Entity) 데이터로 표현하려는 객체
ER 다이어그램에서 네모로 표현
속성(Attribute) 개체가 갖는 속성
ER다이어그램에서 원으로 표현
관계(Relation) 개체와 개체 사이의 연관성
ER다이어그램에서 마름모로 표현

개념 스키마(Conceptual Schema) = 전체적인 뷰

전체적인 개념을 정의하는 것

데이터베이스 자체의 전체적인 구조를 확인하기 때문에 개념 스키마를 확인하는 사람은 DBA 즉 관리자이다.

DBA는 개념 스키마를 통해서 전체적인 구조의 개념을 파악하고 DDL과 DCL을 사용해서 구조를 설계함

외부 스키마(External Schema) = 사용자 뷰

외부에서 바라보는 스키마, 외부 스키마를 통해 구조를 확인하고 DML을 사용해서 데이터를 이용함

내부 스키마(Internal Schema) = 저장 스키마

실제 데이터의 내부를 정의하는 것

데이터 필드의 이름은 무엇이고, 해당 필드는 몇 Btye이며 인덱스가 있는지 등 물리적으로 어떻게 저장할지 정의한 것

실제 데이터를 저장하는 내용에 대한 기술이기 때문에 저장 스키마라고도 함.

 

테이블 구성 요소

릴레이션(Relation)

관계형 데이터베이스의 기본 저장 단위. 테이블을 나타냄

속성(Attribute)

하나의 릴레이션 안에서 각각의 개체를 나타내는 단위 컬럼 한 개 한 개가 속성임

차수(Degree)

한 릴레이션에 들어 있는 속성(Attribute)의 수를 차수라고 함. 즉, 컬럼의 갯수가 차수의 갯수임

튜플(Tuple)

릴레이션의 각 행을 레코드 또는 튜플이라고 함

카디널리티(Cardinality)

카디널리티는 릴레이션 튜플의 갯수를 나타냄 즉 테이블의 행 수가 카디널리티임

도메인

릴레이션에 포함된 각각의 속성들이 가질 수 있는 값들의 집합이라고 할 수 있음

예를 들어, 성별일 경우 도메인은 SEX(성별)로 정의하고 값은 남, 여 둘 중 하나만 가능함

 

관계대수

릴레이션을 처리하는 연산의 집합

종류 내용 연산자
합집합(union) 겹치는 걸 제외하고 테이블 합
교집합(intersect) 겹치는 것만 테이블 합
 
차집합(defference) A - B 한 결과 테이블
카디션 프로덕트(cartesian product) 나올 수 있는 조합 경우의 수
 
셀렉트(select) 테이블에서 행(튜플)을 꺼낸다
프로젝트(project) 테이블에서 열(로우)을 꺼낸다
조인(join) 결합
디비전(division) 분할

 

분산 데이터베이스 설계

위치 투명성 액세스하려는 데이터베이스의 실제 위치를 알 필요 없이 단지 데이터베이스의 논리적인 명칭만으로 액세스 할 수 있다.
중복 투명성 동일 데이터가 여러 곳에 중복되어 있더라도 사용자는 마치 하나의 데이터만 존재하는 것처럼 사용하고, 시스템은 자동으로 여러 자료에 대한 작업을 수행한다. 
병행 투명성 분산 데이터베이스와 관련된 다수의 트랜잭션들이 동시에 실현되더라도 그 트랜잭션의 결과는 영향을 받지 않는다.
장애 투명성 트랜잭션, DBMS, 네트워크, 컴퓨터 장애에도 불구하고 트랜잭션을 정확하게 처리한다.

 

데이터 명령어

구분 설명 명령어
데이터 질의어
DQL
- 데이터베이스에 저장된 데이터를 검색하는데 사용하는 질의어 SELECT
데이터 조작어
DML
- 데이터베이스에 저장된 데이터를 수정, 삭제, 추가하는 명령어 INSERT, UPDATE, DELETE
데이터 정의어
DDL
- 데이터베이스 객체를 생성하고 수정, 삭제하는 명령어
- 데이터베이스의 스키마를 정의, 스키마에 대한 명세는 시스템 카탈로그에 저장
CREATE, ALTER,
DROP, TRUNCATE
데이터 제어어
DCL
- 데이터베이스의 규정이나 기법을 정의하고 제어하는 언어
- 사용자 권한 부여/취소, 트랜잭션 제어
GRANT, REVOKE, COMMIT,
ROLLRACK

 

테이블 생성 제약조건

   
PRIMARY KEY - 테이블의 기본키를 정의함
- 기본으로 NOT NULL, UNIQUE 제약이 포함됨
FOREIGN KEY
REFERENCES
- 외래키를 정의함
- 참조 대상을 테이블 이름으로 명시해야 함
- 참조 무결성 위배 상황 발생 시 처리 방법으로 옵션 지정 가능(NOT ACTION, SET DEFAULT, SET NULL, CASCADE)
UNIQUE - 테이블 내에서 얻은 유일한 값을 가져야 함
- 테이블 내에서 같은 값을 가져서는 안 되는 항목 지정
NOT NULL - 테이블 내에서 관련 열의 값은 NULL일 수 없음
- 필수 입력 항목에 대해 제약조건으로 설정함
CHECK - 개발자가 정의하는 제약조건
- 상황에 따라 다양한 조건 설정 가능

 

집계성 SQL

집계함수 설명
COUNT() 튜플(행)이나 값들의 개수
SUM() 값들의 합
AVG() 값들의 평균값
MAX() 값들의 최대값
MIN() 값들의 최소값
STDDEV() 값들의 표준편차값
VARIANCE() 값들의 분산값

 

JOIN

분류 설명
논리적 조인 - 사용자의 SQL문에 표현되는 테이블 결합 방식
- 내부조인(INNER JOIN), 외부조인(OUTER JOIN), 셀프조인(SELF JOIN)
물리적 조인 - 데이터베이스 옵티마이저에 의해 내부족으로 발생하는 테이블 결합 방식
- Nested Loop Join, Merge Join, Has Join

 

구분 유형 설명
내부조인
(INNER JOIN)
동등조인(EQUI JOIN) 특정 컬럼을 비교하여 같은 값을 추출
자연조인(NATURAL JOIN) 두 테이블의 모든 컬럼으 비교하여 같은 컬럼명을 가진 모든 컬럼 값이 같을 경우 추출
교차조인(CROSS JOIN) 조인 조건의 없는 모든 데이터의 조합을 추출
외부조인
(OUTER JOIN)
왼쪽 외부 조인(LEFT OUTER JOIN) 왼쪽 테이블의 모든 데이터와 오른쪽 테이블의 동일 데이터 추출
오른쪽 외부 조인(RIGHT OUTER JOIN 오른쪽 테이블의 모든 데이터와 왼쪽 테이블의 동일 데이터 추출

 

SQL 인젝션(SQL Injection)

사용자의 입력값 등 외부 입력값이 SQL 쿼리에 삽입되어 공격자가 원하는 SQL 쿼리문을 실행하는 공격기법

웹페이지의 url 파라미터 입력란에 SQL 구문을 삽입하여 내부 데이터베이스의 데이터를 유출하는 기법

 

데이터 마이닝(Data Mining)

데이터 웨어하우스에 저장된 데이터들에서 사용자의 요구에 적합한 데이터를 발견하기 위한 기법

대량의 데이터를 분석하여 데이터에 내재되어 있는 변수 사이의 관계를 규명하여 패턴화함으로써 효율적인 데이터 추출 가능

 

 

네트워크/운영체제 관련 요약

애플리케이션 테스트 관련 요약

응집도와 결합도 관련 요약

소프트웨어 및 디자인 패턴 관련 요약

UI, UML, 다이어그램 관련 요약