자료(Data) : 현실 세계에서 관찰이나 측정을 통해 수집한 단순한 사실이나 결괏값(가공 X)
정보(Information) : 의사 결정에 도움을 줄 수 있는 유용한 형태로, 자료를 가공해서 얻는 결과물
데이터베이스 정의
- 통합된 데이터(Integrated Data) : 자료의 중복을 배제한 데이터의 모임
- 저장된 데이터(Stored Data) : 컴퓨터가 접근할 수 있는 저장 매체에 저장된 자료
- 운영 데이터(Operational Data) : 조직의 업무를 수행하는 데 있어서 반드시 필요한 자료
- 공용 데이터(Shared Data) : 여러 응용 시스템들이 공동으로 소유하고 유지하는 자료
데이터베이스 특징
- 실시간 접근성(Real Timer Accessibility)
- 계속적인 변화(Continuous Evolution)
- 동시 공유(동시 공용)(Concurrent Sharing)
- 내용에 의한 참조(Content Reference)
DBMS(DataBase Management System) 정의
→ 사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해주는 소프트웨어
기존 파일 처리방식 문제점
- 종속성 → 저장된 데이터를 변경하면 응용 프로그램도 같이 변경해야 된다.
- 중복성 → 일관성, 보안성, 경제성, 무결성 문제
DBMS의 필수 기능
- 정의(조직)(Definition) : 데이터와 데이터의 관계 명세 / 원하는 데이터 연산 무엇이든 가능해야 함
- 조작(Manipulation) : 데이터 검색, 갱신, 삽입, 삭제 등을 체계적으로 처리하기 위해 데이터 접근 수단 등을 정하는 기능
- 제어(Control) : 무결성 유지, 보안, 권한 검사권한 검사, 병행 제어
스키마의 정의
- 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술
- 데이터 개체(Entitiy), 속성(Attribute), 관계(Relationship) 및 데이터 조작 시 데이터 값들이 갖는 제약조건 등에 관해 전반적으로 정의
- 외부 스키마, 개념 스키마, 내부 스키마
- 스키마는 데이터 사전에 저장되며 메타 데이터(Meta-Data)라고도 한다.
스키마의 3 계층
- 외부 스키마 = 서브 스키마 = 사용자 뷰
- 개념 스키마 = 전체적인 뷰(논리적 구조) → 디폴트 스키마
- 내부 스키마(물리적 구조)
데이터베이스 언어
- 데이터 정의 언어(DDL)
- 데이터 조작 언어(DML) = 서브 언어
- 데이터 제어 언어(DCL)
데이터 모델의 구성 요소
- 개체(Entity)
- 속성(Attribute)
- 관계(Realtaionship)
데이터베이스 설계 순서
- 요구 분석 : 요구 조건 명세서 작성
- 개념적 설계 : 개념 스키마, 트랜잭션 모델링, E-R 모델
- 논리적 설계 : 목표 DBMS에 맞는 스키마 설계, 트랜잭션 인터페이스 설계
- 물리적 설계 : 목표 DBMS에 맞는 물리적 구조의 데이터로 변환
- 구현 : 특정 DBMS의 DDL로 데이터베이스 생성, 트랜잭션 작성
릴레이션 구조
튜플(Tuple) : 속성의 모임으로 구성
속성(Attribute) : 속성의 수 = 차수
도메인(Domain) : 속성이 취할 수 있는 원자 값들의 집합
릴레이션 인스턴스 : 데이터 개체를 구성하고 있는 속성들에 데이터 타입이 정의되어 구체적인 데이터 값을 갖고 있는 것
- 튜플 사이에 순서는 없다.
- 속성들 간의 순서는 중요하지 않다.
- 속성은 더 이상 쪼갤 수 없는 원자 값만을 저장한다.
키(Key)의 개념 및 종류
- 후보키 : 기본키로 사용할 수 있는 속성들
- 기본키 : 후보키 중에서 선택한 주키(Main key)
- 대체키 : 후보키가 2개 이상일 때 기본키를 제외한 나머지 후보키
- 슈퍼키 : 속성들의 집합으로 구성된 키
- 모든 튜플에 대해 유일성은 만족시키지만 최소성은 만족시키지 못함
- 외래키 : 참조하고 있는 릴레이션의 기본키와 같은 속성(참조 관계 표현)
무결성
- 개체 무결성 : 기본키를 구성하는 속성은 널값이나 중복 값을 가질 수 없다.
- 도메인 무결성 : 외래키 값은 널이거나 참조 릴레이션의 기본키 값과 동일해야 한다.
순수 관계 연산자
연산자 | 특징 |
Select(σ) | 선택 조건을 만족하는 튜플의 부분집합을 구해 새로운 릴레이션을 만듦 |
Project(π) | 주어진 속성만 추출하는 연산 |
Join(⋈) | 공통 속성을 중심으로 2개의 릴레이션을 하나로 합쳐 새로운 릴레이션을 만듦 |
Division | R(X) ⊃ S(Y) 일 때 R의 속성이 S의 속성값을 모두 가진 튜플에서 S가 가진 속성을 제외한 속성만을 구하는 연산 |
정규화(Normalization)
정규화는 데이터베이스의 논리적 설계 단계에서 수행한다.
이름 | 조건 |
제1 정규형 | 반복 속성 제거, 모든 속성이 원자값을 가짐 |
제2 정규형 | 부분 함수적 종속 제거 |
제3 정규형 | 이행적 함수적 종속 제거 |
BCNF | 후보키가 아닌 결정자 제거 |
제4 정규형 | 다치종속 제거 |
제5 정규형 | 조인 종속성 이용 |
부분 함수적 종속 : 2개 이상의 결정자 중에서 하나의 결정자에만 종속되는 경우
이행적 함수적 종속 : 한 릴레이션의 속성 X, Y, Z가 주어졌을 때 함수적 종속성 X → Y와 Y → Z가 성립되면 논리적 결과로 X → Z가 성립한다. 이때 속성 Z는 X에 이행적 함수적 종속성이라고 한다.
* 정규화 단계 암기 요령
정규화라는 출소자가 말했다.
두부 이겨다 줘 = 도부이결다조
도메인이 원자값
부분적 함수 종속 제거
이행적 함수 종속 제거
결정자이면서 후보키가 아닌 것 제거
다치 종속 제거
조인 종속성 이용
이상(Anomaly)의 개념 및 종류
정규화를 거치지 않은 데이터베이스 내에서 데이터들이 불필요하게 중복되어 나타나는 현상
- 삽입 이상 : 의도와는 관계없이 원하지 않는 값들도 함께 삽입되는 현상
- 삭제 이상 : 의도와는 관계없이 원하지 않는 값도 함께 연쇄 삭제되는 현상
- 갱신 이상 : 일부 튜플의 정보만 갱신되어 정보에 모순이 생기는 현상
SQL 분류
DDL(데이터 정의어)
명령어 | 기능 |
CREATE | 스키마, 도메인, 테이블, 뷰, 인덱스를 정의함 |
ALTER | 테이블에 대한 정의를 변경하는 데 사용함 |
DROP | 스키마, 도메인, 테이블, 뷰, 인덱스를 삭제함 |
DML(데이터 조작어) : 인터페이스 제공
명령어 | 기능 |
SELECT | 테이블에서 조건에 맞는 튜플을 검색함 |
INSERT | 테이블에 새로운 튜플을 삽입함 |
DELETE | 테이블에서 조건에 맞는 튜플을 삭제함 |
UPDATE | 테이블에서 조건에 맞는 튜플의 내용을 변경함 |
DCL(데이터 제어어) : 데이터 관리 목적
명령어 | 기능 |
COMMIT | 명령 수행 결과를 실제 물리적 디스크로 저장하고 관리자에게 알림 |
ROLLBACK | 비정상적 종료시 원래의 상태로 복구 |
GRANT | 데이터베이스 사용자에게 사용 권한 부여함 |
REVOKE | 데이터베이스 사용자의 사용 권한을 취소함 |
Select문
- Predicate
- ALL : 모든 튜플 검색(디폴트)
- DISTINCT : 중복된 튜플은 1개만 검색
- DISTINCTROW : 중복된 튜플은 1개만 검색되는데 선택된 속성의 값이 아니라 튜플 전체를 대상으로 고려
- GROUP BY절
- 특정 속성을 기준으로 그룹화하여 검색할 때 그룹화할 속성을 지정
- 그룹 함수와 함께 사용
- COUNT(속성명)
- MAX(속성명)
- MIN(속성명)
- SUM(속성명)
- AVG(속성명)
- HAVING절
- GROUP BY와 함께 사용되며, 그룹에 대한 조건을 지정
- ORDER BY절
- 특정 속성을 기준으로 정렬하여 검색할 때 사용
- ASC : 오름차순(디폴트) / DESC : 내림차순
- 특정 속성을 기준으로 정렬하여 검색할 때 사용
삽입, 삭제, 갱신 문
뷰(View)
→사용자에게 접근이 허용된 자료만 제한적으로 보여주기 위해 기본 테이블로부터 유도된 가상 테이블
하나의 뷰를 삭제하면 그 뷰를 기초로 정의된 다른 뷰도 자동으로 삭제된다.
- 뷰의 장점
- 논리적 데이터 독립성 제공
- 동일 데이터에 대해 동시에 여러 사용자의 요구 지원
- 사용자의 데이터 관리를 간단하게 해 줌
- 자동 보안 제공
- 뷰의 단점
- 독립적인 인덱스가 없음
- 뷰의 정의를 변경할 수 없음
- 뷰로 구성된 내용에 대한 삽입, 삭제, 갱신 연산에 제약이 따름
RESIRICT : 뷰를 다른 곳에서 참조하고 있으면 삭제 취소
CASCADE : 뷰를 참조하는 다른 뷰나 제약 조건까지 모두 삭제됨
트랜잭션
→ 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위
또는 한꺼번에 모두 수행되어야 할 일련의 연산들
트랜잭션의 특성
- 원자성(Atomicity) : 하나라도 에러 발생하면 트랜잭션 전부 취소
- 일관성(Consistency) : 일관성 있는 데이터베이스 반환
- 독립성(Isolation) : 수행 중인 트랜잭션이 완료되기 전에 다른 트랜잭션에서 수행 결과 참조 불가능
- 지속성(Durability) : 완료된 트랜잭션의 결과는 영구적으로 반영
병행 제어(Concurrency Control)
동시에 여러 개의 트랜잭션을 병행 수행시킬 때, 데이터베이스의 일관성을 파괴하지 않도록
트랜잭션 간의 상호작용을 제어하는 것
병행 수행의 문제점
- 갱신 분실 : 같은 자료를 공유하여 갱신할 때 갱신 결과 일부가 없어짐
- 비 완료 의존성 : 실패 후 회복하기 전에 다른 곳에서 참조
- 모순성 : 원치 않는 자료를 이용함으로써 발생하는 문제
- 연쇄 복귀 : 트랜잭션 하나가 Rollback 하면 다른 트랜잭션도 Rollback 되는 현상
따라서 로킹(Locking)을 통해
주요 데이터의 엑세스를 상호 배타적으로 한다.
이진트리의 운행법
- Preorder(전위) 운행 : Root → Left → Right 순으로 운행 (A→B→C)
- +AB
- Inorder(중위) 운행 : Left → Root → Right 순으로 운행 (B→A→C)
- A+B
- Posorder(후위) 운행 : Left → Right → Root 순으로 운행 (B→C→A)
- AB+
수식의 표기법
Infix로 표기된 수식을 바꿔보기
- Postfix
- 연산 우선순위에 따라 괄호로 묶는다.
(X = ( ( ( A / B) * (C + D) ) + E ) ) - 연산자를 해당 괄호의 뒤로 옮긴다.
(X ( ( (AB) / (CD) + ) * E ) + ) = - 괄호를 제거한다.
XAB/CD+*E+=
- 연산 우선순위에 따라 괄호로 묶는다.
- Prefix
- 연산 우선순위에 따라 괄호로 묶는다.
(X = ( ( ( A / B) * (C + D) ) + E ) ) - 연산자를 해당 괄호의 앞으로 옮긴다.
=(X + ( * ( / (AB) + (CD) ) E ) ) - 괄호를 제거한다.
=X+*/AB+CDE
- 연산 우선순위에 따라 괄호로 묶는다.
- Postfix→Infix
- 먼저 인접한 피연산자 2개와 오른쪽의 연산자를 괄호로 묶는다.
- 연사자를 해당 피연산자의 가운데로 이동시킨다.
- 필요 없는 괄호를 제거한다.
'Project > Engineer Information Processing' 카테고리의 다른 글
2018-1 정보처리기사 필기 오답노트 (0) | 2019.04.26 |
---|---|
2018-2 정보처리기사 필기 오답노트 (0) | 2019.04.24 |