본문 바로가기

Study/정보처리기사 필기

데이터베이스

핵심 개념(Key Concept)


 * E-R 다이어그램 기호

- 마름모 (다이아몬드)

관계 타입

- 사각형

개체 집합

- 타원

속성

- 밑줄 타원

기본 키 속성

- 선, 링크

개체 타입과 속성을 연결


 * 릴레이션 관련 용어

- 개체 타입

속성들로만 기술된 개체의 정의

- 튜플

릴레이션을 구성하는 행

레코드와 같은 의미

카디닐리티 (Cardinality) == 튜플의 수

- 속성 (Attribute)

데이터베이스를 구성하는 가장 작은 논리적 단위

데이터 필드와 같은 의미

디그리 (Degree) == 속성의 수 == 차수

- 도메인 (Domain)

하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자값들의 집합


 * 데이터베이스 회복 기법

- 즉각 갱신 기법

트랜잭션이 부분 완료되기 전이라도 즉시 실제 DB에 반영하는 기법

로그 (Log) 필요

- 대수적 코딩 방법

- 타임 스탬프 기법

- 폴링 기법


 * 관계 대수 VS. 관계 해석

- 관계 대수

관계형 데이터베이스에서 원하는 정보와 그 정보를 어떻게 유도하는가를 기술하는 절차적 특성

릴레이션을 처리하기 위해서 연산자와 연산 규칙을 제공

피연산자도 릴레이션, 결과도 릴레이션

순수 관계 연산자

SELECT, PROJECT, JOIN, DIVISION

일반 집합 연산자

UNION, INTERSECTION, DIFFERENCE, CARTESIAN PRODUCT

- 관계 해석

원하는 정보가 무엇이라는 것만 정의하는 비절차적 특성

계산 수식 사용

튜플 관계 해석과 도메인 관계 해석이 있다.

질의어로 표현


 * NoSQL

- Not Only SQL의 약자

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

- 비관계형 DBMS

- 비정규화를 통해 데이터를 모델링


 * 로킹

상호 배타적으로 주요 데이터의 액세스를 허용

병행 제어의 한 종류

- DB, 파일, 레코드, 필드 등은 로킹단위가 된다.

- 로킹단위의 크기

크면 -> 로크 수가 적어서 관리하기 용이. 병행성 수준이 낮아짐. 공유도 저하

작으면 -> 로크 수가 많아서 관리하기 불편. 병행성 수준이 높아짐. 로킹 오버헤드 증가


 * 무결성의 종류

- 개체 무결성

릴레이션에서 기본 키를 구성하는 속성은 NULL 값이나 중복 값을 가질 수 없다.

- 참조 무결성

외래 키 값은 NULL이거나 참조 릴레이션의 기본 키 값과 같아야한다.

릴레이션은 참조할 수 없는 외래 키 값을 가질 수 없다.

- 널 무결성

릴레이션의 특성 속성이 NULL 값을 가질 수 없도록하는 규정

- 고유 무결성

릴레이션의 특정 속성에 대해서 각 튜플이 가지는 값들이 서로 달라야한다.

- 도메인 무결성

특정 속성의 값이 그 속성이 정의된 도메인에 속한 값이어야한다는 규정

- 키 무결성

하나의 릴레이션에는 적어도 하나의 키가 존재해야하는 규정

- 관계 무결성

릴레이션에 어느 한 튜플의 삽입 가능 여부 또는 한 릴레이션과 다른 릴레이션의 튜플들 사이의 관계에 대한 적절성 여부를 지정한 규정


 * 트랜잭션의 특성

- 원자성 (Atomic)

트랜잭션의 연산은 데이터베이스에 모두 반영되든지 아니면 전혀 반영되지 않아야한다.

트랜잭션 내의 모든 명령은 반드시 완벽하게 수행되어야한다. 그렇지 않으면 취소

- 일관성 (Consistency)

트랜잭션이 성곤하면 언제나 일관성있는 데이터베이스 상태로 변경

고정 요소는 트랜잭션 수행 전후에 상태가 같아야한다.

- 독립성 / 격리성 (Isolation)

둘 이상의 트랜잭션이 병행하는 경우는 서로 끼어들 수 없다.

수행 중인 트랜잭션은 다른 트랜잭션에서 참조할 수 없다.

- 지속성 (Durability)

성공적인 트랜잭션 결과는 영구적으로 반영되어야한다.


 * 이상 (Anormaly)

- 정규화를 거치지 않은 데이터베이스 내의 데이터들이 불필요하게 중복

- 릴레이션 조작 시 발생하는 예기치 못한 곤란한 현상

- 종류

삽입 이상

의도하지 않게 원하지 않은 값들도 함께 삽입되는 현상

삭제 이상

의도치 않게 원하지 않는 값들도 함께 삭제되는 현상

갱신 이상

갱신 시 일부 튜플의 정보만 갱신되어 정보에 모순이 생기는 현상


 * 뷰 (View)

- 사용자에게 자료를 제한적으로 보여주기 위한 가상 테이블

- 물리적으로 존재하진 않는다

- 특징

기본 테이블과 같은 구조

기본 테이블과 같은 조작

물리적으로 구현되어있지 않는다

정의된 뷰는 다른 뷰의 정의에 기초가 될 수 있다.

하나의 뷰를 삭제하면 그 뷰를 기초로 정의된 다른 뷰도 삭제된다.

원하는 데이터만 뷰로 볼 수 있으므로 조작이 간편하다.


 * 해싱 함수 (Hashing Function)

- 제산법

H(K) = K mod Q. K는 레코드 키, Q는 해시 테이블의 크기보다 큰 수 중에서 가장 작은 소수

- 제곱법

레코드 키 값을 제곱한 후 중간 부분의 값을 홈 주소로 삼는 방법

- 폴딩법

레코드 키 값을 여러 부분으로 나누고 각 부분을 더하거나 XOR 한 값을 홈 주소로 삼는 방식

- 기수 변환법

키를 다른 진수로 변환시키고 높은 자리수는 버리는 방식

- 대수적 코딩법

키의 각 자리 비트 수를 다항식의 계수로 만들어서 만드는 방식

- 계수 분석법 (숫자 분석법)

숫자의 분포를 분석해서 고른 자리를 필요한 만큼 택하는 방식

- 무작위법

난수를 만들어서 홈 주소로 삼는 방식


 * 시스템 카탈로그 (System Catalog)

- 시스템 그 자체에 관련이 있는 다양한 객체에 관한 정보를 포함하는 시스템 카탈로그

- DB에 포함되는 모든 데이터 객체에 대한 정의나 명세에 대한 정보를 유지 관리하는 시스템 테이블

- 좁은 의미로 자료 사전이라고도 한다

- 카탈로그에 저장된 정보를 메타 데이터 (Meta-Data)라고도 한다.

- 일반 이용자들도 SQL을 이용해서 내용을 검색해볼 수 있다.

- 갱신은 허용 불가

- DBMS가 스스로 생성하고 유지한다.


 * 데이터베이스 언어

- DDL (Data Definition Language)

정의하거나 변경, 삭제할 때 사용하는 언어

명령어

CREATE, ALTER, DROP

- DML (Data Manipulation Language)

사용자가 응용 프로그램이나 질의어를 통해서 저장된 데이터를 실질적으로 처리하는데 사용되는 언어

명령어

SELECT, UPDATE, DELETE, INSERT

- DCL (Data Control Language)

보안, 무결성, 회복, 병행 수행 제어 등을 정의하는 데 사용되는 언어

명령어

COMMIT, ROLLBACK, GRANT, REVOKE


 * 스키마 (Schema)

- 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술

- DB의 전반적인 제약조건등을 정의한다.

- 사용자의 관점에 따라서 외부, 개념, 내부 스키마로 나뉜다.

외부 스키마 == 서브 스키마 == 사용자 뷰

사용자나 프로그래머가 개인의 입장에서 필요로하는 DB의 논리적 구조를 정의

전체 DB의 한 논리적인 부분으로 볼 수 있다.

하나의 DB에는 여러 개의 외부 스키마가 존재할 수 있다. 공유할 수도 있다.

같은 DB에 대해서도 서로 다른 관점을 정의할 수 있도록 허용

C, COBOL과 같은 언어를 사용해서 DB에 접근

개념 스키마 == 전체적인 뷰

DB의 전체적인 논리적 구조

조직 전체에 하나만 존재

단순히 스키마를 말한다면 개념 스키마를 뜻한다.

DBA에 의해 구성된다.

내부 스키마

DB의 물리적인 구조

실제 저장 방법을 기술

물리적인 저장장치와 밀접한 계층

시스템 설계자가 보는 관점의 스키마

요약

외부 스키마 -> 개인 프로그래머가 보는 작은 단위의 논리 구조

개념 스키마 -> DBA가 보는 큰 단위의 논리 구조

내부 스키마 -> 시스템 관계자가 보는 물리 구조


 * 데이터베이스 설계 순서

- 요구 분석 -> 개념적 설계 -> 논리적 설계 -> 물리적 설계 -> 구현





참고(Reference)


 시나공 기출문제집 - 정보처리기사 필기 



※ 정확하고 부드러운 태클은 언제나 환영입니다.

'Study > 정보처리기사 필기' 카테고리의 다른 글

소프트웨어 공학  (0) 2019.03.02
운영체제  (0) 2019.03.01
전자계산기 구조  (0) 2019.02.27
데이터 통신  (0) 2019.02.25