정보 처리 기사 실기 데이터베이스 정리 | 정보처리기사 실기-2022년 2회 대비 기출분석 및 합격전략 257 개의 새로운 답변이 업데이트되었습니다.

당신은 주제를 찾고 있습니까 “정보 처리 기사 실기 데이터베이스 정리 – 정보처리기사 실기-2022년 2회 대비 기출분석 및 합격전략“? 다음 카테고리의 웹사이트 https://you.tfvp.org 에서 귀하의 모든 질문에 답변해 드립니다: you.tfvp.org/blog. 바로 아래에서 답을 찾을 수 있습니다. 작성자 기사퍼스트 권우석 이(가) 작성한 기사에는 조회수 7,432회 및 좋아요 100개 개의 좋아요가 있습니다.

Table of Contents

정보 처리 기사 실기 데이터베이스 정리 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 정보처리기사 실기-2022년 2회 대비 기출분석 및 합격전략 – 정보 처리 기사 실기 데이터베이스 정리 주제에 대한 세부정보를 참조하세요

💻 무료 강의 전체 보기: http://www.gisafirst.com/free/lecture_free.php?seq=369
📚 기사퍼스트 정보처리기사 실기: http://www.gisafirst.com/lecture/goods.php?seq=369
#정보처리기사​ #정보처리기사실기​ #2022정보처리기사​ #2022정보처리기사실기​ #기사퍼스트​ #권우석

정보 처리 기사 실기 데이터베이스 정리 주제에 대한 자세한 내용은 여기를 참조하세요.

정보처리 실기 데이터베이스 요약집

정보처리 최강 기사퍼스트(www.gisafirst.com). 정보처리 실기 데이터베이스 요약집. – 1 -. 구성요소. 기호. 설명. 예시. 개체. (Entity). 데이터베이스.

+ 여기에 자세히 보기

Source: t1.daumcdn.net

Date Published: 10/24/2022

View: 1936

정보처리기사 실기 데이터베이스 요약 – 저녁밥 기술 블로그

정보처리기사 2019년 3회차를 응시하기 위해 데이터베이스 과목을 공부하며 기록한 요약본입니다.

+ 더 읽기

Source: dinn.github.io

Date Published: 2/24/2022

View: 9463

정보처리기사 실기 정리 – 데이터베이스 – 정윤상이다.

정보처리기사 실기 정리 – 데이터베이스 · 3. Schema · — 외부 스키마(서브 스키마) · — 개념 스키마(흔히 말하는 스키마) · — 내부 스키마 · 4.

+ 여기에 더 보기

Source: kit2013.tistory.com

Date Published: 8/1/2021

View: 5790

2021 정보처리기사 실기 요약(전체)(20210709 수정)

– 데이터베이스 확장 : 운영에 영향을 주지 않으면서 지속적으로 데이터를 추가할 수 있어야 함. 데이터베이스 설계 순서[요개논물구]. 요구 조건 …

+ 여기에 보기

Source: narup.tistory.com

Date Published: 2/5/2022

View: 9416

정보처리기사 실기 요점 정리(1) – 데이터베이스 – 아니요 호얀데요

호야의 블로그 정보처리기사 실기 이번 주 일요일에 있는 정보처리기사 실기 시험을 위해 1주일간 정리하고 공부한 내용입니다.

+ 여기에 더 보기

Source: kim-hoya.tistory.com

Date Published: 8/11/2022

View: 1363

2020년 정보처리기사 실기 내용 정리 – 2. 데이터 입출력 구현

2020년 정보처리기사 실기 내용 정리 – 2. 데이터 입출력 구현 -1) 데이터베이스 설계. 주앤정_블로그 2020. 10. 28. 18:39. 2020 정보처리기사 실기 2과목 [데이터 …

+ 더 읽기

Source: zpxlcm.tistory.com

Date Published: 1/8/2021

View: 6555

[정보처리기사 실기] 데이터베이스 정리

[정보처리기사 실기] 데이터베이스 정리. SLOTHH 2016. 2. 12. 18:01. 데이터베이스의 정의 : 관련 데이터들의 모임으로 조직체의 응용시스템들이 공유해서 사용하는 …

+ 여기에 표시

Source: beatsloth.tistory.com

Date Published: 10/7/2021

View: 4682

[정보처리기사] 실기 데이터베이스 정리 – 코딩하는원숭이

[정보처리기사] 실기 데이터베이스 정리 · 1. 데이터베이스 정의. – 통합 데이터(Integrated Data) : 검색의 효율성을 위해 중복이 최소화된 데이터의 모임.

+ 더 읽기

Source: ssssssu12.tistory.com

Date Published: 7/15/2021

View: 6500

정보처리기사 실기 요약[SQL 응용- Chapter8](정처기)

정보처리기사 실기 정리는 제가 직접 수기로 작성하여 요약한 내용이기 … 해석을기초로 DB작업을 효율적으로 처리하기 위한 고급 데이터베이스 언어

+ 더 읽기

Source: enlqn1010.tistory.com

Date Published: 3/11/2021

View: 4582

주제와 관련된 이미지 정보 처리 기사 실기 데이터베이스 정리

주제와 관련된 더 많은 사진을 참조하십시오 정보처리기사 실기-2022년 2회 대비 기출분석 및 합격전략. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

정보처리기사 실기-2022년 2회 대비 기출분석 및 합격전략
정보처리기사 실기-2022년 2회 대비 기출분석 및 합격전략

주제에 대한 기사 평가 정보 처리 기사 실기 데이터베이스 정리

  • Author: 기사퍼스트 권우석
  • Views: 조회수 7,432회
  • Likes: 좋아요 100개
  • Date Published: 2022. 6. 17.
  • Video Url link: https://www.youtube.com/watch?v=A6enI0GN-gk

정보처리기사 실기 데이터베이스 요약

본 글은 정보처리기사 2019년 3회차를 응시하기 위해 데이터베이스 과목을 공부하며 기록한 요약본입니다.

내용은 다음을 참고하여 작성하였으며 2020년 부터는 정처기 시험이 개편된다곤 하지만 DB의 전체적인 흐름을 파악하는데 도움이 되고자 업로드 하였습니다.

References

1. 데이터베이스(DB)의 개념

1.1. 정의

특정 조직의 업무를 수행하는데 필요한 상호 관련된 데이터들의 모임

통합 데이터(Integrated Data) 검색 효율성을 위해 중복을 최소화한 데이터 eg) 클라우드 저장 데이터(Stored Data) 컴퓨터가 접근 가능한 매체에 저장된 데이터 운영 데이터(Operational Data) 조직의 목적을 위해 존재가치가 확실하고 반드시 필요한 데이터 공유 데이터(Shared Data) 여러 응용프로그램이 공동을 사용하는 데이터

1.2. 특징

실시간 접근성(Real Time Accessiblity) 사용자 질의에 즉시 처리하여 응답 계속적인 변화(Continuous Evolution) 삽입/수정/삭제를 통해 항상 최근의 정확한 데이터를 동적으로 유지 내용에 의한 참조(Content Reference) 데이터 참조 시 튜플이 주소나 위치가 아닌 데이터 내용에 따라 참조 동시 공유(Concurrent Sharing) 여러 사용자가 동시에 원하는 데이터를 공용 데이터 논리적/물리적 독립성(Independence)

1.3. 데이터 언어: DBMS와의 통신수단

DDL(Data Definition Language, 데이터 정의어) DB를 구축하거나 변경할 목적으로 사용하는 언어 DML(Data Manipulation Language, 데이터 조작어) 응용프로그램과 DBMS 사이의 인터페이스를 위한 언어 DCL(Data Control Language, 데이터 제어어) 보안/권한제어, 무결성, 회복, 병행제어를 위한 언어

1.4. 데이터베이스 사용자

DBA(Database Administrator) DDL과 DCL을 통해 DB를 정의하고 제어하는 사람/그룹 데이터 관리자(Data Administrator) 기업 또는 조직 전반에 있는 데이터에 대한 관리 총괄/통제 데이터 설계자(Data Architect) 기업 업무 수행에 필요한 데이터 구조를 체계적으로 정의하는 사람 응용프로그래머(Application Programmer) 호스트 프로그래밍언어에 DML을 삽입하여 DB에 접근하는 사람 일반 사용자(End User) 질의어(query)를 통해 DBMS에 접근하는 사람

DA(Data Administrator, Architect)가 data 자체를 관리하고 설계하는 설계자, 관리자라면 DBA는 DA가 설계한 구조를 바탕으로 DB를 구축하는 기술자이다.

2. 데이터베이스 관리 시스템(DBMS; Database Management System)

2.1. 개념

사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해 주고 데이터베이스를 관리해주는 소프트웨어 eg) MySQL, ORACLE, …

2.2. 특징

중복의 최소화 데이터 공동이용(공유성) DBMS는 특정 프로그램에 종속되지 않고 여러 응용 시스템들에게 데이터를 줄 수 있어야 한다. 데이터 일관성 데이터 무결성 유지(정확성/정합성) 데이터 보안 유지

2.3. 장단점

장점 논리적/물리적 독립성 보장, 공동 이용, 표준화, 무결성 유지, 실시간 처리, 중복 방지, 통합관리, 일관성 유지, 보안 유지, 최신 유지 단점 전문가 부족, 과부화, 전산화 비용 증가, 백업과 회복 어려움, 시스템 복잡

DSMS(Data Stream Management System) 통신 상 데이터 스트리밍을 통해 데이터를 처리하고 관리하는 시스템으로 동적인 데이터를 처리하는 관리 시스템

3. 스키마(Schema)

3.1. 정의

데이터베이스의 구조와 계약조건에 관한 전반적인 명세

3.2. 스키마 3계층

외부 스키마(External Schema) 사용자나 응용프로그래머가 각 개인 입장에서 필요로 하는 DB의 논리적 구조를 정의한다. 사용자 입장에서 보여지는 구조 개념 스키마(Conceptual Schema) 개체간 관계와 제약 조건을 나타내고, 접근권한, 보안정책, 무결성 규정에 관한 명세를 정의한다. 전체적인 DB의 구조, 제약조건, 보안과 관련된 모든 요소들 내부 스키마(Internal Schema) DB의 물리적 구조 정의 물리적으로 저장돼 있는 데이터의 유형이나 크기와 관련된 구조

4. 데이터베이스 설계

4.1. 정의

DB Schema를 개발하는 과정이며 데이터 모델링이라고도 한다.

현실 세계의 정보들을 컴퓨터에 체계적으로 표현하기 위해서 단순화, 추상화 형태로 나타낸 개념적 모형

4.2. 구성 요소

구조(Structure) / 연산(Operation) / 제약조건(Constraint)

4.3. 개념적 데이터 모델

요구조건 분석 요구조건 명세서 작성 개념적 설계 개념스키마 설계, 트랜잭션 모델링, ER모델링. 무엇을 데이터베이스화 할 것이냐?(DA의 역할) 논리적 설계 논리 스키마 설계, 트랜잭션 인터페이스 설계 물리적 설계 물리적 구조의 데이터(내부 스키마)로 변환 데이터베이스 구현 DDL로 데이터베이스 생성, 트랜잭션 생성

개념적 데이터베이스 모델링

5. ER모델

대표적인 개념적 데이터 모델(Peter Chen, 1976)

5.1. 개체(Entity)

DB화 하려는 대상

Entity Type – Entity Instance

5.2. 속성(Attribute)

단순 속성 vs 복합 속성 단순 속성 (simple attribute) 더 이상 분해할 수 없는 속성 eg) 이름

복합 속성 (composit attribute) 단순 속성으로 분해할 수 있는 속성 eg) 주소 단일값 속성 vs 다중값 속성 단일값 속성(single value attribute) 하나의 값을 갖는 속성

다중값 속성(multiple value attribute) 여러 값을 갖는 속성 -> 정규화를 통해 가급적이면 분해해야 한다. 저장속성 vs 유도 속성 저장 속성(Stored Attribute) 유도 속성 계산을 위해 사용된 속성 eg) 강사 입문 년도

유도 속성(Derived Attribute) 다른 속성 값으로 부터 유도되어 결정되는 속성 eg) 강사 경력

5.3. 관계 타입(Relationship Type) / 관계의 카디널리티(Relationship Cardinality)

1:1관계 관계에 참여하고 있는 두 개체 타입이 모두 하나씩의 개체 occurence를 갖는 관계 1:N관계 관계에 참여하고 있는 두 개체 타입 중 한 개체 타임은 여러 개의 개체 occurence, 다른 한 개체 타입은 하나의 개채 occurence를 갖는 관계 N:M관계 관계에 참여하고 있는 두 개체 타입 모두 여러가지의 개체 occurence를 갖는 관계

5.4. 필수/선택 참여 관계

필수참여 관계(Mandatory Membership) 반드시 대응되는 개체가 있어야 한다. | 선택참여 관계(Optional Membership) 반드시 대응되는 개체가 없어도 된다. O

5.5. 종속 관계(Independant Relationship)

식별관계 외래 식별자가 주 식별자로 존재하는 관계(B는 A에 의존적)… 실선 비식별관계 외래 식별자가 일반속성으로 존재하는 관계(A와 B는 독립적)… 점선

5.6. 존재 종속 관계(Existance Dependance)

주 개체(dominant entity, strong entity) B개체의 존재를 결정하는 A개체 종속 개체(subdominate entity, weak entity A개체에 의해 존재가 결정되는 B개체

5.7. ISA관계: 상속관계

6. 관계형데이터 모델

테이블 또는 Relation(데이터를 원자 값으로 갖는 이차원의 테이블)의 구조로 표현하는 논리적 데이터 모델

6.1. 릴레이션의 구조

행(Row) 열(Column) Relation Scheme 표의 구조 Relation Instance 릴레이션에 실제 입력된 데이터 한 줄 Tuple 하나의 행 Relation Instance – 한 줄 단위의 데이터 그 자체 / Tuple – 하나의 행 Cardinality 입력된 튜플의 개수 속성(Atrribute) 릴레이션을 구성하는 각각의 열 개체의 특성이나 상태, 열(Column)로 입력된다. 차수(Degree) attribute/column의 수 Domain 속성이 취할 수 있는 같은 타입의 원자값들의 집합. 정의된 속성은 반드시 해당 도메인 내의 값을 취한다. eg)학년의 도메인: 1~6

6.2. 릴레이션의 특성

한 릴레이션에 포함된 튜플들은 모두 상이하다.(중복 금지) 한 릴레이션에 포함된 튜플 사이에는 순서가 없다. 한 릴레이션을 구성하는 속성의 이름(열 제목)은 유일해야 한다. 한 릴레이션을 구성하는 속성 사이에는 순서가 없다. 모든 속성값은 논리적으로 더 이상 분해할 수 없는 값인 원자값이어야 한다.

6.3. ER스키마의 관계 스키마 사상(Mapping Rule)

ER model(개념적 모델) -> Relation Schema(논리적 모델)

1:1관계 Relation A(B)의 기본키 -> B(A)의 외래키 1:N관계 Relation A의 기본키 -> B의 외래키 N:M관계 Relation A, B 기본키를 포함한 별도 릴레이션 C를 표현하며 이 때 C는 교차 엔티티(교차 릴레이션) 이다.

6.4. 교차 관계(Intersection Relationship)

관계를 테이블로 표현하여 다대다 관계를 보여주는 테이블

논리적 데이터베이스 모델링

7. 키(key)

7.1. 정의

주어진 릴레이션에서 모든 인스턴스 가운데 유일함(Uniqueness)을 보장해주는 하나 이상의 애트리뷰트의 집합이다.

튜플을 유일하게 식별할 수 있는 속성의 집합

튜플을 검색하거나 정렬할 때 튜플을 서로 구분할 수 있는 기준이 되는 속성

7.2. 특성

유일성(Uniqueness) 최소성(minimality) 최소한의 속성으로 원하는 튜플을 찾아야 한다.

7.3. 키의 종류

슈퍼키(Super Key) 튜플을 유일하게 구분하기 위해 한 개 이상의 속성들로 이루어진 키. 유일성을 만족하지만 최소성을 만족하지 못함 후보키(Candidate Key) 튜플을 유일하게 구분할 수 있는 최소 슈퍼키. 한 릴레이션에서 유일성과 최소성을 모두 만족 기본키(primary key) 후보키 중에서 대표로 지정된 키. 중복값이나 NULL값을 가질 수 없음 대체키(alternate key) 후보키 중에서 기본키를 제외한 나머지 후보키. 보조키라고도 불린다. 후보키 – 기본키 = 대체키 외래키(foreign key) 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합 복합키(Composit Key) 2개 이상의 속성을 조합하여 만든 키

8. 무결성 제약(Integrity Constraint)

8.1. 무결성

DB에 저장된 값과 그것이 표현하는 현실세계 실제 값이 일치하는 정확성. 데이터의 정확성/정합성

8.2. 제약조건(Constraint)

DB의 정확성을 보장하기 위해 정확하지 않은 데이터가 저장되는 것을 방지하기 위한 제약조건

8.3. 종류

개체 무결성 제약 한 릴레이션의 기본키를 구성하는 어떠한 속성값도 NULL이나 중복값을 가질 수 없다. 참조 무결성 제약 외래키 값은 NULL 또는 참조 릴레이션 기본키 값과 동일해야 함. FK를 통해 찾아갔는데 없으면 안된다. 도메인 무결성 제약 주어진 속성의 값이 도메인에 속한 것이어야 함 (도메인 – 속성값이 가질 수 잇는 범위, 원자값들의 집합)

8.4. 무결성 제약을 위한 DBMS의 옵션

restrict – no action cascade – 연쇄 삭제 연쇄 수정 set null – 널값으로 수정 set default – 기본값으로 수정

9. 이상(Anomaly)

9.1. 개념

데이터 중복으로 인해 릴레이션 조작 시 예상하지 못한 곤란한 현상이 발상

이상은 속성들 간에 존재하는 여러 종류의 종속 관계를 하나의 릴레이션에 표현할 때 발생

9.2. 종류

삽입 이상(Insertion Anomaly) 데이터 삽입 시 의도하지 않는 값들로 인해 삽입이 불가능한 현상 삭제 이상(deletion Anomaly) 한 튜플 삭제 시 의도하지 않은 값들도 같이 삭제되는 현상 갱신 이상(Update Anomaly) 갱신 시 일부 튜플의 정보만 갱신 되어 정보의 불일치성이 생기는 현상

10. 함수적 종속성(Functional Dependency)

10.1. 정의

X -> Y ‘X이면 Y이다’

X는 결정자(Determinant) / Y는 종속자(Dependent)

10.2. 정규형

함수적 종속 정규형 완전 함수적 종속 2NF 부분 함수적 종속 2NF 이행 함수적 종속 3NF 다치 종속 4NF 조인 종속 5NF

10.3. 완전함수적종속 / 부분함수적종속

복합키로 기본키가 구성되어 있을 때,

키를 구성하는 모든 속성을 참조해서 특정 속성을 조회할 수 있다면 완전함수적종속이고 일부 속성만을 참조해서 특정 속성을 조회할 수 있다면 부분함수적종속이다.

학번, 과목코드 -> 학과, 성명

학번, 과목코드 -> 학과 / 학번 -> 성명

부분함수적종속을 제거하고 완전함수적종속으로 바꾼다.

10.4. 이행함수적종속

A->B->C

학번 -> 주민번호 -> 성명

학번 -> 주민번호 / 주민번호 -> 성명

10.5. 다치종속(MVD, Multi Value Dependent)

A -» B

과목 -» 교제|교수

과목 -> 교제 / 과목 -> 교수

10.6. 조인 종속

위조튜플

11. 정규화(normalization)

비정규 릴레이션(개념스키마) -> 정규화된 릴레이션

테이블을 무손실분해하여 이상 현상 발생 가능성을 줄이는 것

11.1. 무손실 분해(Lossless Decomposition)

분해된 두 릴레이션을 조인하면 원래의 릴레이션에 들어 있는 정보를 완전하게 얻을 수 있다.

여기서 손실이란 정보의 손실을 뜻한다.

정보의 손실은 원래의 릴레이션을 분해한 후에 생성된 릴레이션들을 조인한 결과에 들어 있는 정보가 원래의 릴레이션에 들어 있는 정보보다 적거나 많은 것을 모두 포함한다.

11.2. 제1정규형(1NF)

릴레이션에 속한 모든 도메인이 원자값(Atomic Value)

모든 열과 행의 중복지점에는 한 개의 값(single value)를 가진다.

11.3. 제2정규형(2NF)

키가 아닌 모든 속성들이 기본키에 완전 함수 종속

11.4. 제3정규형(3NF)

키가 아닌 모든 속성들이 기본키에 이행적으로 함수종속 되지 않는 릴레이션

11.5. BCNF(Boyce-Codd NF)

릴레이션의 모든 결정자가 후보키인 릴레이션 강한 제3정규형(3.5NF)리아고도 함

11.6. 제4정규형(4NF)

릴레이션 R에서 다치종속 A ->-> B 가 성립하는 경우 다치종속(MVD)의 제거

11.7. 제5정규형(5NF)

조인종속성 이용

물리적 데이터베이스 모델링

12. 물리적 데이터베이스 모델링

12.1. 정의

저장구조와 접근경로의 설계

데이터베이스의 쿼리와 트랜잭션들을 분석

역정규화

12.2. 물리적 DB 설계 시 고려사항

응답 시간의 최소화

저장 공간의 효율화

트랜잭션 처리도

12.3. 물리적 DB 설계의 기능

저장 레코드 양식 설계 -> type과 data size를 정한다.

레코드 집중의 분석 및 설계 -> 자주 함께 사용되는 데이터끼리는 가까운 곳에 저장한다.

13. 반정규화/역정규화(De-normalization)

13.1. 정의

시스템의 성능향상과 개발/운영의 단순화를 위해 기존 설계를 재구성하는 것

데이터의 정합성과 데이터의 무결성을 우선으로 할지, 데이터베이스 구성의 단순화와 성능을 우선으로 할지 결정해야 함

트랜잭션 발생량이 많아 시스템 성능에 크게 영향을 주는 테이블만을 대상으로 한다.

13.2. 반정규화 과정

반정규화 대상 조사 범위처리 빈도수 조사 테이블 조인 개수 다른 방법 검토 뷰(View) 테이블 클러스터링 적용 인덱스의 조정 반정규화 적용 테이블 반정규화 속성의 반정규화 관계의 반정규화

13.3. 반정규화 대상 조사

상관 모델링 트랜잭션의 빈도수를 예상하기 위해 업무 프로세스와 데이터베이스의 상관성을 설계하는 작업 업무가 처리되는 과정에 따라 데이터가 어떻게 영향을 받고 있는지 분석하여 설계 CRUD MATRIX CRUD 4가지 유형으로 업무가 진행되는 절차에 따른 데이터의 상관관계를 분석

13.4. TABLE 반정규화

정규화 과정에 의해 분리된 두 테이블에 많은 트랜잭션이 발생하여 JOIN 연산으로 인해 시스템 저하가 일어날 수 있으므로이런 경우 두 테이블을 병합

TABLE 분할 – 수직적 분할 / 수평적 분할

테이블의 수직적 분할(Vertical Partitioning) 트랜잭션이 집중 발생하는 속성들을 따로 뽑아서 분할한다. 테이블의 수평적 분할(Horizontal Partitioning) 천만 개의 데이터를 백만개 데이터 10개로 자른다.

13.5. Column(속성)의 반정규화

중복 컬럼 방법 해당 테이블에서 자주 사용하는 다른 테이블의 컬럼을 해당 테이블에도 복사한다. 파생 컬럼 추가 필요에 의해 특정 속성값으로 만들어지는 파생 컬럼을 추가

14. View 설계

14.1. View

가상테이블

14.2. DDL

CREATE VIEW name ( attr1 , attr2 , …) AS SELECT attr , … FROM table , … WHERE condition

15. 인덱스(Index) 설계

15.1. 정의

데이터베이스에서 원하는 데이터를 좀더 빨리 찾아줄 수 있도록 데이터의 위치정보를 모아놓은 개체

항상 정렬 상태로 유지되며 성능 향상에 기여한다.

수정이 자주 발생하지 않는 컬럼을 인덱스로 선정한다.

15.2. 데이터 검색 방법

FTS(Full Table SCAN) INDEX SCAN

15.3. 인덱스의 종류

Clustered INDEX 인덱스 기준으로 데이터를 정렬 검색 속도가 빠르고 범위 조회(Range Query)에서 빠르다 한 테이블에 한 Clustered INDEX만 생성 가능 기본키를 만들면 일반적으로 기본키에 Clustered INDEX가 생성됨 루트 -> 리프 Non Clustered INDEX 데이터 페이지의 데이터 그대로 위치 정보를 인덱스로 구성 별도 인덱스 페이지가 생성 검색 속도가 느리며 범위 조회를 할 경우 거의 인덱스의 도움을 받을 수 없다. 여러 개의 인덱스 생성 가능 더 많은 공간 차지 루트 -> 리프 -> 데이터 페이지

15.4. 선택성(Selectivity)

선택될 수 있는 빈도

분포도가 높으면 선택성이 낮아진다.

16. 관계 데이터 연산

SOC(Structure, Operation, Constraint)

16.1. 관계 대수(Relational Algebra)

원하는 정보와 그 정보를 어떻게 유도하는가를 기술하는 절차적인 언어

일반 집합 연산자 / 순수 관계 연산자

어떻게?

일반 관계 연산자 UNION / INTERSECTION / DIFFERENCE / CARTESIAN PRODUCT 순수 관계 연산자 SELECT / PROJECT / JOIN / Theta JOIN / Equi JOIN / Natural JOIN / Outer JOIN / DIVISION SELECT 튜플의 수평적 부분집합 PROJECT 튜플의 수직적 부분집합

16.2. 관계해석 Relational Calculus

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

DB 구축 – SQL

17. DDL(Data Definition Language)

Metadata in System Catalog = Data Dictionary

17.1. CREATE

CREATE DOMAIN GENDER CHAR ( 2 ) DEFAULT ‘여’ CONSTRAINT VALID – GENDER CHECK ( VALUE IN ( ‘남’ , ‘여’ ))

CREATE TABLE 학생 ( 학번 CHAR ( 15 ), 이름 VARCHAR ( 15 ) NOT NULL , … , 성별 GENDER , 생년월일 DATE , PRIMARY KEY ( 학번 ), UNIQUE ( 전화번호 ), FOREIGN KEY ( 학과 ) REFERENCES 학과 ( 학과코드 ) ON DELETE DASCADE ON UPDATE CASCADE , CONSTRAINT 학년제약 CHECK ( 학년 >= 1 AND 학년 <= 4 )); ON DELETE { CASCADE | SET NULL | SET DEFAULT | NO ACTION | RESTRICT } ON UPDATE { CASCADE | SET NULL | SET DEFAULT | NO ACTION | RESTRICT } CREATE VIEW 컴공학생 ( 학번 , 이름 , 학과 ) AS SELECT 학번 , 이름 , 학과 FROM 학생 WHERE 학과 = '컴공' [ WITH CHECK OPTION ]; CREATE UNIQUE INDEX 학번 _idx ON 학생 ( 학번 ASC ); 17.2. ALTER ALTER TABLE 학생 ADD / ALTER / DROP 연락처 VARCHAR ( 13 ) 17.3. DROP 18. DCL(Data Control Language) 18.1. COMMIT 18.2. ROLLBACK 18.3. GRANT GRANT SELECT , DELETE ON STUDENT TO U1 WITH GRANT OPTION ; 18.4. REVOKE REVOKE SELECT , DELETE ON STUDENT FROM U1 CASCADE ; 19. DML(Data Manipulation Language) 19.1. SELECT SELECT * FROM 학생 ; SELECT DISTINCT 학과 FROM 학생 ; SELECT 학번 , 성명 FROM 학생 WHERE 학과 = '전기' AND 학년 = 4 ; SELECT * FROM 학생 WHERE 학과 IN ( '기계' , '컴퓨터' ) AND 학년 IS NULL ; SELECT * FROM 학생 WHERE 성명 LIKE '이%' ; SELECT * FROM 수강 WHERE 성적 BETWEEN 90 AND 100 ; SELECT * FROM 수강 ORDER BY 학번 ASC , 과목코드 DESC ; SELECT 학번 , AVG ( 성적 ) AS 평균성적 FROM 수강 GROUP BY 학번 ; SELECT 과목코드 , COUNT ( * ) AS 학생수 FROM 수강 GROUP BY 과목코드 HAVING COUNT ( * ) > 1 ;

SELECT 성명 , 학과 FROM 학생 WHERE 학번 = ( SELECT 학번 FROM 수강 WHERE 성적 = 100 );

SELECT 학번 , 성명 FROM 학생 WHERE 학번 IN ( SELECT 학번 FROM 수강 WHERE 과목코드 = ‘C001’ );

SELECT 학번 , 성명 FROM 학생 WHERE EXIST ( SELECT * FROM 수강 WHERE 학번 = 학생 . 학번 AND 과목코드 = ‘C001’ );

SELECT 학번 FROM 학생 WHERE 학년 = 1 UNION SELECT 학번 FROM 수강 WHERE 과목코드 = ‘C002’ ;

SELECT 학번 FROM 학생 EXCEPT SELECT DISTINCT ( 학번 ) FROM 수강 ;

SELECT 학생 . 학번 , 학생 . 성명 , 수강 . 과목코드 FROM 학생 , 수강 WHERE 학생 . 학번 = 수강 . 학번 AND 학생 . 학과 = ‘전기’ ;

SELECT A . 학번 , A . 성명 , B . 과목코드 FROM 학생 A JOIN 수강 B ON ( A . 학번 = B . 학번 ) WHERE A . 학과 = ‘전기’ ;

SELECT A . 학번 , A . 성명 , B . 과목코드 FROM 학생 A LEFT OUTER JOIN 수강 B ON ( A . 학번 = B . 학번 ) WHERE A . 학과 = ‘전기’ ;

19.2. INSERT

INSERT INTO 학생 ( 학번 , 성명 ) VALUES ( 500 , 을지문덕 );

INSERT INTO 학생 VALUES ( 600 , 유관순 , 체육 , 3 );

INSERT INTO 졸업예정자 ( 학번 , 성명 , 학과 ) SELECT 학번 , 성명 , 학과 FROM 학생 WHERE 학년 = 4 ;

19.3. DELETE

DELETE FROM 학생 WHERE 성명 = ‘홍길동’ ;

DELETE FROM 학생 ;

UPDATE 학생 SET 학과 = ‘영어영문’ WHERE 성명 = ‘이순신’ ;

20. Trigger

CREATE TRIGGER 입고 INS ON 입고 FOR INSERT AS DECLARE @ CODE CHAR ( 6 ), @ QTY INT SET @ CODE = ( SELECT 상품코드 FROM INSERTED ) SET @ QTY = ( SELECT 입고수량 FROM INSERTED ) UPDATE 상품 SET 재고수량 = 재고수량 + @ QTY WHERE 상품코드 = @ CODE

21. 내장형SQL(Embedded SQL)

삽입 SQL, 프로그램 언어에 삽입된 SQL

22. 커서(Cursor)

복수 개의 튜플에 접근 가능하기 위한 레코드 집합의 포인터

명령어

DECLARE OPEN FETCH CLOSE

회복과 병행제어

23. 트랜잭션(Transaction)

DB에서 처리되는 작업의 단위로 연산의 집합으로 이루어져 있다.

23.1. 특징 – ACID

원자성(Atomicity) 일관성(Consistency) 격리성(Isolation) 영속성(Durability)

원자성(Atomicity) All or Nothing. 트랜잭션 내의 모든 연산은 반드시 한꺼번에 완료되어야 하며 그렇지 못한 경우는 한꺼번에 취소되어야 한다. 일관성(Consistency) 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환한다. 격리성(독립성, Isolation) 트랜잭션 T1이 실행되는 도중 T2가 실행되면 안된다. 영속성(Durability) 트랜잭션에 의해서 생성된 결과는 계속 유지되어야 한다.

23.2. 연산

COMMIT ROLLBACK

24. 회복(Recovery)

24.1. 장애의 유형

실행장애 ROLLBACK으로 종료된 경우 트랜잭션 장애 계획되지 않은 비정상적인 종료들(overflow 등) 시스템 장애 미디어 장애 저장장치의 문제

24.2. 중복 저장 기법

덤프(Dump) 주기적으로 데이터베이스 전체를 다른 저장장치에 복제하는 기법 로그(Log) 데이터베이스가 변경될 때마다 변경되는 데이터 항목의 이전 값과 이후 값을 별도로 기록하는 기법

24.3. 회복의 원리

shadowing 기법 dump해놨던 데이터를 그대로 불러와서 원본 데이터를 복원한다. redo / undo redo 장애 발생 전 완료된 트랜잭션들을 대상으로 재수행한다. undo 장애 발생 당시 실행 중이던 트랜잭션들의 실행을 되돌린다.

24.4. 회복 기법의 종류

즉시 갱신(Immediate Update) 지연 갱신(Deferred Modification) No un-do, 변경 내용이 실제적으로 DB에 반영되지 않았기 때문에 로그만 삭제하고 끝난다. 검사 시점(Check Point) 회복

25. 병행 제어(Concurrency Control)

두 개 이상의 트랜잭션이 같은 자료를 공유하여 갱신할 때 갱신 결과의 일부가 분실되는 현상이다.

race condition

25.2. 비완료 의존성(Uncommited Dependency)

하나의 트랜잭션 수행이 실패한 후 회복되기 전에 다른 트랜잭션이 실패한 갱신 결과를 참조하는 현상이다.

dirty read

25.3. 모순성(Inconsistency)

25.4. 연쇄 복귀(Cascade Rollback)

병행 수행되던 트랜잭션들의 하나에 문제가 생겨 Rollback하는다른 트랜잭션도 함께 Rollback되는 현상이다.

25.5. 병행제어의 정의

Concurrency가 가능하도록 해주는 작업

25.6. Scheduling

직렬 스케줄(Serial Schedule) 비직렬 스케줄(Nonserial Schedule)

25.7. 병행제어 기법의 종류

정보처리기사 실기 정리 – 데이터베이스

2015/04/08 – [자격증/정보처리(산업)기사] – 정보처리기사 실기 준비

2015/04/08 – [자격증/정보처리(산업)기사] – 정보처리기사 실기 정리 – 데이터베이스

2015/04/09 – [자격증/정보처리(산업)기사] – 정보처리기사 실기 정리 – 업무프로세스

2015/04/16 – [자격증/정보처리(산업)기사] – 정보처리기사 실기 정리 – 데이터베이스 (그냥 걍 또 만드는)

걍 모든 내용 나열해보자

일단 기본적인건 다보고

요새 가장 핫하다는 뒷 부분(고급 데이터베이스)을 보자!!!!!!!!!!!!!!!!

1. 데이터베이스의 개념

1) 정의 : 특정 조직의 업무를 수행하는데 있어서 필요한 상호 관련된 데이터들의 모임

다음과 같은 단어들로 정의가능

– Integrated Data(통합데이터)

검색의 효율성을 위해 중복을 최소화한 데이터

– Stored Data(저장 데이터)

컴퓨터가 접근 가능한 저장 매체에 저장된 데이터

– Operational Data(운영 데이터)

조직의 목표를 위해 존재 가치가 확실하고 반드시 필요한 데이터

– Shared Data(공유 데이터)

여러 프로그램들이 공동으로 사용하는 데이터

2) 특징(구분만 할줄알면 되겠지)

– Real Time Accessibility(실시간 접근성)

사용자의 쿼리에 즉시 처리하여 응답

– Continuous Evolution(계속적인 진화)

항상 최근의 정확한 데이터를 동적으로 유지

– Concurrent Sharing(동시 공유)

여러 사용자가 동시에 원하는 데이터를 사용가능

– Content Reference(내용에 의한 참조)

데이터를 참조할 때 내용으로 참조(물리적 주소값으로 하지X)

– Independence(데이터의 논리적/물리적 독립성)

— 논리적 독립성(응용 프로그램과 데이터베이스와의 관계) : 데이터의 논리적 구조 변경하더라도 응용프로그램에 영향을 주지 않는다

— 물리적 독립성(응용 프로그램과 보조기억장치와의 관계) : 새로운 저장장치의 추가에도 응용 프로그램에는 영향을 주지 않는다

3) Data Language

DB의 구축과 이용을 위해 DBMS와의 통신 수단

– DDL(Data Definition Language)

– DML(Data Manipulation Language)

— 절차적 DML : Oracle의 PL/SQL 생각하면 되

— 비절차적 DML : SQL

– DCL(Data Control Language)

4) User의 분류

– 데이터베이스 관리자; DBA(DataBase Administrator)

데이터베이스를 정의하고 제어하는 사람 또는 그룹

– 데이터 관리자; DA(Data Administrator)

조직 내에서 데이터에 대한 정의, 체계화, 감독 및 보안 업무

– 데이터 설계자; DA(Data Architect)

데이터의 구조를 체계적으로 정의하는 사람

2. DBMS(Database Management System)

기존 파일 시스템의 문제점

– 데이터 종속성 : 응용프로그램과 데이터파일간의 의존적관계(그니까 응용프로그램바꾸면 데이터도 그에 맞게끔 바껴야되는 문제점)

– 데이터 중복성 : 데이터의 중복으로 일관성이 없어지고, 동등한 보안 수준과 무결성을 유지하기 힘들다

3. Schema – DB의 구조와 제약 조건에 관한 전반적인 명세(Specification) – 데이터 사전(시스템 카탈로그; 메타 데이터)에 저장 – 사용자의 관점에 따라 분류 — 외부 스키마(서브 스키마) 사용자나 응용 프로그래머가 각 개인의 입장에서 필요로하는 DB의 논리적 구조를 정의 — 개념 스키마(흔히 말하는 스키마) 개체 간의 관계와 제약조건, DB의 접근 권한, 보안 정책 및 무결성 규정에 관한 명세를 정의 DBA에 의해 작성 — 내부 스키마 DB의 물리적 구조를 정의

4. 데이터베이스의 설계 – 데이터베이스 스키마를 개발하는 과정이다 1st) 요구 조건 분석

2nd) 개념적 설계 – 개념 스키마 모델링 — 추상화를 통해 개념 스키마를 만드는데 Entity와 Relationship을 사용하는 추상화를 ER Model이라고 함 – 트랜잭션 모델링

3rd) 논리적 설계 – 컴퓨터가 이해하고 처리할 수 있는 특정 DBMS가 지원가능한 논리적 데이터 구 조로 변환 – 즉, 논리 스키마의 설계과정이다 – 관계형 DBMS의 경우에는 ER Model을 Relation Schema로 변환 — 더 좋은 Relation Schema를 위해 정규화(Normalization) 과정을 수행(데이터의 중복과 종속성을 방지하기 위해) – 트랜잭션의 전체적인 골격을 개발하고 인터페이스를 정의한다

4th) 물리적 설계 – 물리 스키마를 설계하는 것이 목적 – DB 파일에 대한 저장 구조와 접근 경로를 결정

5th) 데이터베이스 구현 – 해당 DBMS의 DDL을 통해 구축

5. ER Model(Entity-Relationship Model) – 대표적인 개념적 데이터 모델로써 Entity, Relationship, Attribute을 도형화 하여 표현(ERD; ER Diagram)

– 현실 세계를 표현한다고 생각하면 되!

– Entity — Entity Occurrence 또는 Entity Instance (Such as Record in Table) : 하나의 Entity를 이르는 용어 — Entity Type : Entity Occurrence들의 공통의 Attribute를 가지는 Entity Class — ERD에서 직사각형으로 표현함

– Relationship — Relationship Type : ERD에서 마름모로 표현 — Degree(차수) : Relationship에 참여하는 Entity Type의 개수 — Mapping Cardinality(대응 카디널리티) : Relationship에 참여하는 Entity Occurrence의 개수 — 1 : 1 관계 — 1 : N 관계 — N : M 관계 — ISA 관계 : Entity가 서로 구별되는 하위 Entity로 나누어 질 수 있다 — disjoint : 상위 Entity가 하나의 하위 Entity체에만 포함 — overlapping : 상위 Entity가 여러 개의 하위 Entity에 포함될수 있다 — total : 상위 Entity Occurrence가 하위 Entity에 속한다 — partial : 상위 Entity Occurrence가 하위 Entity에 속하지 않는다

– Attribute(타원으로 표현) — Domain : Attribute가 가질 수 있는 값의 집합 — 모든 Entity Type은 Primary Key에 속하는 Attribute를 가진다 — Primary Key는 타원 안에 가로로 선하나 더 그으면되

6. Relationship Data Model – 대표적인 논리적 데이터 모델로써 Table 또는 Relation의 구조로 표현

– 용어 정리 — Relation : 이차원의 테이블로써 데이터를 표현하는 수단 — Relation Schema : Relation의 이름, 각 Attribute에 대해 정의한 것 — Relation Instance : Relation에 들어있는 Tuple들의 집합 — Attribute : Relation의 Columns — Tuple : Relation의 Rows — Domain : 하나의 Attribute가 가질 수 있는 같은 Type의 값들의 집합 — Degree : Relation의 Attribute의 개수 — Cardinality : Relation의 Tuple의 개수 — 식별 관계(Identifying) Relation A와 B에서 A의 Primary Key가 B의 Foreign Key면서 Primary Key Relation B의 존재여부가 Relation A의 존재 여부에 의존적인 경우 ERD에서 실선으로 표시 — 비식별 관계(Non-identifying) Relation A와 B에서 A의 Primary Key가 B의 Foreign Key면서 Primary Key는 X ERD에서 점선으로 표시

– 논리적 설계에서 개념적 데이터 모델인 ER Model을 Relationship Data Model로 변환(Mapping Rule이라고도 한다) 1st) Entity A, B를 독립적인 Relation A, B으로 표기 2nd) Relationship의 종류에 따라 다음의 과정을 수행 i) 1 : 1 Relation A나 Relation B의 Primary Key를 다른 Relation의 Foreign Key로 추가 ii) 1 : N Relation A의 Primary Key를 Relation B의 Foreign Key로 추가 iii) N : M Relation A와 B의 Primary Key를 별도의 Relation(Intersection Relation 또는 Intersection Entity; 교차~~)으로 표현 즉, 두개의 1 : N 로 변환시켜서 표현한다고 생각하면된다 ※ ISA관계에서 방법 1) 상/하위 Entity 따로 표기 1st) Entity들을 독립적인 Relation으로 표기 2nd) 상위 Entity의 Primary Key를 하위 Entity에 Primary Key로 추가한다 방법 2) 상위 Entity를 하위 Entity들에 포함 1st) 하위 Entity들만 Relation으로 표기 2nd) 각 Relation의 Primary Key로 상위 Entity의 Primary Key를 추가한다

7. Key Super Key Attribute의 집합으로 구성된 Key / 유일성 O / 최소성 X(하나 빼도 유일성이 유지된다는 말)

Candidate Key Tuple을 유일하게 식별하기 위해 사용되는 Attribute의 부분집합 / 유일성 O / 최소성 O

Primary Key Candidate Key 中, 선정된 Key / 중복된 값 X / Not Null / 유일성 O / 최소성 O

Alternate Key Candidate Key 中, Primary Key를 뺀 나머지 Key들 / 유일성 O / 최소성 O

Foreign Key 다른 Relation의 Primary Key를 참조하는 Attribute(들) / 중복된 값 X / Not Null / 유일성 O / 최소성 O

8. 무결성(Integrity) DB에 저장된 데이터 값과 실제 값이 일치하는 정확성 – 무결성 제약 조건 : 정확하지 않은 데이터가 DB 내에 저장되는 것을 방지하기 위한 제약 조건 — NULL 무결성 : 특정 Attribute값이 Not Null — 고유(Unique) 무결성 : 특정 Attribute에 대해 각 Tuple들이 서로 다른 값 — Domain 무결성 : 특정 Attribute값이 Domain에 속한 값 — Key 무결성 : 하나의 Relation엔 적어도 하나의 Key가 있어야 한다 — 관계(Relationship) 무결성 : Relation에서 Tuple의 삽입 가능 여부, 서로 다른 Relation의 Tuple들 사이의 관계에 대한 적절성 여부 — 참조(Referential) 무결성 : Foreign Key는 Null이거나 참조 Relation의 Primary Key와 동일 — 개체(Entity) 무결성 : Primary Key를 구성하는 Attribute는 Not Null ※ 개체무결성이랑 NULL 무결성이랑 헷갈려

9. 관계대수(Relational Algebra) 관계형 DB에서 원하는 정보와 그 정보를 어떻게 유도하는지 기술하는 절차적 언어 – 순수 관계 연산자 SELECT 조건만족하는 Tuple의 부분집합으로 Realtion을 만듬 / σ Condition (Relation) ; ex) σ국어>80(성적) PROJECT 주어진 Attribute 값만을 추출하여 Relation을 만듬 / π Attibute (Relation) ; ex) π이름,국어(성적) JOIN 공통 Attribute를 중심으로 2개의 Relation을 하나로 합쳐서 새로운 Relation을 만듬 Relation ▷◁Constraint Relation ; ex) 성적 ▷◁이름=이름 학적부 Cartensian Product 연산한후 Select 연산 수행한 것과 동일하다 — Cartensian Product : 걍 Relation 두개 조합한거 Constraint을 θ로 일반화할 수 있는 JOIN을 θ-Join(Theta JOIN)이라고도 한다 Natural JOIN : JOIN 조건이 =일 때 동일한 속성이 2번 나타나므로 중복을 제거해서 같은 속성은 한번만 표기하는 JOIN DIVISION Relation [ Attribute ÷ Attribute ] Relation ex) 구입자 [ 구입품 코드 ÷ 생산품 코드 ] 생산품 구입자에서 생산품의 생산품 코드의 값들과 연관 있는 Tuple만 추출하되 구입품 코드 Attribute는 제외한다

– 일반 집합 연산자 : 수학에서 사용되는 집합 연산자를 Relation 연산에서도 사용이 가능 UNION(합집합) : ∪ : 결과에서 중복되는 Tuple은 제거 INTERSECTION(교집합) : ∩ DIFFERENCE(차집합) : - CARTENSIAN PRODUCT(교차곱) : × : Relation에 존재하는 모든 Tuple끼리 결합

10. 관계해석(Relational Calculus) 원하는 정보가 무엇이라는 것만 정의하는 비절차적 언어로써 Tuple 관계해석과 Domain 관계해석이 있다 관계대수로 표현한걸 관계해석으로 표현할 수 있다 질의어로 표현한다

11. SQL(Structured Query Language) 1) DDL(Data Define Language) – CREATE / ALTER / DROP DDL로 정의된 내용은 Metadata가 되며 System Catalog에 저장된다

– CREATE SCHEMA 스키마이름 AUTHORIZATION 사용자ID; – CREATE DOMAIN 도메인이름 데이터타입 [DEFAULT 기본값] [CONSTRAINT [제약조건명] CHECK (범위값)]; — CHECK 포함해서 총 4개 가능해 자세한건 생략 – CREATE TABLE 테이블이름 (속성명 데이터타입 [NOT NULL], [, 속성명 데이터타입 [NOT NULL], …] [, PRIMARY KEY(기본키속성명, …)] [, FOREIGN KEY(외래키속성명, …) REFERENCES 참조테이블 (참조테이블의기본키) [ON DELETE {NO ACTION | CASCADE | SET NULL | SET DEFAULT}] [ON UPDATE {NO ACTION | CASCADE | SET NULL | SET DEFAULT}] ] [, CONSTRAINT [제약조건명] CHECK (범위값)] — CHECK 포함해서 총 4개 가능해 자세한건 생략 ); – CREATE VIEW 뷰명 (속성명 [, 속성명, …]) AS SELECT문 – CRAETE [UNIQUE] INDEX 인덱스명 — UNIQUE는 중복제거 ON 테이블명(속성명 {ASC | DESC} [, 속성명 {ASC | DESC}) — Default Sort : ASC [CLUSTER] — Tuple을 그룹으로 지정하기 위한거라는데 모르겠다 – CRAETE TRIGGER 트리거명 [{AFTER | BEFORE}] [{INSERT | DELETE | UPDATE}] ON 테이블명 REFERENCING [{NEW | OLD}] TABLE AS 테이블명 — NEW는 새로 추가/변경될때 | OLD는 변경되었을때 적용 FOR EACH ROW WHEN 조건식 — 예를들어 WHEN new_table.학년=’1′ 내용 — 예를들어 BEGIN SET new_table.학년=’신입생’; END;

– ALTER TABLE 테이블명 ADD 속성명 데이터타입 [DEFAULT ‘기본값’]; – ALTER TABLE 테이블명 ALTER 속성명 [SET DEFAULT ‘기본값’]; – ALTER TABLE 테이블명 DROP 속성명 [CASCADE];

– DROP {SCHEMA | DOMAIN | TABLE | VIEW | INDEX | TRIGGER | CONSTRAINT} 이름명 [{CASCADE | RESTRICT}]

2) DML(Data Manipulation Language) – SELECT / JOIN – SELECT [{ALL | DISTINCT | DISTINCTROW}] [테이블명.]속성명[ AS 별칭][, [테이블명.]속성명[ AS 별칭], …] FROM 테이블명[, 테이블명, …] [WHERE 조건] — 비교연산자 / 논리연산자 / LIKE [GROUP BY 속성명[, 속성명, …] [HAVING 조건] — 그룹 함수에 대한 조건 ; 그룹함수(AVG(속성명),MAX(속성명),MIN(속성명),SUM(속성명),COUNT(속성명)) [ORDER BY 속성명 {ASC | DESC}[, 속성명 {ASC | DESC}]]; — 기본값은 ASC ※ GROUP BY로 묶인 속성이나 그룹함수와 일반 속성은 함께 사용 불가. 예) ‘SELECT 부서,이름,생일,AVG(기본급) AS 평균 GROUP BY 부서’에섯 이름,생일은 사용불가 ※ 그룹함수와 GROUP BY, HAVING절 예시 SELECT 부서, COUNT(*) AS 사원수 FROM 사원 WHERE 기본급>=100 GROUP BY 부서 HAVING COUNT(*)>=2; 사원 테이블에서 기본급이 100이상이고 사원수가 2명이상인 부서의 부서명과 사원수 ※ 하위 질의(SELECT IN SELECT) ※ 복수 테이블 검색(FROM 절에 복수의 테이블 / 속성에서 구분은 테이블명.속성명) ※ UNION(합집합) : SELECT문 UNION SELECT문(중복은 제거되서 출력)

– JOIN — INNER JOIN — EQUI JOIN : 공통 속성끼리 =(equal) 비교에 의해 같은 값을 가지는 행을 연결 기본 형식 : SELECT … WHERE 테이블명1.속성명 = 테이블명2.속성명; — WHERE절을 JOIN조건이라 한다. NATURAL JOIN : SELECT … FROM 테이블명1 NATURAL JOIN 테이블명2 — 중복제거 JOIN~USING절 : SELECT … FROM 테이블명1 JOIN 테이블명2 USING(속성명); — 공통 속성이 같은 이름 — NON-EQUI JOIN : JOIN조건에 = 조건이 아닌걸 사용(>, <, <>, 등) 기본 형식 : SELECT … WHERE (조건); 예) WHERE 학생.성적 BETWEEN 성적등급.최저 AND 성적등급.최고; — OUTER JOIN : JOIN조건에 만족하지 않는 튜플도 결과로 출력하기 위한 방법 — LEFT OUTER JOIN : 우측항 릴레이션과 맞지 않는 좌측항 릴레이션의 튜플에 NULL값을 대입(결국 좌측 릴레이션은 모두 출력) SELECT … FROM 테이블명1 LEFT OUTER JOIN 테이블명2 ON 테이블명1.속성명 = 테이블명2.속성명 SELECT … WHERE 테이블명1.속성명 = 테이블명2.속성명(+); — RIGHT OUTER JOIN : LEFT OUTER JOIN과 반대(결과적으로 우측 릴레이션은 모두 출력) SELECT … FROM 테이블명1 RIGHT OUTER JOIN 테이블명2 ON 테이블명1.속성명 = 테이블명2.속성명 SELECT … WHERE 테이블명1.속성명(+) = 테이블명2.속성명; — FULL OUTER JOIN : JOIN 조건의 양쪽 릴레이션의 튜플들 모두 출력 SELECT … FROM 테이블명1 FULL OUTER JOIN 테이블명2 ON 테이블명1.속성명 = 테이블명2.속성명 — SELF JOIN : 같은 테이블에 2개의 속성을 연결해서 EQUI JOIN

3) DML – SELCT / INSERT / DELETE / UPDATE – INSERT INTO 테이블명[(속성명1[, 속성명2, …])] VALUES (값1[, 값2, …]); ※ VALUES (값1[, 값2, …]) 대신에 SELECT문 가능 – DELETE FROM 테이블명 WHERE 조건; – UPDATE 테이블명 SET 속성명=값[, 속성명=값, …] WHERE 조건;

4) DCL(Data Control Language) : 데이터의 보안, 무결성, 회복, 병행제어 등 / DBA가 데이터 관리하는게 목적 – COMMIT : 트랙잭션의 모든 변경내용을 영구적으로 DB에 반영 – ROLLLBACK : 트랙잭션의 모든 변경내용을 취소하고 DB를 이전 상태로 되돌리기 – GRANT : DB User에게 권한을 부여 i) GRANT { DBA / RESOURCE / CONNECT } TO 사용자ID [IDENTIFIED BY 암호]; ii) GRANT 권한리스트 ON 개체 TO 사용자 [WITH GRANT OPTION]; — 권한리스트 : ALL / SELECT / INSERT / DELETE / UPDATE / ALTER / 등 – REVOKE : 권한 취소 i) REVOKE { DBA / RESOURCE / CONNECT } FROM 사용자ID ii) REVOKE [GRANT OPTION FOR] 권한리스트 ON 개체 FROM 사용자 [CASECADE]; — GRANT OPTION FOR는 WITH GRANT OPTION해제

12. VIEW – 기본 테이블의 기본키를 포함한 속성 집합으로 뷰를 구성해야 삽입 / 삭제 / 갱신이 가능 – 정의된 뷰는 다른 뷰를 정의하는데 기초가 될 수 있다. – 둘 이상의 테이블에서 유도된 뷰는 변경X – DISTINCT / GROUP BY / HAVING을 사용해 만든 뷰는 변경X

CRAETE VIEW 뷰명[(속성명[, 속성명, …])] AS SLECT절 [WITH CHECK OPTION]; — 뷰에 대한 갱신/삽입 연산시, 뷰의 정의 조건 위배하면 실행 거부(SELECT절의 WHERE절의 참거짓) 예) CREATE VIEW DB_학생 AS SELECT 학번,이름 FROM 학생 WHERE 학과=”컴공” WITH CHECK OPTION;

DROP VIEW 뷰명 { RESTRICT | CASCADE }; — RESTRICT : 해당 뷰를 다른 곳에서 참조시 제거 취소 — CASCADE : 해당 뷰 를 다른 곳에서 참조시 참조하는 다른 뷰나 제약 조건까지 모두 제거

13. Embeded SQL : 응용 P/G에서 SQL문을 내포해서 실행되도록 호스트 P/G에 삽입한 SQL C/C++(변수선언/SQL실행시에 EXEC SQL을 어두에 붙인다) i) Cursor 사용 X EXEC SQL BEGIN DECLARE SECTION; 변수를 선언한다. EXEC SQL END DECLARE SECTION; 로직을 적는다(변수 사용시엔, 변수앞에 :(콜론)붙여야되) EXEC SQL SELECT SNAME, DEPT INTO :SNAME, :DEPT — SNAME,DEPT를 SNAME,DEPT라는 변수에 저장. FROM STUDENT WHERE SNO=:SNO; — DB의 SNO 속성값과 SNO라는 변수를 비교 ii) Cursor 사용 EXEC SQL BEGIN DECLARE SECTION; 변수를 선언한다. EXEC SQL END DECLARE SECTION;

EXEC SQL DECLARE person CURSOR FOR SELECT SNAME, DEPT FROM STUDENT WHERE SNO=:SNO;

EXEC SQL OPEN person;

EXEC SQL FETCH person [INTO 변수]; — 변수에 읽은값저장하고 커서이동

EXEC SQL CLOSE person; — 커서 닫기

※ JAVA에서는 #SQL{}

14. Stored Procedure : PL/SQL처럼 특정한 SQL문을 저장해놓고 가져다 씀 CREATE [OR REPLACE] PROCEDURE 프로시저명({ IN | OUT }파라미터[, { IN | OUT }파라미터, …]) [DECLEARE 변수명 자료형 — 변수선언] BEGIN PROCEDURE BODY END;

15. 이상(Anomaly) : 테이블의 일부 속성들이 종속으로인해 데이터 중복이 발생하고 이로 인해 테이블 조작 시 문제 발생하는 현상

– 삽입 이상(Insert Anomaly) : 데이터 삽입할 때 의도와 상관없이 원치 않은 값들로 인해 삽입할 수 없게 되는 현상

– 삭제 이상(Delete Anomaly) : 한 튜플을 삭제할 때 의도와 상관없는 값들도 삭제되는, 연쇄 삭제가 발생하는 현상

– 갱신 이상(Update Anomaly) : 튜플에 있는 속성 값을 갱신할 때 일부 튜플 정보만 갱신되어 정보에 불일치성이 생기는 현상

※ 원인 : 여러가지 종류의 사실들(값들)을 하나의 릴레이션에 표현하기 때문

※ 해결 : 속성들 간의 종속성을 분석해서, 하나의 종속성은 하나의 릴레이션에 표현되도록 분해. 이를 정규화라고한다.

16. 함수적 종속(Functional Dependency)

어떤 테이블 R에서 X와 Y를 각각 R의 속성 집합의 부분 집합이라 할 때

속성 X의 값 각각에 대해 시간에 관계없이 항상 속성 Y의 값이 오직 하나만 연관되어 있을 때

‘Y는 X에 함수적 종속’ 또는 ‘X가 Y를 함수적으로 결정한다’라고 하며 X→Y로 표기한다.

X→Y의 관계에서 X를 결정자(Determinant), Y를 종속자(Dependent)

※ 연관이라는 개념을 결정짓는다라는 개념으로 보면될듯 : X가 결정되면 Y도 결정된다.

– 완전 함수적 종속(Full Functional Dependency)

X→Y이면서도 X의 임의의 진부분집합인 Z와는 종속관계가 없는 속성

– 부분 함수적 종속(Partial Functional Dependency)

X→Y이면서도 X의 임의의 진부분집합인 Z와도 Z→Y인 속성

17. 정규화(Nomarlization) 테이블의 속성들의 종속적인 관계를 이용해 테이블을 무손실 분해하는 과정으로 가능한 한 중복을 제거하여 삽입 / 삭제 / 갱신 이상의 발생 가능성을 줄이는 것이다.

비정규 릴레이션 ↓ 도메인이 원자값 제 1정규형(1NF; First Nomal Form) : 테이블에 속한 모든 속성의 도메인이 원자 값(Atomic Value)임 ↓ 부분적 함수 종속 제거 제 2정규형(2NF) : 기본키가 아닌 모든 속성이, 기본키에 대하여 완전 함수적 종속을 만족 ↓ 이행적 함수적 종속(Transitive Functional Dependency) 제거 — A→B이고 B→C일때, A→C를 만족하는 관계 제 3정규형(3NF) : 기본키가 아닌 모든 속성이 기본키에 대해 이행적 종속을 만족하지 않음 ↓ 결정자가 후보키가 아닌 함수종속 제거 BCNF(Boyce-Codd Normal Form) 모든 결정자가 후보키 ↓ 다치종속(MVD; Multi-Valued Dependency) 제거 — 테이블 R(A,B,C)에서 (A,B)→(C)도 성립하고 (A)→(C)도 성립할때 다치 종속 제 4정규형(4NF) : 테이블 R의 다치 종속(MVD) A→→B가 존재할 경우, R의 모든 속성이 A에 함수적 종속 ↓ 조인종속 제거 제 5정규형(5NF or PJNF) : 테이블 R의 모든 조인 종속(JD)이 R의 후보키를 통해서만 성립 — 조인 종속(JD) : 테이블 R과 R의 프로젝션들을 모두 조인한 결과가 동일 — 여기서는 R의 프로젝션으로 R의 후보키가 온다고보면됨

※ 첫 글자 따서 : 도부이결다조

18. 시스템 카탈로그(System Catalog; 데이터 사전(Data Dictionary)이라고도한다)

DBA의 도구로써 DB에 저장되어 있는 모든 데이터 개체들에 대한 정의나 명세에 대한 정보가 수록되어있는 테이블

DBMS에 의해 생성되고 유지되며 사용자가 SQL문으로 시스템 카탈로그의 수정은 안된다. 사용자와 DBMS의 접근이 가능하다

시스템 카탈로그에 저장된 내용을 메타 데이터(Metadata)라고 한다.

구성 요소(MS-SQL Server 2005)

– SYSOBJECTS

– SYSCOLUMNS

– SYSINDEXES

– SYSVIEWS

– SYSUSERS

– SYSPROTECTS

19. 인덱스(Index) : 튜플에 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조

– 기본 인덱스 : 기본키를 위한 인덱스. 관계형 DBMS에서는 모든 기본키에 자동적으로 기본 인덱스를 생성

– 보조 인덱스 : 기본 인덱스가 아닌 나머지

– 클러스터(Cluster) 인덱스 : 인덱스 테이블의 키 값 순서와 튜플의 물리적 순서를 동일하게 유지하는 인덱스

※ 행 이주(Row Migration)

— 인덱스 테이블에서 튜플의 값을 자료형 보다 크게 넣으면 해당 튜플은 뒤로 밀려나게된다.

— 예를 들어 자료형이 varchar인 경우 생각해보면되.

– 종류

— m-원 검색트리(m-Way Search Tree ; Multiway Tree of order m)

이진 검색 트리을 수정한 것으로, 한 노드가 최대 m-1개의 키 값과 최대 m개의 서브 노드를 가진다.

각 노드 안에는 포인터와 키 값들이 존재한다. 포인터의 최대 개수는 m개이고 키 값의 최대 개수는 m-1이다.

각 노드 안의 키 값들은 오름차순으로 차례대로 저장된다.

좋은 성능을 위해서는 최대한 m을 크게 해야하며 균형에 가까워야 한다. 균형이 잡힌 상태를 B-Tree라고 한다.

— B 트리(B Tree)

인덱스를 구성하는 방법으로 많이 사용되는 균형잡힌 m-원 검색트리이다.

루트는 단말 노드가 아닐 때, 적어도 2개의 서브트리를 가진다.

루트도 아니고 단말 노드도 아니라면 최소 m/2, 최대 m개의 서브노드를 가진다.

모든 단말 노드들은 같은 높이를 가진다.

— B* 트리(B* Tree)

B-트리의 빈번한 노드 분할을 줄이는 목적으로 제시되었다.

각 노드가 최소한 2/3가 채워진 상태여야 한다.

한 노드가 가득차고 인접 노드가 모두 가득찰 때까지 분할을 지연시킨다.

— B+ 트리(B+ Tree)

B-트리의 순차적인 순회 작업에 대한 해결책으로 제시되었다.

인덱스 세트와 순차 세트로 구분 된다.

인덱스 세트(Index Set) : 단말 노드가 아닌 노드들로 구성

키 값을 단말 노드에 있는 키 값으로 직접 찾아가는데 사용

순차 세트(Sequence Set) : 단말 노드로만 구성

모든 키 값을 단말 노드에 나열된다. 인덱스 세트의 키 값들도 다시 한번 나열된다.

순차적으로 Linked list를 구성하고 있어서 순차적 처리가 가능하다.

20. 트랜잭션(Transaction) : DB에서 하나의 놀리적 기능을 수행하기 위한 일련의 연산 집합. 작업의 논리적 단위

– COMMIT : 하나의 트랜잭션이 정상적으로 종료될 경우 수행되는 연산

– ROLLBACK : 하나의 트랜잭션이 비정상적으로 종료될 경우 수행되는 연산

– 특징(ACID)

— 원자성(Atomicity) : 트랜잭션의 연산은 DB에 모두 반영되든지 전혀 반영되지 않던지 둘 중 하나

— 일관성(Consistency) : 시스템이 가지고 있는 고정적인 요소는 트랜잭션의 연산이 끝나도 동일

— 독립성(Isolation) : 한 트랜잭션이 데이터를 갱신하는 동안 다른 트랜잭션들은 접근하지 못한다.

— 영속성(Durability) : 트랜잭션이 완료된 후에는 시스템 오류가 발생해도 트랜잭션에 의해 변경된 내용은 보존됨

– 상태

— 활동(Active)

— 실패(Failed)

— 철회(Aborted) : 트랜잭션이 비정상적으로 종료되어 ROLLBACK 연산을 수행한 상태

— 부분 완료(Partially Committed) : 트랜잭션의 마지막 연산까지 수행하고 COMMIT 연산 하기 전

— 완료(Committed)

21. 회복(Recovery) : 트랜잭션 실행 도중 장애가 발생해 DB각 손상되었을 경우 다시 복구하는 작업

– 장애의 유형

— 실행 장애(Action Failure) : 사용자의 실수 / 무결성 규칙 위반 등으로 질의 실행이 실패

— 트랜잭션 장애(Transaction Failure) : 비정상적인 상황으로 인해 트랜잭션 실행이 중지

— 시스템 장애(System Failure) : DB에는 손상을 입히지 않으나 H/W의 오동작, 정전 등에 의해 모든 트랜잭션이 실행 불가

— 미디어 장애(Media Failure) : 저장장치의 손상 / 오동작으로 DB의 일부 또는 전부가 물리적으로 손상되는 현상

– 회복 관리기(Recovery Manager)

— Log / Memory Dump 등을 이용항 회복을 수행하는 DBMS의 핵심 구성요소

— 트랜잭션이 성공적으로 완료 되지 않았으면, Log를 이용해 트랜잭션이 DB의 모든 변화를 취소(Undo)해서 회복

— 트랜잭션이 성공적으로 완료 되었으나 디스크에 반영되지 않았을 경우, Log를 이용해 재작업(Redo)를 수행

— Commit만 하지 못했다는 의미; 부분 완료(Partially Committed)라고 한다

※ Commit을 수행 했고 장애가 생기면 Redo / 아니면 Undo

– 회복 기법

— 연기 갱신(Differed Update) 기법

— 트랜잭션이 성공적으로 종료될 때까지 DB에 대한 실질적인 갱신 연기

— 실행되는 동안 변경된 내용은 Log에 보관 / 부분완료 시점에 Log로 DB에 반영

— 애초에 DB에 적용을 안하기에 장애가 생겨도 Redo 작업만 하면된다.

— 즉각 갱신(Immediate Update) 기법

— 트랜잭션이 데이터를 변경하면 트랜잭션이 부분 완료되기 전이라도 바로 DB에 반영

— 장애를 대비해 모든 변경내용 Log에 저장

— Redo와 Undo 모두 수행

— 그림자 페이지(Shadow Paging) 기법

— 갱신 이전의 DB를 페이지(Page)단위로 구성해 카피해놓고, 실제 페이지를 대상으로 트랜잭션에 대한 변경작업 반영

— 장애생겨서 Rollback할 때, 해당 페이지만 복구

— Log와 Redo, Undo 모두 필요 없다.

— 검사점(Check Point) 기법

— Redo / Undo를 위해 Log 전체를 조사하는 걸 피하기 위한 기법

— 트랜잭션 실행중 주기적으로 변경 내용이나 상황과 검사점을 같이 Log에 저장한다.

— 장애 발생시, 전체 Log 조회가 아니라 가장 최근 검사점으로 회복 작업 수행

— 미디어 회복(Media Recovery) 기법

— DB의 내용을 주기적으로 안전한 스토리지에 덤프

— 장애 발생시, 가장 최근의 덤프를 디스크에 적재하고, Log를 이용해 최근의 트랜잭션에 대해 Redo

21. 병행 제어(Concurrency Control) 참고 : http://flyingdcat4.tistory.com/m/post/72

– 동시에 다수의 트랜잭션을 수행할때, DB의일관성 파괴않도록 트랜잭션 끼리 상호작용을 제어 하는 기술

– 병행성 : 다수의 트랜잭션들이 동시에 인터리빙(Interleaving)하게 실행되는 것

– 목적

— DB의 공유를 최대화

— 시스템 활용도 최대화

— 사용자에 대한 응답 시간 최소화

— 단위 시간당 트랜잭션 처리 건수 최대화

— DB의 일관성 유지

– 병행 제어 없으면 생기는 문제점

— 갱신 분실(Lost Update) : 다수의 트랜잭션이 같은 데이터를 공유, 갱신할 때 갱신 결과의 일부가 분실됨

— 모순성(Inconsistency; 불일치성) : 다수의 사용자가 동시에 같은 데이터를 갱신할 때, DB 내의 데이터들이 불일치

— 연쇄 복귀(Cascading Rollback) : 병행 수행되던 트랜잭션들 중 하나가 Rollback하는 경우, 다른 트랜잭션도 Rollback

– 잠금(Lock) : DB관리 방법. 하나의 트랜잭션이 사용하는 데이터에 다른 트랜잭션이 접근 못하게 하는 것

— 트랜잭션들은 어떤 데이터에 접근하기 전에 잠금을 요청하여 허락받아야한다.

— 데이터 갱신 과정 : 잠금(Lock) → 실행(Excute) → 해제(Unlock)

— 잠금 단위

— 병행 제어에서 한 번에 잠금할 수 있는 단위로 DB, 테이블, 레코드, 필드 등이 사용될 수 있다.

— 단위가 커지면 Locking Overhead는 감소하지만 공유성은 낮아진다.

— 단위가 작아지만 Locking Overhead는 증가하지만 공유성은 높아진다.

— 교착 상태(Dead Lock)

— 공유 잠금(Shared-Lock) : 다른 트랜잭션은 읽기만 가능

— 배타 잠금(Exclusive-Lock) : 다른 트랜잭셔은 읽기/쓰기 불가능

– 병행 제어 기법의 종류

— 2-단계 잠금 규약(Two-Phase Lock Porotocol) 기법

— 트랜잭션 스케쥴(Transaction Schedule)의 직렬성을 보장하는 대표적인 잠금 기법

※ 트랜잭션 스케줄(Transaction Schedule) : 트랜잭션들이 인터리빙하게 실행될때 그 순서.

※ 직렬 스케줄 : 트랜잭션 사이에 인터리빙이 없다.

— 모든 트랜잭션들은 잠금과 잠금해제를 다음과 같이 2단계로 수행한다.

—- 확장(Growing) 단계 : 트랜잭션이 잠금만 가능하고 해제는 불가능한 단계

—- 축소(Shrinking) 단계 : 트랜잭션이 잠금 해제만 가능하고 잠금은 불가능한 단계

— 스케줄의 직렬성을 보장한다는 장점은 있지만 교착 상태는 예방할 수 없다는 단점

— 타임 스탬프 순서(Time Stamp Ordering) 기법

— 타임 스탬프 : 시스템이 각 트랜잭션을 실행할 때 부여하는 값(트랜잭션이 발생할때의 시스템 시간 값)

— 트랜잭션 스케줄의 결과와 직렬 스케줄의 결과가 동일함을 보장하는 기법

— 직렬성 순서를 결정하기 위해, 트랜잭션 간의 실행 순서를 미리 결정하는 기법으로 가장 보편적인 방법

— 트랜잭션을 실행하기전에 타임 스탬프를 부여하고, 그 순서에 따라 트랜잭션을 수행한다

— 교착 상태가 발생하지 않는다.

22. 보안(Security)

– 목표

— 정보 보호 / 정보 인증(악의적 수정과 허위 정보 저장 방지) / 사용자 인증

– 보안 기법

— SQL 이용한 권한 부여 기법

— 뷰(View)를 이용하는 방법

— DCL을 이용해 권한 부여와 취소

— 암호화 기법

— 개인키 암호화(Private Key Encryption) 기법 : DES

— 공개키 암호화(Public Key Encryption) 기법 : RSA

23. 튜닝(Tuning)

– DB의 환경 등을 조정해 DBMS의 성능을 향상시키는 작업

– DBMS의 높은 작업 처리량과 짧은 응답 시간을 갖도록 하는 것이 중요

– 목표

— DB에 접근하는 SQL문 실행시, 디스크 블록에 대한 접근 횟수 최소화

— 디스크 블록에서 한번 읽어온 데이터는 가능한 한 메모리 영역에 보관하여, 신속한 재사용(캐시(Cache) 용량의 확보)

— 모든 SQL문은 공유가 가능하도록, 작성 규칙을 준수하여 작성

— 다수의 사용자가 자원을 안정적으로 사용하게끔 잠금 기능을 최소화 한다.

– 튜닝의 단계

— 비즈니스 규칙(Business Rule) 튜닝

— 시스템 설계와 구현에 대한 부정확한 분석과 부적절한 비즈니스 규칙

— 데이터 설계(Data Design) 튜닝

— 구현된 어플리케이션이 필요한 데이터가 무엇인지 정확하게 파악

— 데이터 간의 관계와 속성을 명확히하고 정보의 구조화 작업을 수행

— 응용 프로그램 설계(Application Degin) 튜닝

— 튜닝을 필요로 하는 대상 프로그램을 선정

— 데이터베이스의 논리적 구조(Logical Structure) 튜닝

— 부하가 예상되는 질의와 갱신을 고려해서 스키마를 작성

— 데이터베이스 접근 방식(Access Method) 튜닝

— SQL의 장점과 응용프로그램의 작업 처리를 최대화 하기 위해 DBMS의 기능을 충분히 활용한다.

— 접근 경로(Access Path) 튜닝

— 효과적인 데이터 접근을 위해 B-트리 인덱스 / 비트맵 인덱스 / 역방향 인덱스 등의 사용을 고려

— 인덱스의 추가 및 삭제와 설계의 개선도 고려

— 메모리 관리(Memory Management) 튜닝

— 메모리 자원을 효율적 할당하고 캐시의 성능을 개선, SQL문의 파싱 작업을 감소시킨다.

— 물리적 구조(Physical Structure) 및 입/출력(Input/Output) 튜닝

— 접근 비용을 최소화 하기위해 데이터 블럭 운영을 고려

— 디스크 간의 데이터를 분산해서 디스크의 입/출력 경합을 감소시킨다

— 자원의 경합(Competition) 튜닝

— 공유 풀(Shared Pool), 잠금(Lock) 등의 경합 형태를 감소시키기 위한 노력 수행

— H/W 시스템에 특화된 부분의 튜닝

— DB는 사용되는 H/W 시스템 종류와 특성에 따라 성능의 차이가 나므로 이에 맞게 튜닝한다

– 인덱스 튜닝(접근 경로에 대한 튜닝; 쉽고 효율이 높아서 많이 사용됨)

— 인덱스의 종류

— B-트리 인덱스

—- 일반적으로 사용되는 인덱싱 방식

—- 데이터 양에 상관없이 모든 데이터 인덱스 탐색 시간이 동일

— 비트맵 인덱스

—- 인덱스 컬럼의 데이터를 Bit 값인 0 또는 1로 변환하여 인덱스 키로 사용

—- 분포도가 좋은 컬럼에 적합하다. Bit로 구성되기에 효율적인 논리 연산 기능

—- 저장 공간이 작다

— 역방향 인덱스

—- 인덱스 컬럼의 데이터를 역으로 변환하여 인덱스 키로 사용하는 방법

—- B-트리 인덱스에서 발생할 수 있는 불균형 문제를 해결

—- 데이터의 분포도가 좋아져 검색 성능이 좋다.

— 클러스터드 인덱스(Clustered Index)

—- 인덱스 키의 순서에 따라 데이터가 정렬되어 있는 방식

—- 데이터가 정렬되어 있기에 인덱스를 검색안해도 데이터를 빠르게 찾을 수 있다

—- 데이터 삽입/삭제 발생 시 데이터를 재정렬해야 한다.

—- 한 개의 릴레이션에 하나의 인덱스만 생성가능

— 넌클러스터드 인덱스(Non-Clustered Index)

—- 인덱스 키만 정렬되어 있고, 데이터는 정렬되지 않는 방식

—- 데이터 검색위해, 인덱스를 검색해야 하기에 클러스터드 인덱스에 비해 검색 속도 떨어진다.

—- 한 개의 릴레이션에 여러 개의 인덱스 생성가능

— 인덱스 선정 기준

— 분포도(선택성)가 좋은 컬럼은 단독으로 인덱스를 생성

— 데이터의 변경이 적은 컬럼에 인덱스를 생성

— 인덱스들이 자주 조합될때는 결합 인덱스(Concatenate Index)를 생성

—- 결합 인덱스의 컬럼 순서는 데이터의 분포도(수치상 낮은거)가 좋은 컬럼을 선행컬럼으로

—- 분포도(선택성)가 좋다? : 같은 키 값을 가지는 튜플의 수가 적다.; 키 종류가 다양할 수록 분포도가 좋다고보면되

— 인덱스를 사용하지 못하는 경우

— 인덱스 키 생성 시 NULL 값은 인덱스 대상에 포함되지 않아서, IS NULL과 IS NOT NULL을 사용하면 인덱스 사용 불가

— <>, !=, NOT 등의 부정 연산자는 다수의 데이터를 검색하므로 인덱스를 이용 불가

— LIKE ‘%A’와 같은 경우에는, 처음 부터 다 검색하게 된다.

— 인덱스 컬럼에 함수나 수식을 사용하면 인덱스 키값이 변형되어 인덱스로 사용 불가

24. 객체 지향 데이터베이스(ODB; Object-oriented Database)

– 객체 지향 데이터베이스의 구성

— 객체와 객체 식별자(OID; Object IDentifier)

— 속성(Attribute)과 메소드(Method)

— 클래스(Class)와 인스턴스(Insttance)

— 상속(Inheritance)

— 오버로딩(Overloading)과 오버라이딩(Overriding)

– 객체 관계 데이터베이스(ORDB; Object Relational Database)

— 관계형 데이터베이스에 객체 지향 데이터베이스의 개념을 추가한 데이터베이스

— 특징

— 객체 관계 데이터베이스를 위한 데이터 언어 표준으로 ISO에서 제시한 SQL3

— 확장 가능 데이터 타입 / 사용자 정의 데이터 타입 / 사용자 정의 함수 / 등을 지원

—- 텍스트파일이나 그래픽 파일 같이 대용량의 데이터 저장을 위해 LOB(Large OBject) 타입이 있다

—– 가변 길이 문자 스트링(CLOB) / 가변길이 이진 스트링(BLOB)

25. 고급 데이터베이스 – 분산 데이터베이스(Distributed Database) — 논리적으로 같은 시스템에 속하지만, 물리적으로는 분산되어있는 데이터베이스 — 분산 데이터베이스 시스템의 구성요소 — 분산 처리기 : 지리적으로 분산되어있는 컴퓨터 시스템, 자체 처리 능력을 가진다. — 분산 데이터베이스 : 지리적으로 분산되어있는 데이터베이스 — 통신 네트워크 : 분산 처리기들을 통신망으로 연결해 하나의 시스템처럼 작동할 수 있는 네트워크 — 목표 — 위치 투명성(Location Transparency) : 접근하려는 DB의 실제 위치를 알 필요없다. — 중복 투명성(Replication Transparency) : 동일한 데이터가 여러 곳에 중복되어도 하나의 데이터만 존재하는 것처럼 사용 — 병행 투명성(Concurrency Transparency) : 다수의 트랜잭션들이 동시에 수행되어도 서로 영향을 X — 장애 투명성(Failure Transparency) : 각종 장애에도 불구하고 트랜잭션은 정확하게 수행된다.

– 멀티미디어 데이터베이스(Multimedia Database) — 텍스트/그래픽/정지화상/동영상/음성 등이 복합적으로 구성된 데이터베이스

– 주기억장치 데이터베이스(Main Memory Database) — 데이터베이스 전체를 주기억장치에 상주시킨 후, 데이터베이스 연산을 수행하는 시스템 ; 디스크 I/O가 발생하지 X

– 데이터 웨어하우스(Data Warehouse) — 다량의 데이터를 효과적으로 분석하여 정보화 하고, 이를 계층의 사용자가 효율적으로 사용하도록 한 데이터베이스 — 다양한 원본 DB로부터 정제되어 추출된 데이터만을 저장하고 필요한 인덱스를 생성 — 재빠르고 정확한 의사결정을 도와준다. – 데이터 마트(Data Mart) — 전사적으로 구축된 데이터 웨어하우스로부터, 특정 주제나 부서 중심으로 구성된 단일 주제의 데이터 웨어하우스 – 데이터 마이닝(Data Mining) — 데이터 웨어하우스에 저장된 데이터 집합에서 사용자의 요구에 따라 유용하고 가능성 있는 정보를 발견하기 위한 기법 — 기법 종류 — 연관 — 연속 — 분류 — 클러스터링 — 특성화 — 패턴분석 — 경향 분석

– OLAP(Online Analytical Processing) — 다차원으로 이루어진 데이터로부터, 통계적인 요약 정보를 분석하여 의사결정에 활용하는 방식 — 데이터 웨어하우스, 데이터 마트 같은 시스템과 상홍 연관되는 시스템 — 데이터 웨어하우스의 데이터를 전략적인 정보로 변환시키는 역할 — 중간 매개체 없이 이용자들이 직접 컴퓨터를 이용해 데이터에 접근하는데 있어서 필수적인 시스템 — OLAP 연산 — Roll-up : 더 요약된 정보보기 — Drill-down : 더 구체적인 정보보기 — Pivoting : 보고서의 행/열/페이지 차원을 바꾸어 보는 기능 — Slicing/Dicing : 다차원 데이터 항목들을 다양한 각도에서 조회하고 자유롭게 비교 — OLAP 종류 — ROLAP(Relational-OLAP) : 관계형 데이터베이스와 관계형 질의어를 사용하여 다차원 데이터를 저장하고 분석 — MOLAP(Multi-dimension OLAP) —- 다차원 데이터를 저장하기 위해 특수한 구조의 다차원 데이터베이스를 사용한다 —- 검색 속도를 위해 큐브 캐시(Cube Cache)라고 하는 주기억장치 속에 데이터 큐브를 저장한다. —– 데이터 큐브(Data Cube) ; 데이터가 여러 차원으로 모델링 되는 것으로 차원과 사실로 정의된다. —— 차원(Dimension)은 한 조직이 그것에 대하여 기록하기 원하는 시각이나 개체를 의미 — HOLAP(Hybrid OLAP) —- ROLAP과 MOLAP의 특성을 모두 가지고 있다. —- 빠른 검색을 필요할때는 요약을 메모리에 저장하고 다른건 관계형 데이터베이스에 저장 – OLTP(Online Transaction Processing) — 온라인 업무 처리 형태의 하나. 네트워크 상에서 다수의 유저가 DB의 데이터를 갱신/검색하는 등의 트랜잭션을 처리하는 방식 — OLTP 시스템은 일반적으로 빠른 응답 시간을 요구 하며, 개개의 레코드를 효율적으로 조회하고 수정할 수 있도록 정규화 되어있다. ★ OLAP와 OLTP의 비교 — 데이터의 구조 OLAP(복잡) OLTP(단순) — 데이터의 갱신 OLAP(순간적/동적) OLTP(주기적/동적) — 응답 시간 OLAP(2초이내) OLTP(수 초~몇 분) — 데이터 범위 OLAP(과거 30일~90일) OLTP(과거 5년~10년) — 데이터 성격 OLAP(정규/핵심업무데이터/변경어렵다) OLTP(비정규/읽기전용/변경용이) — 데이터 크기 OLAP(수 GB) OLTP(수 TB) — 데이터의 내용 OLAP(상세 데이터) OLTP(기록 보관된 요약/계산 데이터) — 데이터의 사용법 OLAP(고도로 구조화된 연속 처리) OLTP(고도로 비구조화된 분석처리)

– ODBC(Open Database Connectivity) — 프로그램과 데이터베이스의 종류에 관계없이 자유롭게 사용할 수 있도록 MS에서만든 API — 구조상 데이터베이스 바로위에 ODBC가 위치한다 — 구조 — Application : 프로그램; ODBC API를 이용해 데이터베이스에 접근함 — Driver Manager : Application과 ODBC Driver 간의 통신을 관리하는 라이브러리 — DSN(Domain Service Name) : 서버에 연결할때 필요한 드라이버와 데이터베이스 정보를 저장 — ODBC Driver : ODBC API가 지원하는 함수를 구현하는 라이브러리 — Database

반응형

2021 정보처리기사 실기 요약(전체)(20210709 수정)

반응형

2021 시나공 정보처리기사 책을 참고로 작성하고 있습니다. 요약 내용이 추가될 때마다 수정하고 있습니다.

필자는 이번에 3번 째 정보처리기사 실기를 보는데…(지난 번에는 58점으로 떨어짐 ㅠㅠ)

매번 나왔었던 부분이나, 애매하게 알았던 부분 등 꼭 필요한 요소들만 요약해서 정리하고 있습니다.

내용이 상당히 깁니다.

제 기준 대로 별표를 붙혔고, 5점은 꼭 숙지하시고, 4점 이상인 부분은 서술형으로도 쓸 수 있게 잘 외우셔야 합니다.

* 필자는 2021 2회차 실기에 85점으로 합격했습니다. 감사합니다!

요구사항 설계 및 개발 프로세스

모듈 ★ ★

공통 모듈 : 기능을 분할하고 추상화 하여 성능 향상 및 유지보수를 효과적으로 하기 위한 공통 컴포넌트 구현 기법

모듈 : 하나의 소프트웨어 또는 하드웨어 단위, 소프트웨어 설계에서 기능 단위로 분해해 추상화되어 재사용 및 공유가 가능한 단위

모듈화 : 모듈을 통해 소프트웨어의 성능을 향상 시키고 디버깅, 수정, 통합 을 용이하게 하는 설계 기법

공통 모듈 명세 기법[정명완일추] ★ ★ ★ ★ ★

정확성 : 시스템 구현 시 해당 기능이 필요 하다는 것을 알 수 있도록 정확히 작성

명확성 : 해당 기능을 이해할 때 중의적으로 해석되지 않도록 명확히 작성

완전성 : 시스템 구현을 위해 필요한 모든 것을 기술

일관성 : 공통 기능들 간 상호 충돌이 발생하지 않도록 작성

추적성 : 기능에 대한 요구사항의 출처 , 관련 시스템 등의 관계를 파악 할 수 있도록 작성

결함관리 측정지표 ★ ★

결함 분포 : 모듈 또는 컴포넌트의 특정 속성에 해당하는 결함 수 측정

결함 추세 : 테스트 진행 시간에 따른 결함 수의 추이 분석

결함 에이징 : 특정 결함 상태로 지속되는 시간 측정

XP(eXtreme Programming) 기법 ★ ★ ★

핵심 가치 : 의사소통(Communication), 단순성(Simplicity), 용기(Courage), 존중(Respect), 피드백(Feedback)[의단용존피]

Pair Programming(짝 프로그래밍) : 다른 사람과 함께 프로그래밍 을 수행함으로 개발에 대한 책임을 공동으로 나눠 갖는 환경 조성

Test-Driven Development(테스트 주도 개발) : 테스트 케이스를 먼저 작성 해 자신 이 무엇을 해야할지 정확히 파악. 테스트가 지속적으로 진행될 수 있도록 자동화된 테스팅 도구 사용

Whole Team(전체 팀) : 개발에 참여하는 모든 구성원은 각자의 역할에 따른 책임 을 가져야함

Continuous Integration(계속적인 통합) : 모듈 단위로 나눠서 개발된 코드 는 작업이 마무리 될 때마다 지속적으로 통합 됨

Design Improvement(디자인 개선 또는 리팩토링) : 프로그램 기능의 변경 없이 단순화, 유연성 강화 등을 통해 시스템 재구성

Small Releases(소규모 릴리즈) : 릴리즈 기간을 짧게 반복 해 고객의 요구 변화에 신속히 대응

XP 개발 프로세스 ★ ★

사용자 스토리 : 요구사항 간단한 시나리오로 표현. 기능 단위 구성.

릴리즈 계획 수립 : 부분적으로 기능이 완료된 제품 제공

스파이크 : 요구사항 신뢰도를 높이고, 기술 문제의 위험 감소를 위해 별도로 만드는 프로그램

이터레이션 : 하나의 릴리즈를 더 세분화한 단위

승인 검사(인수 테스트) : 계획된 릴리즈 단위가 부분 완료가 구현되면 고객이 직접 수행해서 테스트함.

소규모 릴리즈

스크럼 개발 프로세스 ★ ★

제품 백로그 : 제품 개발에 필요한 요구사항을 우선순위에 따라 나열한 로그 리스트. 지속적으로 업데이트되며, 사용자 스토리 기반의 릴리즈 계획 수립

스프린트 계획 회의 : 수행할 작업에 대한 단기적 일정. 태스크(Task) 작업 단위로 분할. 개발자별로 수행할 작업 목록인 스프린트 백로그 작성

스프린트 : 실제 개발 작업 과정. 개발자가 원하는 태스크를 담당할 수 있도록 함. 할 일(Todo), 진행 중(In Progress), 완료(Done)의 상태로 태스크 관리

일일 스크럼 회의 : 15분 정도의 짧은 시간으로 진행상황을 점검하고 남은 작업 시간을 소멸 차트에 표시한다.

스프린트 검토 회의 : 제품 책임자(PO)는 개선할 사항에 대한 피드백을 정리 후 다음 스프린트에 반영할 수 있도록 제품 백로그를 업데이트함

스프린트 회고

소프트웨어 생명 주기 ★ ★

폭포수 모형 : 가장 오래되고 가장 폭넓게 사용된 전통적 모형으로 고전적 생명 주기 모형 이라 함. 두 개 이상의 과정 병행 수행 할 수 없음.

– 순서 : 타당성 검토 -> 계획 -> 요구분석 -> 설계 -> 구현 -> 시험 -> 유지보수.

프로토타입 모형 : 사용자와 시스템 사이의 인터페이스에 초점 . 시스템 모형의 골격 코드. 폭포수 모형의 단점 보안.

– 순서 : 요구 수집 -> 설계 -> 구축 -> 평가 -> 조정 -> 구현 -> 요구수집

나선형 모형 : 보헴(Boehm) 제안. 여러 번의 개발 과정과 검토 과정 을 거치는 점진적 모형. 별도의 유지보수 과정 필요 없음

애자일 모형 : 고객과의 소통 에 초점을 맞춘 방법론. 스프린트 또는 이터레이션 개발 주기 반복. 고객이 요구사항에 우선순위를 부여함.

– 종류 : 스크럼, XP, 칸반, Lean, 크리스탈, ASD, FDD, DSDM, DAD

스크럼 ★

제품 책임자(PO) : 이해관계자들의 의견을 종합해 제품에 대한 요구사항 작성. PO는 요구 사항이 담긴 백로그를 작성하고 백로그 우선 순위 를 지정

스크럼 마스터(SM) : 일일 스크럼 회의 주관하여 진행 사항을 점검 하고, 개발 과정에서 발생된 장애 요소를 공론화해서 처리

개발팀(DT) : 개발자, 디자이너, 테스터 등

UI 요구사항 작성 ★

요구사항 요소 확인 -> 정황 시나리오 작성 -> 요구사항 작성

요구사항 요소 확인 ★

데이터 요구 : 사용자가 요구하는 모델과 객체들의 주요 특성을 기반으로 하여 데이터 객체들을 정리(이메일의 메시지 속성 -> 제목, 발신인, 답변 등)

기능 요구 : 사용자의 목적 달성을 위해 무엇을 실행해야 하는지를 동사형으로 설명. 기능 요구 리스트는 최대한 철저하게 정리(읽거나 삭제, 다른 메시지와 함께 보관)

제품/서비스의 품질 : 데이터 및 기능 요구 외에 제품의 품질, 서비스, 여기에 감성적인 품질 등을 고려하여 작성.(얼마나 빠르게 처리할 수 있는지의 여부 등 정량화가 가능한 요구사항)

제약 사항 : 제품 완료 데드라인, 전체 개발 및 제작에 필요한 비용, 시스템 준수에 필요한 규제가 포함.(제약사항의 변경 가능 여부 확인)

요구사항 개발 프로세스[도분명확] ★ ★ ★ ★ ★

도출 : 시스템, 사용자, 개발자가 의견을 교환 하여 요구사항을 식별하고 이해하는 과정. 소프트웨어 개발 생명주기(SDLC) 반복

– 요구사항 도출 방법 : 인터뷰, 설문, 브레인스토밍, 워크샵, 프로토타이핑, 유스케이스(사용사례)

분석 : 요구사항 중 명확하지 않거나 모호한 부분을 걸러내는 과정. 타당성을 조사 . 비용과 일정에 대한 제약 설정

– 요구사항 분석 기법 : 요구사항 분류, 개념 모델링, 요구사항 할당, 요구사항 협상, 정형 분석[분개할협정]

명세 : 요구사항을 체계적으로 분석 한 후 승인될 수 있도록 문서화.

확인 : 개발 자원을 요구사항에 할당하기 전에 명세서가 정확하고 완전하게 작성되었는지를 검토 . 요구사항 관리 도구를 이용하여 요구사항 정의 문서를 형상 관리 해야 함.

– 요구사항 확인 기법 : 요구사항 검토, 프로토타이핑, 모델 검증(정적 분석), 인수 테스트[요프모인]

요구공학 : 무엇을 개발해야 하는지, 요구 사항을 정의하고 분석 및 관리 하는 프로세스를 연구 하는 학문 .

정황 시나리오 : 사용자의 요구사항을 도출하기 위해 작성 하는 것. 사용자가 목표를 달성하기 위해 수행하는 방법을 순차적으로 묘사

정형 명세기법 : 수학적 기호 , 정형화 된 표기법. 종류(VDM, Z, Petri-net, CSP)

비정형 명세기법 : 일반 명사, 동사 등의 자연어를 기반 으로 서술 또는 다이어그램 으로 작성. 종류(FSM, Decision Table, ER모델링, State Chart(SADT) 등.

연계 요구사항 ★

체크리스트 : 시스템 운영환경, 성능, 보안, 데이터발생주기 등의 기준에 대한 점검 을 통한 연계 요구사항 기법

브레인스토밍 : 소속된 인원들이 자발적으로 자연스럽게 제시된 아이디어 목록을 통한 연계 요구사항 기법

요구사항 검토 상세 항목 ★ ★ ★

동료 검토 : 작성자가 명세서 내용을 직접 설명하고 동료들이 이를 들으면서 결함을 발견하는 형태의 검토 방법

워크 스루 : 검토 회의 전에 사전 검토를 한 후에 짧은 검토 회의를 통해 결함을 발견하는 검토 방법

인스펙션 : 작성자를 제외한 다른 검토 전문가 들이 검토하는 방법

요구 사항 분석의 도구와 기법 ★ ★ ★

사용자 인터뷰, 핵심 사용자 그룹 면담(FGI: Focus Group Interview): 사용자 면담 또는 시스템 관리자 및 서비스 활용자와 같은 핵심 그룹 면담 연계 데이터 정의, 연계 데이터의 활용 목적, 필요성 등을 식별하기 위함으로 사용자 인터뷰 전 연계 대상 시스템의 응용 애플리케이션 기능, 서비스의 확인이 필요함

체크리스트(Checklist) : 연계 데이터와 연계 시스템 아키텍처 정의를 위해 시스템 운영 환경, 성능, 보안, 데이터 발생 등 다각도의 관점에서 고려 사항 점검 및 확인

설문지 및 설문 조사 : 서비스 활용 목적에 따라 연계가 필요한 데이터를 식별하고, 연계 주기 등을 분석하기 위해 설문 조사 항목을 통해 자료를 수집. 객관식 문항으로 예상 답변을 일정 범위 이내로 한정할 수도 있음

델파이 기법 : 통합 구현 및 연계 전문가, 시스템 아키텍처, 업무 전문가 등 각 분야 전문가로부터 연계 데이터 및 사용자 요구 사항 식별

연계 솔루션 비교 분석: EAI, ESB, Open API 등 다양한 연계 방식과 연계 솔루션 별 연계 시의 성능, 보안, 데이터 처리, 모니터링 등의 장단점을 비교함

EAI(Enterprise Application Integration) ★ ★ ★ ★ ★

EAI는 기업 내 각종 애플리케이션 및 플롯폼 간의 정보 전달 , 연계 통합 등 상호 연동이 가능하게 해주는 솔루션 이다. EAI는 비즈니스 간 통합 및 연계성을 증대시켜 효율성 및 각 시스템 간의 확정성을 높여준다.

Point-to-Point : 가장 기본적인 애플리케이션 통합 방식으로, 1대1로 연결 한다. 변경 및 재사용이 어렵다는 단점.

Hub & Spoke : 단일 접점인 허브 시스템을 통해 데이터를 전송하는 중앙 집중형 방식 . 확장, 유지 보수가 유리하다. 허브 장애 발생시 시스템 전체에 영향 이 있다는 단점.

Message Bus : 애플리케이션 사이에 미들웨어 를 두어 처리하는 방식이다. 확장성 이 뛰어나며 대용량 처리 가 가능하다.

Hybrid : Hub & Spoke와 Message Bus의 혼합 방식이다. 데이터 병목 현상을 최소화 할 수 있다.

ESB(Enterprise Service Bus) ★ ★ ★ ★ ★

ESB는 애플리케이션 간 연계, 데이터 변환, 웹 서비스 지원 등 표준 기반의 인터페이스를 제공하는 솔루션 이다. ESB는 애플리케이션 통합 측면에서 EAI와 유사하지만 애플리케이션 보다는 서비스 중심의 통합을 지향 한다. ESB는 특정 서비스에 국한 되지 않고 범용적으로 사용하기 위해 애플리케이션과의 결합도(Coupling)를 약하게 유지 한다. 관리 및 보안 유지가 쉽고, 높은 수준의 품질 지원이 가능하다.

* 느슨한 결합 : 클래스 간의 의존성을 최소화 하는 것으로, 각 모듈간 통합시 특정 서비스를 변경하더라도 연결된 다른 서비스에는 영향을 주지 않는 유연한 구조

* SOA(서비스 지향 아키텍처) : 기업의 소프트웨어 인프라인 정보시스템을 공유 와 재사용 이 가능한 서비스 단위나 컴포넌트 중심으로 구축하는 정보기술 아키텍처

요구사항 분석 ★ ★ ★ ★

요구사항 분석 : 개발 대상에 대한 사용자의 요구사항을 이해하고 문서화 하는 활동.

구조적 분석 기법 : 자료의 흐름과 처리를 중심 으로 하는 요구사항 분석 방법. 하향식 방법을 사용해 시스템을 세분화. 자료흐름도, 자료 사전, 개체 관계도 등의 도구를 사용.

자료흐름도 : 요구사항 분석에서 자료의 흐름 및 변환 과정과 기능을 도형 중심으로 기술 하는 방법. 버블 차트라고도 함.[프흐저단]

– 프로세스(Process) : 자료를 변환 시키는 시스템의 한 부분을 나타내며 처리, 기능, 변환, 버블이라고도 함.

– 자료 흐름(Data Flow) : 자료의 이동(흐름)이나 연관 관계를 나타냄

– 자료 저장소(Data Store) : 시스템에서의 자료 저장소(파일, 데이터베이스)를 나타냄

– 단말(Terminator) : 시스템과 교신하는 외부 개체 로 입력 데이터가 만들어지고 출력 데이터를 받음.

자료 사전(Data Dictionary) : 자료 흐름도에 있는 자료를 더 자세히 정의하고 기록한 것.

– () 자료의 생략 / [] 자료의 선택 / {} 자료의 반복

요구사항 분석용 도구 ★ ★ ★

SADT : SoftTech 사에서 개발. 시스템 정의, 소프트웨어 요구사항 분석, 시스템/소프트웨어 설계를 위한 도구. 구조적 요구 분석을 하기 위해 블록 다이어그램을 채택한 자동화 도구 .

SREM = RSL/REVS : TRW 사 가 실시간 처리 소프트웨어 시스템 에서 요구사항을 명확히 기술하도록 할 목적으로 개발한 도구.

PSL/PSA : 미시간 대학 에서 개발, PSL/PSA를 사용하는 자동화 도구.

TAGS : 시스템 공학 방법 응용에 대한 자동 접근 방법 . 개발 주기의 전 과정에 이용할 수 있는 통합 자동화 도구 .

HIPO : 시스템의 분석 및 설계 , 또는 문서화 에 사용되는 기법으로 시스템의 실행 과정인 입력, 처리, 출력 의 기능을 표현한 것. 하향식 소프트웨어 개발을 위한 문서화 도구다. 종류( 가시적 도표, 총체적 도표, 세부적 도표 )[가총세]

UML ★ ★ ★

UML : 의사소통이 원활하게 이루어지도록 표준화한 대표적인 객체지향 모델링 언어.

구성요소 : 사물[구행그주], 관계, 다이어그램.

– 구조사물 : 시스템의 개념적 물리적 요소를 표현.

– 행동사물 : 시간과 공간에 따른 요소들의 행동을 표현. 상호작용

– 그룹사물 : 그룹, 패키지

– 주해사물 : 주석

연관 관계 : 2개이상의 사물이 서로 관련된 관계. 사물 사이를 실선으로 연결, 방향성은 화살표 로 표현.

집합 관계 : 하나의 사물이 다른 사물에 포함되어 있는 관계. 포함되는 쪽에서 포함하는 쪽으로 속이 빈 마름모 를 연결해 표현.(포함하는 쪽이 마름모를 가짐)(컴퓨터가 프린터의 마름모를 가짐)

포함 관계 : 포함하는 사물의 변화가 포함되는 사물에게 영향을 미치는 관계. 포함되는 쪽에서 포함하는 쪽으로 속이 채워진 마름모 를 연결해 표현.

일반화 관계 : 하나의 사물이 다른 사물에 비해 더 일반적이거나 구체적인 관계다. 하위에서 상위인 사물 쪽으로 속이 빈 화살표 를 연결해 표현함.

의존 관계 : 서로 연관은 있으나 필요에 의해 서로에게 영향을 주는 짧은 시간 동안만 연관을 유지하는 관계. 연관과 비슷하게 점선 화살표 를 사용해 표현.

실체화 관계 : 사물이 할 수 있거나 해야하는 기능으로, 서로를 그룹화 할 수 있는 관계다. 사물에서 기능 쪽으로 속이 빈 점선 화살표 를 연결해 표현.

다이어그램 ★ ★ ★ ★ ★

구조적 다이어그램

– 클래스 다이어그램 : 클래스와 클래스가 가지는 속성, 클래스 사이의 관계 를 표현함.

– 객체 다이어그램 : 클래스에 속한 사물들, 즉 인스턴스를 특정 시점의 객체와 객체 사이의 관계로 표현함. 럼바우 객체지향 분석 기법 에서 객체 모델링에 활용됨.

– 컴포넌트 다이어그램 : 실제 구현 모듈인 컴포넌트 간의 관계나 컴포넌트 간의 인터페이스 를 표현함. 구현단계에서 사용됨.

– 배치 다이어그램 : 결과물, 프로세스, 컴포넌트 등 물리적 요소들의 위치 를 표현함. 구현단계에서 사용됨.

– 복합체 구조 다이어그램 : 클래스나 컴포넌트가 복합 구조를 갖는 경우 그 내부 구조를 표현함.

– 패키지 다이어그램 : 유스케이스나 클래스 등의 모델 요소들을 그룹화한 패키지들의 의존 관계 를 표현함. 실선으로 표현된 의존관계 를 사용.

행위 다이어그램

– 유스케이스 다이어그램 : 사용자의 요구를 분석하는 것으로, 기능 모델링 작업에 사용하며 개발될 시스템을 이용해 수행할 수 있는 기능을 사용자의 관점에서 표현한 것. 사용자(Actor) 와 사용 사례(Use Case) 로 구성됨.

– 시퀀스 다이어그램 : 상호 작용하는 시스템이나 객체들이 메시지 를 주고받으며 상호작용하는 과정을 그림으로 표현한 것. 생명선, 실행상자, 메시지 가 있음.

– 커뮤니케이션 다이어그램 : 동작에 참여하는 객체들이 주고받는 메시지와 객체들 간의 연관관계 를 표현한 것. 객체들 간의 관계를 Link 를 이용해 표현함.

– 상태 다이어그램 : 하나의 객체가 자신이 속한 클래스의 상태변화 혹은 다른 객체와의 상호작용에 따라 상태가 어떻게 변화하는지를 표현 함. 럼바우 객체 지향 분석기법에서 동적 모델링에 활용됨.

– 활동 다이어그램 : 시스템이 어떤 기능을 수행하는지 객체의 처리 로직이나 조건에 따른 처리의 흐름 을 순서에 따라 표현함. 자료 흐름도와 유사함. 액션과 액티비티가 있음.

– 상호작용 개요 다이어그램 : 상호작용 다이어그램 간의 제어 흐름을 표현함.

– 타이밍 다이어그램 : 객체 상태 변화와 시간 제약을 명시적으로 표현함.

스테레오 타입 : UML에서 표현하는 기본 기능외에 추가적인 기능을 표현하는 것.

– <> : 연결된 다른 UML 요소에 대해 포함 관계에 있는 경우.

– <> : 연결된 다른 UML 요소에 대해 확장 관계에 있는 경우.

– <> : 인터페이스를 정의하는 경우.

– <> : 예외를 정의하는 경우.

– <> : 생성자 역할을 수행하는 경우.

소프트웨어 개발

객체지향 분석 방법론 ★ ★ ★

Rumbaugh(럼바우) 방법 : 가장 일반적으로 사용되는 방법으로 분석 활동을 객체모델, 동적모델, 기능모델 로 나누어 수행하는 방법

Booch(부치) 방법 : 미시적(Micro) 개발 프로세스와 거시적(Macro) 개발 프로세스를 모두 사용하는 분석방법

Jacobson 방법 : Use Case를 강조하여 사용하는 분석방법

Coad와 Yourdon 방법 : E-R다이어그램을 사용하여 개체의 활동들을 데이터 모델링하는데 초점을 둔 기법

Wirfs-Brock 방법 : 분석과 설계간의 구분이 없고 고객 명세서를 평가해서 설계 작업까지 연속적으로 수행하는 기법

브룩스의 법칙 : 소프트웨어 개발 일정이 지연된다고 해서 새로운 개발 인력 을 진행 중인 프로젝트에 투입할 경우 작업 적응 기간과 부작용으로 인해 일정이 더욱 지연 된다는 법칙

객체지향설계 원칙[SOLID] ★ ★ ★

단일 책임 원칙 : 단 하나의 책임 만 가짐

개방-폐쇄 원칙 : 기존의 코드를 변경하지 않고 기능을 추가 할 수 있도록 설계

리스코프 치환 원칙 : 자식 클래스는 최소한 부모 클래스의 기능을 수행

인터페이스 분리 원칙 : 사용하지 않는 인터페이스 와 의존 관계를 맺거나 영향을 받지 않아야 함.

의존 역전 원칙 : 의존 관계 성립 시 추상성이 높은 클래스와 의존 관계 를 맺어야 함.

소프트웨어 아키텍처

소프트웨어 아키텍처 : 소프트웨어를 구성하는 요소들 간의 관계를 표현하는 시스템의 구조 또는 구조체다.

– 모듈화 : 시스템의 기능들을 모듈 단위로 나누는 것.

– 추상화 : 전체적이고 포괄적인 개념을 설계한 후 차례로 세분화하여 구체화 시켜 나가는 것.

– 단계적 분해 : 상위의 중요 개념으로부터 하위의 개념으로 구체화시키는 분할 기법.

객체 지향 ★ ★

객체 지향 : 각 요소들을 객체로 만든후 객체를 조립해서 소프트웨어를 개발하는 기법.

– 객체 : 데이터 와 이를 처리하기 위한 함수 를 묶어놓은 소프트웨어 모듈이다. 데이터를 가지며 상호작용의 수단으로 메시지를 사용 한다.

– 클래스 : 공통된 속성과 연산을 갖는 객체의 집합 . 클래스의 속한 각각의 객체를 인스턴스 라고 함.

– 메시지 : 객체들 간의 상호작용에 사용되는 수단으로, 객체의 동작 이나 연산 을 일으키는 외부의 요구사항 .

– 캡슐화 : 외부에서 접근을 제한하기 위해 인터페이스를 제외한 세부내용을 은닉 하는 것. 인터페이스가 단순해지고, 객체 간의 결합도가 낮아짐.

– 상속 : 상위 클래스의 모든 속성과 연산을 하위 클래스가 물려받는 것.

– 다형성 : 하나의 메시지에 대해 각각의 개체가 가지고 있는 고유한 방법으로 응답할 수 있는 능력.

LOC 기법 ★ ★ ★

– 노력(인월) = 개발 기간 x 투입 인원

= LOC / 1인당 월평균 생산 코드 라인수

– 개발 비용 = 노력(인월) X 단위 비용(1인당 월 평균 인건비)

– 개발 기간 = 노력(인월) / 투입 인원

– 생산성 = LOC / 노력(인월)

cocomo 소프트웨어 개발 모형 ★ ★

조직형 : 5만 라인(50KDSI)이하 의 소프트웨어를 개발하는 유형. 사무 처리용, 업무용, 과학용 응용 소프트웨어 개발에 적합

반분리형 : 조직형과 내장형의 중간형으로 30만(300KDSI) 라인 이하 의 소프트웨어를 개발하는 유형. 컴파일러, 인터프리터와 같은 유틸리티 개발에 적합

내장형 : 30만(300KDSI) 라인 이상 의 소프트웨어를 개발하는 유형. 신호기 제어 시스템, 미사일 유도 시스템, 실시간 처리 시스템 등의 시스템 프로그램 개발에 적합

수학적 산정 기법 ★ ★

COCOMO : 보헴이 제안한 것으로 LOC(원시 코드 라인 수)에 의한 비용 산정 기법

Putnam : 소프트웨어 생명주기의 전 과정 동안에 사용될 노력의 분포를 가정해주는 모형. 생명 주기 예측 모형이며, Rayleigh-Norden 곡선 의 노력 분포도를 기초로 함

기능 점수 : 알브레히트(Albrecht) 가 제안한 것으로, 소프트웨어의 기능을 증대시키는 요인 별로 가중치를 부여하고, 요인별 가중치를 합산 해 총 기능 점수를 산출해 기능 점수를 구한다.

비용 산정 자동화 추정 도구 ★ ★

SLIM : Rayleigh-Norden 곡선 과 Putnam 예측 모델 을 기초로 한 자동화 추정 도구

ESTIMACS : 다양한 프로젝트와 개인별 요소를 수용하도록 FP 모형을 기초로해 개발된 자동화 추정 도구

소프트웨어 개발 표준 ★ ★

CMMI(능력성숙도통합모델) : ISO15504(SPICE)를 준수하는 소프트웨어 개발 능력/성숙도 평가 및 프로세스 개선 활동의 지속적인 품질 개선 모델

SPICE(Software Process Improvement and Capability dEtermination) : 소프트웨어 개발 표준 중 소프트웨어의 품질 및 생산성 향상을 위해 소프트웨어 프로세스를 평가 및 개선하는 국제 표준 으로, 공식 명칭은 ISO/IEC 15504

소프트웨어 재사용 : 이미 개발되어 인정받은 소프트웨어를 다른 소프트웨어 개발이나 유지에 사용하는 것.

합성 중심 : 전자칩과 같은 소프트웨어 부품, 즉 블록을 만들어서 끼어 맞춰 소프트웨어를 완성시키는 방법. 블록 구성 방법이라고도 함.

생성 중심 : 추상화 형태로 써진 명세를 구체화해 프로그램을 만드는 방법으로, 패턴 구성 방법이라고도 함.

소프트웨어 재공학 : 기존시스템을 이용해 보다 나은 시스템을 구축하고, 새로운 기능을 추가하여 소프트웨어 성능을 향상시키는 것.

CASE(Computer Aided Software Engineering) : 소프트웨어 개발 과정에서 사용되는 요구 분석, 설계, 구현, 검사 및 디버깅 과정 전체 또는 일부를 컴퓨터와 전용 소프트웨어 도구를 사용해 자동화 하는것.

소프트웨어 개발 프레임워크 특성[모재확제] ★ ★ ★ ★

모듈화 : 프레임워크는 캡슐화 를 통해 모듈화를 강화 하고 설계 및 구현의 변경에 따른 영향을 최소화함으로서 소프트웨어의 품질을 향상시킴. 프레임 워크는 개발 표준에 의한 모듈화로 인해 유지보수가 용이함.

재사용성 : 프레임워크는 재사용 가능한 모듈들을 제공 함으로 예산 절감, 생산성 향상 , 품질 보증이 가능함.

확장성 : 프레임워크는 다형성을 통한 인터페이스 확장 이 가능해 다양한 형태와 기능을 가진 애플리케이션 개발이 가능함.

제어의 역전 : 개발자가 관리하고 통제해야하는 객체들의 제어를 프레임워크에 넘김 으로서 생산성을 향상 시킴.

* 전체적으로 생산성+ 품질+

소프트웨어 개발 방법론 ★ ★

소프트웨어 개발 방법론 : 소프트웨어 개발, 유지보수 등에 필요한 여러 가지 일들의 수행 방법과 이러한 일들을 효율적으로 수행하려는 과정에서 필요한 각종 기법 및 도구를 체계적으로 정리해 표준화 한것.[구정객컴제]

– 구조적 방법론 : 사용자 요구사항을 파악해 문서화하는 처리 중심의 방법론

– 정보공학 방법론 : 계획, 분석, 설계, 구축에 정형화된 기법들을 통합 및 적용하는 자료 중심의 방법론

– 객체지향 방법론 : 객체들을 조립해서 필요한 소프트웨어를 구현하는 방법론

– 컴포넌트 기반 방법론 : 기존의 시스템이나 소프트웨어를 구성하는 컴포넌트를 조합해 하나의 새로운 애플리케이션을 만드는 방법론

– 제품 계열 방법론 : 제품에 적용하고 싶은 공통된 기능을 정의해 개발하는 방법론

테일러링(Tailoring) : 프로젝트의 특성과 필요 에 따라 소프트웨어 개발 프로세스, 기법, 산출물 등을 비즈니스 적으로 또는 기술적인 요구에 맞도록 최적화 하는 과정 및 방법론

프로젝트 일정 계획 ★ ★ ★

– PERT(프로그램 평가 및 검토 기술) : 프로젝트에 필요한 전체작업의 상호 관계를 표시 하는 네트워크

– CPM(임계 경로 기법) : 프로젝트 완성에 필요한 작업을 나열하고 작업에 필요한 소요 기간을 예측하는데 사용하는 기법

– 간트 차트 : 프로젝트의 각 작업들이 언제 시작하고, 언제 종료되는지에 대한 작업 일정을 막대 도표를 이용해 표시하는 프로젝트 일정표.

데이터베이스 요약

데이터베이스 ★ ★ ★ ★

공동으로 사용될 데이터를 중복을 배제 하여 통합 하고, 저장장치에 저장해 항상 사용할 수 있도록 운영하는 운영 데이터[통저운공]

– 통합된 데이터 : 자료의 중복을 배제 한 데이터의 모임

– 저장된 데이터 : 컴퓨터가 접근할 수 있는 저장 매체에 저장 된 자료

– 운영 데이터 : 조직의 고유한 업무를 수행 하는데 반드시 필요한 자료

– 공용 데이터 : 여러 응용시스템들이 공동으로 소유 하고 유지하는 자료

DBMS : 사용자의 요구에 따라 정보를 생성해주고, 데이터를 관리해주는 소프트웨어[정조제]

– 정의 기능 : 모든 응용 프로그램들이 요구하는 데이터 구조를 지원하기 위해 데이터베이스에 저장될 데이터의 형과 구조에 대한 정의, 이용방식, 제약 조건 등을 명시 하는 기능

– 조작 기능 : 데이터 검색, 갱신, 삽입, 삭제 등을 체계적으로 처리하기 위해 사용자와 데이터베이스 사이의 인터페이스 수단을 제공 하는 기능

– 제어 기능 : 데이터베이스를 접근하는 갱신, 삽입, 삭제 작업이 정확하게 수행 되어 데이터의 무결성이 유지 되도록 제어하는 기능

스키마 : 데이터베이스의 구조 와 제약 조건 에 관한 전반적인 기술을 명세 한 것.[외개내]

– 외부 스키마 : 사용자나 응용 프로그래머가 각 개인의 입장에서 필요로하는 데이터베이스의 논리적 구조 를 정의한 것

– 개념 스키마 : 데이터베이스의 전체적인 논리적 구조. 하나만 존재 함.

– 내부 스키마 : 물리적 저장장치의 입장에서 본 데이터베이스 구조. 실제로 저장될 레코드 형식, 물리적 순 서를 나타냄.

데이터베이스 설계시 고려사항[무일회보효데] ★ ★ ★

– 무결성 : 삽입, 삭제, 갱신 연산 후에도 정해진 제약조건을 항상 만족 해야 함.

– 일관성 : 특정 질의에 대한 응답이 항상 일정 해야 함.

– 회복 : 장애가 발생했을 때 장애 발생 직전의 상태로 복구 되어야 함.

– 보안 : 불법적인 데이터 노출 또는 변경이나 손실로부터 보호

– 효율성 : 응단 시간의 단축, 시스템의 생산성 , 저장공간의 최적화 가 가능해야함.

– 데이터베이스 확장 : 운영에 영향을 주지 않으면서 지속적으로 데이터를 추가 할 수 있어야 함.

데이터베이스 설계 순서[요개논물구] ★ ★ ★

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

– 개념적 설계 : 현실 세계를 추상적 개념 으로 표현, 개념 스키마 모델링 , 트랜잭션 모델링

– 논리적 설계 : 개념 스키마를 평가 및 정제 , 트랜잭션 인터페이스 설계

– 물리적 설계 : 데이터베이스 파일의 저장 구조 및 액세스 경로 결정 , 저장 레코드의 형식, 순서, 접근 경로

데이터 모델 ★ ★ ★

데이터 모델 : 현실 세계의 정보들을 컴퓨터에 표현하기 위해 단순화, 추상화 하여 체계적으로 표현한 개념적 모형 .[구연제]

– 구조 : 논리적으로 표현된 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질 표현

– 연산 : 데이터베이스에 저장된 실제 데이터를 처리 하는 작업에 대한 명세 이며 조작 하는 기본 도구

– 제약 조건 : 실제 저장되는 데이터의 논리적인 제약 조건.

개념적 데이터 모델 : 현실 세계에 대한 인간의 이해를 돕기 위해 현실 세계에 대한 인식을 추상적 개념 으로 표현 하는 과정. 대표적으로 E-R모델 이 있음.

논리적 데이터 모델 : 개념적 모델링 과정에서 얻은 개념적 구조를 컴퓨터가 이해하고 처리 할 수 있는 컴퓨터 세계의 환경 에 맞도록 변화하는 과정. 관계 모델, 계층 모델, 네트워크 모델 로 구분.

E-R 모델 : 개체와 개체 간의 관계를 기본 요소로 이용해 현실 세계의 무질서한 데이터를 개념적인 논리 데이터로 표현 하기 위한 방법. 피터 첸 에 의해 제안.

– 사각형 : 개체(엔티티) 타입

– 마름모 : 관계 타입

– 타원 : 속성 타입

관계형 데이터베이스 ★

관계형 데이터베이스 : 2차원적인 표 를 이용해 데이터 상호 관계를 정의 하는 데이터베이스. E.F Codd 에 의해 제안.

– 도메인 : 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자 값들의 집합 .

– 관계형 데이터 모델 : 2차원적인 표를 이용해 데이터 상호 관계 를 정의하는 DB 구조.

DBMS 필수 기능 ★ ★

DCL(데이터 제어 언어)의 기능 : 보안, 무결성, 장애회복, 병행 수행 제어등을 정의하는데 사용하는 언어.

– COMMIT : 실제 물리 디스크에 저장. DB조작 작업이 정상적으로 완료되었음을 관리자에게 알려줌.

– ROLLBACK : 작업이 비정상적으로 종료되었을 때 원래의 상태로 복구

– GRANT : 사용자의 사용 권한을 부여

– REVOKE : 사용자의 사용 권한을 취소.

– SAVEPOINT : 트랜잭션 내에 ROLLBACK 할 위치인 저장점 을 지점.

EX) GRANT 권한리스트 ON 개체 TO 사용자 / REVOKE GRANT OPTION FOR 권한 리스트 ON 개체 FROM 사용자

정규화 관련 ★ ★ ★ ★

이상 현상 : 릴레이션 조작시 데이터들이 불필요하게 중복되어 예기치 않게 발생하는 곤란한 현상이며, 데이터의 중복성으로 인해 릴레이션을 조작할때 발생하는 비합리적인 현상[삽입,삭제,갱신]

비정규화 : 정규화된 엔티티 , 속성, 관계에 대해 성능 향상 과 개발 운영의 단순화를 위해 중복, 분리, 통합 (그룹핑)을 수행하는 데이터 모델링 기법

정규화 : 관계형 데이터베이스의 설계 에서 중복을 최소화 할 수 있도록 데이터를 구조화 하여 각 릴레이션에서 이상현상이 생기지 않도록 하는 데이터 모델링 기법

정규화 과정[도부이결다조] ★ ★ ★ ★

1NF : 릴레이션에 속한 모든 도메인이 원자값만으로 되어 있는 정규형. 릴레이션의 모든 속성값이 원자값으로만 되어 있는 정규형

2NF : 릴레이션 R이 1NF고, 기본키가 아닌 모든 속성이 기본키에 대해 완전 함수적 종속을 만족하는 정규형(부분적 함수 종속 제거)

3NF : 릴레이션 R이 2NF이고, 기본키가 아닌 모든 속성이 기본키에 대해 이행적 종속을 만족하지 않는 정규형(A-B이고, B->C일 때 A->C를 만족하지 않음)(이행적 함수 종속 제거)

BCNF : 릴레이션 R에서 결정자가 모두 후보키인 정규형. 모든 BCNF가 종속성을 보존하는 것은 아님(결정자이면서 후보키가 아닌 것 제거)

4NF : 릴레이션 R에 다치 종속 A->>B가 성립하는 경우, R의 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형

5NF : 릴레이션 R의 모든 조인 종속이 R의 후보키를 통해서만 성립되는 정규형

함수적 종속 : X->Y 관계에서 X가 결정자이고, Y가 종속자다.

데이터 관련 ★ ★ ★

관계 대수 : 관계형 데이터베이스에서 원하는 정보와 그 정보를 어떻게 유도하는 가를 기술하고, 관계로 표현된 데이터를 취급하는 대수적인 연산 체계 이자 절차적 정형언어 이다.

– Select б : 릴레이션의 주어진 조건을 만족하는 튜플을 선택하는 연산. 수평 연산.

– Project π : 단항 연산으로 릴레이션에서 참조하고자 하는 어트리뷰트를 선택하여 분리해 내는 연산. 수직 연산

– Join >< : 두 릴레이션 간의 에트리뷰트 값이 동일한 튜플을 연결하는 연산 - Division ÷ : 두 개의 릴레이션 A와 B가 있을 때 B의 릴레이션의 모든 조건을 만족하는 경우의 튜플들을 릴레이션 A에서 분리해 내어 프로젝션하는 연산 일반 집합 연산자 ★ ★ ★ - 합집합 U : 이항 연산으로 관계성이 있는 두 개의 릴레이션을 합집합하여 하나의 릴레이션을 만들어 내는 연산 - 교집합 ∩ : 이항 연산으로 관계성이 있는 두개의 릴레이션에서 중복되어 있는 내용을 선택하여 새로운 릴레이션을 만들어 내는 연산 - 차집합 - : 이항 연산으로 관계성이 있는 두개의 릴레이션이 있을 때 그 중 하나의 릴레이션에서 또 다른 릴레이션의 내용과 겹치는 내용을 제거해서 새로운 릴레이션을 생성하는 연산 - 카티션 프로덕트 X : 이항 연산으로 두 릴레이션의 현재 투플로 구성 가능한 모든 조합 만드는 연산 관계 해석 : 관계 데이터의 연산을 표현하는 방법. 술어 해석 에 기반을 둠. 키 ★ ★ 후보키 : 속성들 중에서 튜플을 유일하게 식별하기 위해 사용 되는 속성들의 부분 집합. 유일성과 최소성을 모두 만족. - 유일성 : 하나의 키 값으로 하나의 튜플만을 유일하게 식별 할 수 있어야 함. - 최소성 : 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 최소의 속성으로 구성 되어야 함. 기본키 : 후보키 중에서 특별하게 선정된 메인 키. 대체키 : 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키 슈퍼키 : 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키. 릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족 하지만, 최소성은 만족 하지 못함. 외래키 : 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합. 시스템 카탈로그 ★ ★ 데이터베이스에 저장되어 있는 모든 데이터 개체들의 관한 정보나 명세에 대한 정보가 수록 되어 있는, DBMS가 생성하고 유지하는 데이터베이스 내의 테이블들의 집합체 - 메타 데이터 : 시스템 카탈로그에 저장된 정보 - 데이터 디렉터리 : 데이터 사전에 수록된 데이터에 접근하는데 필요한 정보를 관리, 유지하는 시스템 트랜잭션의 특성[원일독영] ★ ★ ★ ★ Atomicity(원자성) : 트랜잭션의 연산은 데이터베이스에 모두 반영 되도록 완료(Commit) 되든지, 아니면 전혀 반영 되지 않도록 복구(Rollback) 되어야 한다 Consistency(일관성) : 트랜잭션은 언제나 일관성 있는 결과 를 가져와야 한다. 시스템이 가지고 있는 고정 요소는 트랜잭션 수행 전 과 트랜잭션 수행 완료의 상태가 같아야 한다. Isolation(독립성) : 둘 이상의 트랜잭션이 동시에 병행 실행 되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어들 수 없다 . 수행중인 트랜잭션은 완전히 완료될 때까지 다른 트랜잭션에서 수행 결과를 참조할 수 없다. Durability(영속성) : 성공적으로 완료된 트랜잭션 결과는 시스템에 고장나더라도 영구적으로 반영 되어야 한다. 트랜잭션 관련 ★ ★ ★ 병행 제어 : 다중 프로그램의 이점을 활용해 동시에 여러 개의 트랜잭션을 병행수행할 때 동시에 실행되는 트랜잭션들이 데이터베이스의 일관성을 파괴하지 않도록 트랜잭션 간의 상호작용을 제어 하는 것. - 로킹 : 트랜잭션들이 어떤 로킹 단위를 액세스 하기 전에 LOCK을 요청해서 LOCK이 허락되어야만 그 로킹 단위를 액세스 할 수 있도록 하는 기법. 액세스를 상호 배타적으로 함. - 타임스탬프 순서 : 시간표를 부여 해 부여된 시간에 따라 트랜잭션 작업을 수행 하는 기법. 트랜잭션 간의 처리 순서를 미리 선택하는 기법들 중에 가장 보편적인 방법. - 최적 병행수행 : 병행 수행 하고자 하는 트랜잭션이 판독 전용 트랜잭션 일 경우, 트랜잭션 간의 충돌률이 매우 낮아 이 트랜잭션은 시스템의 상태를 일관성 있게 유지 함. - 다중 버전 기법 : 타임 스탬프 의 개념을 이용하는 기법. 갱신될 때 마다 버전을 부여해 관리 함. * 로킹 단위 : 병행 제어에서 한꺼번에 로킹할 수 있는 개체의 크기 를 의미. 로킹 단위가 크면 로크 수가 작아 로킹 오버헤드와 데이터베이스 공유도가 감소함. 로킹 단위가 작아지면 병행성 수준이 높아짐. 고급 데이터베이스 ★ ★ 데이터 웨어하우스 : 급장하는 대량의 데이터를 효과적으로 분석해 정보화 하고 이를 여러 계층의 사용자들이 효율적으로 사용할 수 있도록 한 데이터베이스 데이터 마트 : 전사적으로 구축된 데이터 웨어하우스로부터 특정 주제나 부서 중심으로 구축 된 소규모 단일 주제의 데이터 웨어하우스 데이터 마이닝 : 데이터 웨어하우스에 저장된 데이터 집합에서 사용자의 요구에 따라 유용하고 가능성 있는 정보를 발견하기 위한 기법 OLAP(Online Analytical Processing) : 다차원으로 이루어진 데이터로부터 통계적인 요약정보를 분석해 의사 결정에 활용 하는 방식 OLTP(Online Transaction Processing) : 온라인 업무 처리 형태의 하나로 네트워크 상의 여러 이용자가 실시간으로 데이터베이스의 데이터를 갱신하거나 검색하는 등의 단위 작업을 처리 하는 방식 tpmC : DB기반 OLTP 미들웨어 시스템 서비스를 위한 H/W 성능을 측정 하기 위한 대표적 방법으로, 1분간의 최대 처리 건수 를 나타냄 옵티마이저 : SQL 을 가장 빠르고 효율적으로 수행할 최적(최저비용)의 처리경로를 생성 해주는 DBMS 내부의 핵심 엔진 무결성 ★ ★ 개체 무결성 : 기본 테이블의 기본키를 구성하는 어떤 속성도 Null 값이나 중복값을 가질 수 없다 는 규정 도메인 무결성 : 주어진 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정. 참조 무결성 : 외래키 값은 Null이거나 참조 릴레이션의 기본키 값과 동일 해야 함. 즉 릴레이션은 참조할 수 없는 외래키를 가질 수 없다 는 규정 사용자 정의 무결성 : 속성 값들이 사용자가 정의한 제약조건에 만족해야 한다는 규정 NULL 무결성 : 릴레이션의 특정 속성 값이 NULL이 될 수 없도록 하는 규정 고유 무결성 : 릴레이션의 특정 속성에 대해 각 튜플이 갖는 속성 값들이 서로 달라야 한다는 규정 키 무결성 : 하나의 릴레이션에는 적어도 하나의 키가 존재해야 한다는 규정 관계 무결성 : 릴레이션에 어느 한 튜플의 삽입 가능 여부 또는 한 릴레이션과 다른 릴레이션의 튜플들 사이의 관계에 대한 적절성 여부를 지정한 규정 SQL 응용 ★ ★ ★ 프로시저 구성 : DECLARE/ BEGIN/ END/ CONTROL/ SQL/ EXCEPTION/ TRANSACTION [디비엔컨SET] -> 절차형 SQL문을 활용해 사전에 정의해놓은 SQL문을 호출할 경우 특정 기능을 수행하는 트랜잭션 언어

사용자 정의함수 구성 : DECLARE / BEGIN / END / CONTROL / SQL / EXCEPTION/ RETURN [디비엔컨SER]

-> 사용자가 정의해 SQL문 처리 수행 후 단일 값으로 반환하는 절차형 SQL

트리거 구성 : DECLARE / EVENT / BEGIN /END / CONTROL / SQL / EXCEPTION [디이비엔컨SE]

-> 특정 테이블에 수정, 삭제, 삽입 등의 데이터 이벤트 발생시 자동으로 DBMS에서 실행되도록 구현된 프로그램

그룹 함수 ★ ★

그룹 함수 : 소 그룹 간의 중간 합계, 소계를 계산하여 산출하는 함수. GROUP BY 뒤에 쓰고, SUM, AVG, COUNT 와 같은 그룹함수와 함께 쓰임

– ROLLUP : 소계, 중간 집계 값 산출

– CUBE : 다차원 집계 생성

– GROUPING SET : 컬럼에 대한 개별 집계

– HAVING 조건 : ‘ GROUP BY 컬럼 HAVING 조건 ‘으로 쓰고, 그룹에 조건을 추가할 때 사용

윈도우 함수 ★ ★

윈도우 함수 : 데이터베이스를 사용한 온라인 분석 처리 용도로 사용 하기 위해 SQL에 추가한 함수. OVER 명령어 . GROUP BY 절을 이용하지 않고, 함수의 인수로 지정한 속성의 값을 집계함수의 인수로 지정한 속성이 집계할 범위가 되는데, 이를 윈도우라고 함.

ex) SELECT WINDOW_FUNCTION (ARGUMENTS) OVER ( [PARTITION BY 칼럼]] [ORDER BY 절] [WINDOWING 절] ) FROM 테이블 명;

– ROW_NUMBER() : 윈도우 별로 각 레코드에 대한 일련번호를 반환.

– RANK(): 윈도우별로 순위를 반환. 공동 순위를 반영.

– DENSE_RANK(): 윈도우별로 순위를 반환, 공동 순위를 무시하고 순위를 부여.

인덱스 ★ ★

데이터 레코드를 빠르게 접근하기 위해 키 값, 포인터 쌍으로 구성되는 데이터 구조 . 인덱스는 데이터가 저장된 물리적 구조와 밀접한 관계. 레코드가 저장된 물리적 구조에 접근하는 방법 제공. 인덱스를 통해 파일 레코드에 대한 액세스를 빠르게 수행. 인덱스가 없으면 TABLE SCAN (특정한 값을 찾기위해 모든 데이터 페이지를 확인)이 발생.

– 트리 기반 인덱스 : 인덱스를 저장하는 블록들이 트리 구조 를 이루는 것으로, 상용 DBMS에서는 트리 구조 기반의 B+트리 인덱스를 주로 활용

– 비트맵 인덱스 : 인덱스 컬럼의 데이터를 Bit 값인 0또는 1로 변환 해 인덱스 키로 사용하는 방법. 비트맵 인덱스의 목적은 키 값을 포함하는 로우의 주소를 제공하는 것. 분포도가 좋은 컬럼에 적합하며 성능 향상 효과를 기대할 수 있음.

– 함수 기반 인덱스 : 컬럼의 값 대신 컬럼에 특정 함수나 수식을 적용해 산출된 값을 사용 하는 것으로, B+ 트리 인덱스나 비트맵 인덱스를 생성해 사용. 데이터를 입력하거나 수정할 때 함수를 적용해야 하므로 부하가 발생할 수 있음.

– 도메인 인덱스 : 개발자가 필요한 인덱스를 직접 만들어 사용 하는 것. 확장형 인덱스(Extensible Index)라고도 함.

클러스터드 인덱스 : 인덱스 키의 순서에 따라 데이터가 정렬 되어 저장되는 방식

넌클러스터드 인덱스 : 인덱스의 키 값만 정렬되어 있고, 실제 데이터는 정렬되지 않은 방식 .

뷰(View) ★ ★ ★

사용자에게 접근이 허용된 자료만을 제한적 으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된 이름을 가지는 가상 테이블 . 뷰는 데이터 보정 작업, 처리 과정 시험 등 임시적인 작업을 위한 용도로 활용된다. 뷰는 가상 테이블이기 때문에 물리적 구현이 없고, 데이터의 논리적 독립성을 제공한다. CREATE와 DROP문 을 사용.

클러스터 ★ ★ ★

데이터 저장 시 데이터 액세스 효율을 향상 시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장 하는 물리적 저장 방법. 클러스터링된 테이블은 데이터 조회 속도 향상시키지만 데이터 입력, 수정, 삭제에 대한 성능은 저하 시킨다. 클러스터는 데이터의 분포도가 넓을수록 유리.

처리 범위가 넓은 경우엔 단일 테이블 클러스터링, 조인이 많이 발생하는 경우엔 다중 테이블 클러스터링.

파티션 설계 ★ ★ ★

대용량 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것 . 대용량 DB의 경우 중요한 몇 개의 테이블에만 집중되어 데이터가 증가되므로, 이런 테이블들을 작은 단위로 나눠 분산시키면 성능 저하를 방지할 뿐만 아니라 데이터 관리도 쉬워진다. 테이블이나 인덱스를 파티셔닝 하면 파티션키나 인덱스키에 따라 물리적으로 별도의 공간에 데이터가 저장된다. 데이터 처리는 테이블 단위로 이뤄지고, 데이터 저장은 파티션 별로 수행된다. 범위(Range) , 해시(Hash), 합성(Composite)

분산 데이터베이스 ★ ★ ★

논리적으로는 하나의 시스템에 속하지만 물리적(여러 지역으로)으로는 네트워크 를 통해 연결된 여러 개의 컴퓨터 사이트에 분산되어 있는 데이터베이스 [위중병장]

– 위치 투명성 : 액세스 하려는 데이터베이스의 실제 위치를 알 필요 없이 단지 데이터베이스의 논리적 명칭만으로 액세스 할 수 있음

– 중복 투명성 : 동일 데이터가 여러 곳에 중복 되어 있더라도 사용자는 마치 하나의 데이터만 존재하는 것처럼 사용 하고, 시스템은 자동으로 여러 자료에 대한 작업을 수행한다.

– 병행 투명성 : 분산 데이터베이스와 관련된 다수의 트랜잭션들이 동시에 실현되더라도 그 트랜잭션의 결과는 영향을 받지 않는다 .

– 장애 투명성 : 트랜잭션, DBMS, 네트워크, 컴퓨터 장애에도 불구하고 트랜잭션을 정확하게 처리 한다.

분산 설계 방법 ★

– 테이블 위치 분산 : 데이터베이스의 테이블을 각기 다른 서버에 분산시켜 배치

– 분할 : 테이블의 데이터를 분할 해 분산. 완전성, 재구성, 상호 중첩 배제.

– 할당 : 동일한 분할을 여러 개의 서버에 생성하는 분산 방법.

NoSQL(Not Only SQL) ★ ★ ★

전통적인 RDBMS와 다른 DBMS를 지칭하기 위한 용어로, 데이터 저장에 고정된 테이블 스키마가 필요하지 않고 조인 연산을 사용할 수 없으며, 수평적으로 확장이 가능한 DBMS으로, Basically Availale, Soft-state, Eventually Consistency의 특성이 있음

– 테이블 스키마 필요 X, 조인 연산 사용 X, 수평적 확장 O

CRUD Matrix : 프로세스와 데이터 사이에 관계 의존성 을 Create, Read, Update, Delete로 표현한 매트릭스

쿼리 요약 ★ ★ ★ ★ ★

INSERT INTO 테이블(컬럼1,컬럼2,…) VALUES(A,B,C)

UPDATE 테이블 SET A = B WHERE ~

DELETE FROM 테이블 WHERE ~

SELECT DISTINCT NVL(컬럼, 바꿀텍스트) WHERE 컬럼 BETWEEN a AND b(a와 b사이의 결과)

WHERE 컬럼 IN(a,b)(괄호 안에 값 중 일치하는 데이터를 출력)

DESCRIBE : 테이블 또는 뷰의 구조를 조회할때 사용되는 명령어

CREATE VIEW 뷰이름 (속성명) AS SELECT 컬럼 FROM 테이블 WHERE 조건

CREATE SCHEMA 스키마명 AUTHORIZATION 사용자_ID

CREATE DOMAIN 데이터 타입 DEFAULT 기본값 CONSTRAINT 제약조건명 CHECK (VALUE IN 범위값);

CREATE UNIQUE INDEX 고객번호_IDX ON 고객(고객번호 DESC);

CREATE TABLE 테이블명 (이름 VARCHAR(15) NOT NULL, 학번 CHAR(8), PRIMARY KEY(학번), FOREIGN KEY (전공) REFERENCES 학과(학과코드)

ON DELETE SET NULL(테이블에서 튜플이 삭제되면 NULL로 변경) ON UPDATE CASCADE(관련된 모든 속성도 같은 값으로 변경) ,

CONSTRAINT 생년월일제약 CHECK (생년월일>=’1980-01-01’));

ALTER TABLE 테이블명 ADD 속성명 / ALTER 속성명 / DROP COLUMN 속성명

테이블 수정 ★ ★ ★ ★ ★

컬럼 추가 : ALTER TABLE 테이블 ADD (컬럼, 속성)

컬럼 삭제 : ALTER TABLE 테이블 DROP COLUMN (컬럼명)

컬럼명 수정 : ALTER TABLE 테이블 RENAME COLUMN 기존 컬럼명 TO 새로운 컬럼명

제약 조건 : CONSTRAINT 제약조건이름 PRIMARY KEY (제약 컬럼)

회복 ★ ★ ★ ★

트랜잭션들을 수행하는 도중 장애 발생해 데이터베이스가 손상되었을 때 손상되기 이전의 정상 상태로 복구 하는 작업

– 연기 갱신 기법 : 트랜잭션이 성공적으로 완료될때까지 데이터베이스에 대한 실질적인 갱신을 연기 하는 방법. 트랜잭션의 부분 완료 시점에 LOG에 보관한 갱신 내용을 실제 데이터베이스에 기록함. REDO 작업만 가능 .

– 즉각 갱신 기법 : 트랜잭션이 데이터를 갱신하면 트랜잭션이 부분 완료되기 전이라도 즉시 실제 데이터베이스에 반영 하는 방법. 장애가 발생해 회복 작업을 할 경우를 대비해 갱신된 내용들을 LOG에 보관 시킴. REDO와 UNDO 모두 사용 가능 함.

– 그림자 페이지 대체 기법 : 갱신 이전의 데이터베이스를 일정 크기의 페이지 단위로 구성 해, 각 페이지마다 복사본인 그림자 페이지를 별도 보관 해 놓고, 실제 페이지를 대상으로 갱신 작업을 수행하다가 장애가 발생해 트랜잭션 작업을 ROLLBACK 시킬 때는 갱신 이후에 실제 페이지 부분을 그림자 페이지로 대체해 회복 시키는 방법.

– 검사점 기법 : 트랜잭션 실행 중 특정 단계에서 재실행 할 수 있도록 갱신 내용이나 시스템에 대한 상황 등에 관한 정보와 함께 검사점을 로그에 보관 해 두고, 장애 발생시 트랜잭션 전체를 철회하지 않고 검사점부터 회복 작업을 수행해 회복시간을 절약하는 방법.

데이터베이스 이중화 ★ ★

데이터베이스 이중화 : 서비스 중단이나 물리적 손상 발생시 이를 복구하기 위해 동일한 데이터베이스를 복제하여 관리하는 것.

– Eager 기법 : 트랜잭션 수행 중 데이터변경이 발생하면 이중화된 모든 데이터베이스에 즉시 전달 해 변경내용이 즉시 적용되도록 하는 기법.

– Lazy 기법 : 트랜잭션 수행이 종료되면 변경 사실을 새로운 트랜잭션에 작성 해 각 데이터베이스에 전달 되는 기법.

클러스터링 : 두대 이상의 서버를 하나의 서버처럼 운영하는 기술

– 고가용성 클러스터링 : 하나의 서버에 장애가 발생하면 다른 노드가 받아 처리해 서비스 중단을 방지.

– 병렬 처리 클러스터링 : 전체 처리율을 높이기 위해 하나의 작업을 여러개의 서버에서 분산해 처리하는 방식.

접근통제 ★ ★ ★

접근통제 : 데이터가 저장된 객체와 이를 사용하려는 주체 사이의 정보 흐름을 제한 하는 것.

– 임의 접근통제(DAC) : 데이터에 접근하는 사용자의 신원 에 따라 접근 권한을 부여하는 방식. 데이터 소유자 .

– 강제 접근통제(MAC) : 주체와 객체의 등급 을 비교해 접근 권한을 부여하는 방식. 시스템 .

– 역할기반 접근통제(RBAC) : 사용자의 역할 에 따라 접근 권한을 부여하는 방식. 중앙관리자 .

* 주체가 데이터 소유자=DAC, 시스템=MAC, 중앙관리자=RBAC입니다.

접근 통제 정책 ★

– 신분 기반 정책 : 주체나 그룹의 신분에 근거해 객체의 접근을 제한. IBP와 GBP가 있음.

– 규칙 기반 정책 : 주체가 갖는 권한에 근거해 객체의 접근을 제한하는 방법으로, MLP와 CBP가 있음.

– 역할 기반 정책 : GBP의 변형된 정책으로, 주체의 신분이 아니라 주체가 맡은 역할에 근거해 객체의 접근을 제한.

접근 통제 조건 ★

– 값 종속 통제 : 일반적으로 객체에 저장된 값에 상관없이 접근 통제를 동일하게 허용하지만, 객체에 저장된 값에 따라 다르게 접근 통제를 허용하는 경우에 사용

– 다중 사용자 통제 : 지정된 객체에 다수의 사용자가 동시에 접근을 요구하는 경우 사용.

– 컨텍스트 기반 통제 : 특정 시간, 네트워크 주소, 접근 경로, 인증 수준 등에 근거해 접근을 제어하는 방법.

– 감사 추적 : 사용자나 애플리케이션이 데이터베이스에 접근해 수행한 모든 활동을 기록 하는 기능.

인터페이스 구현

아키텍처 패턴 ★ ★ ★

아키텍처를 설계할 때 참조할 수 있는 전형적인 해결 방식 또는 예제

레이어 패턴 : 시스템을 계층으로 구분하여 구성하는 패턴

클라이언트-서버 패턴 : 하나의 서버 컴포넌트와 다수의 클라이언트 컴포넌트로 구성되는 패턴

파이프-필터 패턴 : 데이터 스트림 절차의 단계를 필터로 캡슐화해 파이프를 통해 전송하는 패턴

모델-뷰-컨트롤러 패턴 : MVC

기타 패턴

마스터-슬레이브 패턴 : 슬레이브 컴포넌트에서 처리된 결과물을 돌려받는 방식의 패턴

브로커 패턴 : 브로커가 요청에 맞는 컴포넌트와 사용자를 연결

피어-투-피어 패턴 : 하나의 컴포넌트가 클라이언트가 될수도, 서버가 될수도 있는 패턴

이벤트-버스 패턴 : 채널에 발행과 구독. Subscribe, Publish.

블랙보드 패턴 : 모든 컴포넌트들이 데이터 저장소와 블랙보드 컴포넌트에 접근이 가능한 패턴.

공통모듈 ★ ★ ★ ★ ★

공통모듈 : 여러 프로그램에서 공통으로 사용하는 모듈

공통모듈 명세기법 종류

정확성 : 시스템 구현시 해당 기능이 필요하다 는 것을 알수 있도록 정확히 작성

명확성 : 해당 기능을 이해할 때 중의적으로 해석하지 않도록 함

완전성 : 시스템 구현을 위해 필요한 모든 것 을 기술

일관성 : 공통 기능들 간 상호 충돌 이 발생하지 않도록 함

추적성 : 기능에 대한 요구사항 출처 , 관련 시스템 간의 관계를 파악.

재사용 : 이미 개발된 기능 들을 새로운 시스템 이나 기능 개발에 사용하기 적합하도록 최적화 함.

디자인 패턴 ★ ★ ★ ★ ★

생성 패턴

추상 팩토리 : 인터페이스 를 통해 서로 의존하는 객체들의 그룹으로 생성, 추상적 으로 표현.

빌더 : 분리된 인스턴스를 건축 하듯이 조합 해 객체를 생성

팩토리 메소드 : 상위 클래스에서 인터페이스만 정의하고 실제 생성은 서브클래스가 담당 함.

프로토타입 패턴 : 원본을 만들어놓고 원본 객체를 복사 해서 사용하는 패턴

싱글톤 : 전역 변수 를 사용하지 않고 객체를 하나만 생성하도록 해서 생성된 객체를 어디에서든지 참조할 수 있도록 만든 패턴

구조 패턴

어댑터 : 호환성이 없는 클래스 들을 다른 클래스가 이용 할 수 있도록 변환

브리지 : 구현부 에서 추상층 을 분리 해 서로가 독립적으로 확장

컴포지트 : 복합 객체 와 단일 객체 를 구분없이

데코레이터 : 객체 간의 결합 을 통해 기능을 확장

퍼싸드 : 복 잡한 기능의 서브클래스 의 상위에 인터페이스를 생성 해 간편하게 기능을 사용

플라이웨이트 : 인스턴스를 공유해 메모리 를 절약

프록시 : 접근이 어려운 객체 들 사이에서 인터페이스 역할

행위 패턴

책임 연쇄 : 객체가 둘 이상 존재해 한 객체가 처리하지 못하면 다음 객체 로 넘어가는 패턴

커맨드 : 요청에 사용되는 명령어 를 추상 클래스와 구체 클래스로 분리해 단순화

인터프리터 : 언어에 문법 표현 을 정의하는 패턴

반복자 : 접근이 잦은 객체 에 동일한 인터페이스를 사용하도록 하는 패턴

중재자 : 수많은 객체 간의 복잡한 상호작용을 캡슐화 해 객체로 정의하는 패턴

메멘토 : 특정 시점의 객체의 상태를 Crtl+z 와 같은 되돌리기 기능으로 해당 시점으로 돌리는 기능을 제공

옵저버 : 한 객체의 상태가 변화하면 변화한 상태를 다른 객체 에게 전달. 일대 다의 의존성을 정의. Publish, Subscribe

상태 : 객체의 상태에 따라 동일한 동작을 다르게 처리

전략 : 동일한 계열의 알고리즘 을 개별적으로 캡슐화해, 상호교환 할 수 있게 정의. 알고리즘.

템플릿 메소드 : 상위 클래스에서 골격 을 정의, 하위 클래스에서 세부처리를 구체화 함.

방문자 : 각 클래스 들의 데이터 구조에서 처리 기능을 분리 해 별도의 클래스로 구성.

미들웨어 ★ ★ ★

운영체제와 응용 프로그램, 서버와 클라이언트 사이에 다양한 서비스를 제공하는 소프트웨어

RPC : 원격 프로시저 를 로컬 프로시저 처럼 호출하는 미들웨어

MOM : 메시지 기반의 비동기형 메시지 를 전달하는 미들웨어

TP-Monitor : 온라인 트랜잭션 업무에서 트랜잭션을 처리, 감시 하는 미들웨어

ORB : 코바(CORBA) 표준 스펙을 구현한 객체 지향 미들 웨어

WAS : 사용자의 동적인 콘텐츠 를 처리하기 위한 미들웨어

웹 서비스 ★ ★ ★

UDDI : WSDL을 등록해 서비스와 서비스 제공자를 검색 하고 접근하는데 사용됨

WSDL : 웹 서비스명, 서비스 제공위치, 프로토콜 등 웹서비스에 대한 상세정보를 XML형식으로 명세 (구현)

인터페이스 보안 ★ ★ ★

IPSec : 네트워크 계층에서 IP 패킷 단위의 데이터 변조 방지, 은닉 기능 을 제공하는 보안 통신 규약

SSL(Secure Sockets Layer) : 애플리케이션 계층과 TCP/IP 계층 사이에서 인증, 암호화, 무결성 을 보장하는 공개키 기반의 보안 프로토콜. Certificate Authority(CA)라 불리는 서드 파티로부터 서버와 클라이언트를 인증하는데 사용됨.

S-HTTP : 클라이언트와 서버 간에 전송되는 모든 메시지를 암호화 하는 프로토콜

인터페이스 구현 검증 도구 ★ ★ ★

xUnit : Java(Junit), C++(Cppunit), .Net(Nunit) 등 다양한 언어를 지원하는 단위 테스트 프레임워크

STAF : 서비스 호출, 컴포넌트 재사용 등 다양한 환경을 지원하는 테스트 프레임워크로 각 테스트 대상 분산 환경에 데몬 을 사용해 테스트 대상 프로그램을 통해 테스트를 수행하고 통합해 자동화 하는 검증 도구

FitNess : 웹 기반 테스트케이스 설계, 실행, 결과 확인 등을 지원하는 테스트 프레임워크

NTAF : FitNess의 장점인 협업 기능 + STAF의 장점인 재사용 및 확장성을 통합한 NHN(Naver)의 테스트 자동화 프레임워크

Selenium : 다양한 브라우저 및 개발언어를 지원하는 웹 애플리케이션 테스트 프레임워크

Watir : Ruby 를 사용하는 애플리케이션 테스트 프레임워크

APM : 애플리케이션의 성능 관리를 위해 접속자, 자원 현황, 트랜잭션 수행 내역 등 다양한 모니터링 기능을 제공하는 도구

– 스카우터 : 애플리케이션 및 OS 자원에 대한 모니터링 기능 제공

– 제니퍼 : 개발부터 테스트, 오픈, 운영, 안정화 까지 전 단계에 걸쳐 모니터링 및 분석

화면 설계

UI 설계원칙 ★ ★ ★ ★ ★

직관성 : 누구나 쉽게 이해 하고 사용할 수 있어야 함

유효성 : 사용자의 목적 을 정확하고 완벽하게 달성 해야 함

학습성 : 누구나 쉽게 배우고 익힐 수 있어야 함

유연성 : 사용자의 요구사항을 최대한 수용 하고 실수를 최소화 해야 함

UI 설계 도구[와목스프유] ★ ★ ★ ★

와이어프레임 : 기획 단계에 초기에 제작하는 것. 페이지에 대한 개략적인 레이아웃이나 UI 요소등에 뼈대 를 설계. 각 페이지의 영역 구분, 콘텐츠, 텍스트 배치 등을 화면 단위로 설계.

– 종류 : 손 그림, 파워포인트, 키노트, 스케치, 일러스트, 포토샵 등

목업 : 디자인, 사용방법 설명, 평가 등을 위해 와이어 프레임보다 좀 더 실제 화면과 유사 하게 제작한 정적 인 형태의 모형. 시각적으로만 구성 요소를 배치

– 종류 : 파워 목업, 발사믹 목업

스토리보드 : 와이어프레임에 콘텐츠에 대한 설명, 페이지 간 이동 흐름(인터랙션) 을 추가한 문서. 디자이너와 개발자가 최종적으로 참고하는 구체적인 작업 지침서로, 정책, 프로세스 콘텐츠 구성, 와이어 프레임, 기능 정의 등 서비스 구축을 위한 모든 정보가 들어 있음. 상단이나 우측에는 제목, 작성자를 입력. 좌측에는 UI 화면, 우측에는 디스크립션(설명)을 기입

– 종류 : 파워포인트, 키노트 스케치, Axure

프로토타입 : 와이어프레임이나 스토리보드 등에 인터랙션을 적용함으로 실제 구현된것처럼 테스트가 가능 한 동적 인 형태의 모형.

– 종류 : HTML/css, Axure, Flinto, 네이버 프로토나우, 카카오 오븐 등

유스케이스 : 사용자 측면에서의 요구사항으로, 목표를 달성하기 위해 수행할 내용을 기술 . 사용자의 요구사항을 빠르게 파악함으로 프로젝트 초기에 시스템의 기능적인 요구를 결정하고 그 결과를 문서화함. 자연어로 작성된 사용자의 요구사항을 구조적으로 표현한 것 -> 다이어그램 으로 묘사.

소프트웨어 품질 요구사항[기신사효유이] ★ ★ ★

기능성 : 소프트웨어가 사용자의 요구사항을 정확하게 만족 하는 기능을 제공하는 여부 (정합성, 정확성, 상호운용성, 보안성, 호환성)

신뢰성 : 소프트웨어가 요구된 기능을 정확하고 일관되게 오류 없이 수행할 수 있는 정도(성숙성, 고장허용성, 회복성)

사용성 : 사용자와 컴퓨터 사이에 발생하는 어떠한 행위에 대하여 사용자가 정확하게 이해하고 사용하며, 향후 다시 사용하고 싶은 정도 (이해성, 학습성, 운용성, 친밀성)

효율성 : 사용자가 요구하는 기능을 할당된 시간 동안 한정된 자원 으로 얼마나 빨리 처리할 수 있는 정도(시간효율성, 자원효율성)

유지보수성 : 환경의 변화 또는 새로운 요구사항이 발생했을 때 소프트 웨어를 개선하거나 확장 할 수 있는 정도(분석성, 변경성, 안정성, 시험성)

이식성 : 소프트웨어가 다른 환경에서도 얼마나 쉽게 적용 (적응)할 수 있는 정도(적용성, 설치성, 대체성, 공존성)

애플리케이션 테스트 관리

애플리케이션 테스트 기본 원리 ★ ★ ★ ★ ★

파레토 법칙 : 애플리케이션의 20% 에 해당하는 코드의 전체 결함의 80% 가 발견되는 법칙

살충제 패러독스 : 동일한 테스트 케이스로 동일한 테스트를 반복 하면 더 이상 결함 이 발견되지 않음

오류 부재의 궤변 : 결함을 모두 제거 해도 사용자의 요구사항 을 만족하지 못하면 품질 이 높다고 말할 수 없음

프로그램 실행 여부에 따른 애플리케이션 테스트 ★

정적 테스트 : 프로그램을 실행하지 않고 명세서 나 소스 코드 대상으로 분석하는 테스트

동적 테스트 : 프로그램을 실행해 오류 를 찾는 테스트로, 소프트웨어 개발 모든 단계에서 테스트를 수행할 수 있음

테스트 기반 테스트 ★ ★

명세 기반 테스트 : 사용자 요구사항의 명세 를 빠짐 없이 테스트 케이스로

구조 기반 테스트 : 소프트웨어 내부의 논리 흐름 에 따라 테스트 케이스를 작성

경험 기반 테스트 : 유사 소프트웨어나 기술 등에 대한 테스터의 경험 을 기반

목적에 따른 테스트[회안강성구회병] ★ ★ ★ ★

회복 테스트 : 시스템에 여러가지 결함 을 주어 실패하도록 한 후 올바르게 복구 되는지 테스트

안전 테스트 : 시스템에 설치된 시스템 보호 도구가 불법적인 침입으로부터 시스템을 보호 할 수 있는지 테스트

강도 테스트 : 과도한 정보량이나 빈도 등을 부과 하여 과부하 시에도 소프트웨어가 정상적으로 실행되는지를 확인하는 테스트

성능 테스트 : 소프트웨어 실시간 성능 이나 전체적인 효율성을 진단하는 테스트로 소프트웨어의 응답시간, 처리량 등을 테스트한다.

구조 테스트 : 소프트웨어 내부의 논리적인 경로 , 소스 코드의 복잡도 등을 평가하는 테스트다.

회귀 테스트 : 소프트웨어 변경 또는 수정된 코드에 새로운 결함이 없음을 확인 하는 테스트다.

병행 테스트 : 동일한 데이터를 입력하여 수정 전과 수정 후 의 결과를 비교하는 테스트다.

화이트박스 테스트의 제어 구조 검사 ★

조건 검사 : 프로그램 모듈 내에 있는 논리적 조건 을 테스트하는 테스트 케이스 설계 기법

루프 검사 : 프로그램의 반복 구조 에 초점을 맞춰 실시하는 테스트 케이스 설계 기법

데이터 흐름 검사 : 프로그램에서 변수의 정의와 변수 사용의 위치에 초점 을 맞춰 실시하는 테스트 케이스 설계 기법

화이트 박스 테스트 검증 기준 ★ ★ ★ ★

구문 커버리지(Statement Coverage) : 테스트 스위트에 의해 실행된 구문이 몇 퍼센트인지 측정 하는 것. 다른 커버리지에 비해 가장 약함

결정 커버리지(Decision Coverage, Branch Coverage) : 테스트 스위트에 의해 실행된 결정 포인트 내의 전체 조건식이 최소한 참(True)이 한번, 그리고 거짓(False)이 한번의 값을 갖는지 측정하여 퍼센트로 표현하는 것. 개별 조건식의 개수와 상관없이 테스트 케이스의 최소 개수는 2 개. 조건, 조건/결정 커버리지에 비해 약함

조건 커버리지(Condition Coverage) : 전체 조건식의 결과와 관계없이 각 개별 조건식이 참 한번, 거짓 한번을 모두 갖도록 개별 조건식을 조합하는 것. 결정 커버리지 보다 강력한 형태의 커버리지.

조건/결정 커버리지(Condition/Decision Coverage) : 전체 조건식의 결과가 참 한번, 거짓 한번을 갖도록 각 개별 조건식을 조합하는데, 이때 각 개별 조건식도 참 한번, 거짓 한번을 모두 갖도록 개별 조건식을 조합하는 것으로 결정 커버리지와 조건 커버리지를 포함하는 커버리지.

변경조건/결정 커버리지(Modify Condition/Decision Coverage) : Mc/DC는 각 개별 조건식이 다른 개별 조건식에 무관하게 전체 조건식의 결과에 독립적으로 영향을 주도록 함으로써 조건/결정 커버리지를 향상시킨 것. 결정 커버리지, 조건/결정 커버리지 보다 강력

다중조건 커버리지(Multiple Condition Coverage) : 결정 포인트 내에 있는 모든 개별 조건식의 모든 가능한 논리적 조합을 고려한 가장 강력한 논리적 수준의 100% 커버리지를 보장.

블랙박스 테스트 기법[동경결상 유분페] ★ ★ ★ ★ ★

동등 분할 테스트 : 입력 데이터(입력 값) 의 영역을 유사한 도메인별로 유효 값 / 무효 값을 그룹핑하여 대푯값 테스트 케이스를 도출하여 테스트하는 기법

경계 값 분석 테스트 : 동기분할 후 경계 값 부분에서 오류 발생 확률이 높기에 경계 값을 포함하여 테스트 케이스를 설계하여 테스트하는 기법(범위)

결정 테이블 테스트 : 요구사항의 논리와 발생조건을 테이블 형태로 나열 하여, 조건과 행위를 모두 조합하여 테스트하는 기법

결정 테이블 테스트

상태전이 테스트 : 테스트 대상/시스템이나 객체의 상태 를 구분하고, 이벤트에 의해 어느 한 상태에서 다른 상태로 전이되는 경우의 수를 수행하는 테스트 기법

상태전이 테스트

유스케이스 테스트 : 시스템이 실제 사용되는 유스케이스로 모델링 되어 있을 때 프로세스 흐름을 기반으로 테스트 케이스를 명세화하여 수행하는 테스트 기법

분류트리 테스트 : SW의 일부 또는 전체를 트리 구조 로 분석 및 표현하여 테스트케이스를 설계하여 테스트하는 기법

분류 트리 테스트

페어와이즈 테스트 : Test Data 값들 간에 최소한 한 번 씩을 조합 하는 방식이며, 이는 커버해야 할 기능적 범위를 모든 조합에 비해 상대적으로 적은 양의 테스트 세트를 구성하기 위한 테스트 기법

페어와이즈 테스트

테스트 오라클 ★ ★ ★ ★ ★

참 오라클 : 모든 테스트 케이스의 입력 값 에 대해 기대하는 결과를 제공하는 오라클로, 발생된 모든 오류를 검출 할 수 있음

샘플링 오라클 : 특정한 몇몇 테스트 케이스의 입력 값 들에 대해서만 기대하는 결과를 제공하는 오라클

추정 오라클 : 샘플링 오라클을 개선한 오라클로, 특정 테스트 케이스의 입력값에 대해 기대하는 결과를 제공하고, 나머지 입력 값들에 대해서는 추정으로 처리 하는 오라클

일관성 검사 오라클 : 애플리케이션의 변경이 있을 때, 테스트 케이스의 수행 전과 후의 결과 값이 동일 한지를 확인하는 오라클

테스트 하네스 구성요소 ★ ★ ★ ★ ★

* 테스트 하네스 : 애플리케이션의 컴포넌트 및 모듈을 테스트 하는 환경의 일부분으로 테스트를 지원하기 위해 생성된 코드와 데이터를 의미 하며, 테스트가 실행될 환경을 시뮬레이션하며 컴포넌트 및 모듈이 정상적으로 테스트 되도록 하는 도구. 코드 개발자 가 작성하는 요소임.

테스트 드라이버 : 테스트 대상의 하위 모듈을 호출 하고, 파라미터를 전달 하고, 모듈 테스트 후 결과를 도출하는 도구

테스트 스텁 : 제어 모듈이 호출하는 타 모듈의 기능을 단순히 수행하는 도구 로, 일시적으로 필요한 조건 만을 가지고 있는 테스트용 모듈

테스트 슈트 : 테스트 대상 컴포넌트나 모듈, 시스템에 사용되는 테스트 케이스의 집합

테스트 케이스 : 사용자의 요구사항을 정확하게 준수했는지 확인하기 위한 입력 값, 실행 조건, 기대 결과 등으로 만들어진 테스트 항목의 명세서

테스트 스크립트 : 자동화된 테스트 실행 절차 에 대한 명세서

목 오브젝트 : 사전에 사용자의 행위를 조건부로 입력 해두면, 그 상황에 맞는 예정된 행위를 수행하는 객체

연계 테스트 ★ ★

구축된 연계시스템과 연계 시스템의 구성요소가 정상적으로 동작하는지 확인하는 활동

연계 테스트 케이스 작성 : 연계 시스템 간의 데이터 및 프로세스의 흐름을 분석해 필요한 테스트 항목을 도출하는 과정

연계 테스트 환경 구축 : 테스트의 일정, 방법, 절차, 소요 시간 등을 송수신 기관과의 협의를 통해 결정하는 것

연계 테스트 수행 : 연계 응용 프로그램을 실행해 연계 테스트 케이스의 시험 항목 및 처리 절차 등을 실제로 진행하는 것

연계 테스트 수행 결과 검증 : 예상 결과와 동일한지를 확인 하는 것

애플리케이션 테스트 ★ ★ ★

소프트웨어 개발 단계 : 요구사항 -> 분석 -> 설계 -> 구현

테스트 단계 : 단위 테스트 -> 통합 테스트 -> 시스템 테스트 -> 인수 테스트[단통시인]

개발 단계에 따른 애플리케이션 테스트 ★ ★ ★

단위 테스트 : 코딩 직후 소프트웨어 설계의 최소 단위인 모듈 이나 컴포넌트 에 초점을 맞춰 테스트 하는 것. 인터페이스, 외부적 입출력, 자료 구조, 독립적 기초 경로, 오류 처리 경로, 경계 조건 등을 검사. 사용자의 요구사항을 기반으로 한 기능성 테스트를 최우선으로 수행. 구조 기반 테스트와 명세 기반 테스트로 나뉘고, 주로 구조 기반 테스트 를 수행

통합 테스트 : 단위 테스트가 완료된 모듈들을 결합해 하나의 시스템으로 완성 시키는 과정에서의 테스트며, 과정에서 발생하는 오류 및 결함을 찾는 테스트

– 빅뱅 통합 테스트 : 모듈 간의 상호 인터페이스를 고려하지 않고, 모듈을 한꺼번에 결합시켜 테스트 하는 방법.

– 하향식 통합 테스트 : 상위에서 하위 모듈로. 스텁(제어 모듈의 종속 모듈). 깊이 우선 통합, 넓이 우선 통합 사용

– 상향식 통합 테스트 : 하위에서 상위 모듈로. 클러스터(주요 제어 모듈과 관련된 종속 모듈의 그룹)

– 회귀 테스팅 : 통합 테스트로 인해 변경된 모듈이나 컴포넌트에 새로운 오류가 있는지 확인하는 테스트

시스템 테스트 : 개발된 소프트웨어가 해당 컴퓨터 시스템에서 완벽하게 수행 되는가 를 점검하는 테스트

인수 테스트 : 개발한 소프트웨어가 사용자의 요구사항을 충족하는지에 중점을 두고 테스트 – 알파 테스트 : 개발자의 장소에서 개발자 앞에서, 통제된 환경에서 사용자와 함께 테스트 – 베타 테스트 : 최종적으로 선정된 여러 명의 사용자가 직접 테스트

암호화 및 소프트웨어 보안 요약

SECURE SDLC ★ ★ ★

SECURE SDLC : 보안상 안전한 소프트웨어를 개발하기 위해 SDLC에 보안 강화를 위한 프로세스를 포함 한 것.

– CLASP 방법론 : 개념 관점, 역할기반 관점, 활동평가 관점, 활동구현 관점, 취약성 관점 등의 활동중심, 역할 기반의 프로세스로 구성된 집합체로서 이미 운영중인 시스템에 적용하기 적당한 소프트웨어 개발 보안 방법론

– SDL 방법론 : 마이크로소프트 사 에서 안전한 소프트웨어 개발을 위해 기존의 SDLC를 개선한 방법론.

– SEVEN TOUCHPOINTS : 실무적으로 검증 된 개발 보안 방법론 중 하나로 SW 보안의 모범 사례 를 SDLC에 통합한 소프트웨어 개발 보안 주기 방법론

소프트웨어 개발 보안 3대 요소[기무가인부] ★ ★ ★ ★ ★

기밀성 : 인가되지 않은 사용자 와 애플리케이션의 접근에 따른 정보 노출 차단

무결성 : 완전성, 일관성 . 데이터 훼손 및 파손이 되지 않아야 함.

가용성 : 지속적인 서비스를 유지하며, 인가받은 사용자는 언제나 시스템 정보와 자원을 사용 할 수 있음.

인증 : 자원을 사용하려는 사용자를 확인하는 모든 행위.

부인 방지 : 데이터를 송수신한 자가 송수신 사실을 부인할 수 없도록 송수신 증거 를 제공.

시큐어 코딩 : 구현 단계에서 발생할 수 있는 보안 취약점들을 최소화 하기 위해 보안 요소들을 고려해 코딩 하는 것

입력 데이터 검증 및 표현 ★ ★ ★

SQL 삽입 : 웹 응용 프로그램에 SQL을 삽입 해 내부 데이터베이스 서버의 데이터를 유출 및 변조 , 관리자 인증을 우회하는 보안 약점

크로스사이트 스크립팅(XSS) : 웹 페이지에 악의적인 스크립트를 삽입 해 방문자들의 정보를 탈취하거나, 비정상적인 기능 수행을 유발하는 보안 약점

메모리 버퍼 오버플로우 : 연속된 메모리 공간을 사용하는 프로그램에서 할당된 메모리의 범위를 넘어선 위치에 자료를 읽거나 쓰려고할때 발생하는 보안 약점. 적절한 버퍼의 크기를 설정하고, 설정된 범위의 메모리 내에서 올바르게 읽고 쓰도록 함으로 예방.

암호 알고리즘 ★ ★ ★ ★

개인키 암호화 기법

동일한 키로 데이터를 암호화하고 복호화하는 암호화 기법

Stream 암호화 방식 : 평문과 동일한 길이의 스트림을 생성하여 비트 단위로 암호화 ex) LFSR, RC4

Block 암호화 방식 : 한 번에 하나의 데이터 블록을 암호화 ex) DES, SEED, AES, ARIA

Hash 단방향 암호화 방식 : 임의의 길이의 입력 데이터나 메시지를 고정된 길이의 값이나 키로 변한하는 것 : SHA, MD5, N-NASH, SNEFRU

[Stream]

LFSR(Linear Feedback Shift Register) : 현재 상태의 선형 연산을 통해 다음 상태를 생성하는 레지스터, XOR함수를 사용함

RC4(Rivest Cipher 4) : 평문 1바이트와 암호키 1바이트가 XOR 처리 되어 암호문 1바이트를 생성. 옥텟 단위 기반. 로널드 라이베스트가 제작. 전송 보안 계층(TLS/SSL)이나 WEB 등의 여러 프로토콜에 사용

[Block]

DES : 미국 NBS 에서 발표한 개인키 암호화 알고리즘. 블록크기는 64비트 이며 키길이는 56비트 . 비공개키 알고리즘.

SEED : 한국인터넷진흥원(KISA) 에서 개발한 블록 암호화 알고리즘. 블록 크기 128비트 이며, 키 길이에 따라 128, 256 으로 분류

AES : 미국 표준 기술 연구소(NIST) 에서 발표한 개인키 암호화 알고리즘. 블록크기는 128비트 이며, 키 길이에 따라 128, 192, 256 으로 분류

ARIA : 국가 정보원 과 산학연협회 가 개발한 블록 암호화 알고리즘. 학계, 연구기관, 정부의 영문 앞글자로 구성되었으며 블록 크기는 128비트, 키 길이에 따라 128, 192, 256 으로 분류

RSA : MIT의 라이베스트, 샤미르, 애들먼에 의해 제안된 공개키 암호화 알고리즘. 큰 숫자를 소인수 분해 하기 어렵다는 것에 기반해 만들어짐.

[Hash]

SHA(Secure Hash Algorithm) : 미국 국가 안보국(NSA) 이 1993년 처음으로 설계 했으며, 미국 국가 표준 으로 지정된 해시 암호화 알고리즘

MD5(Message-Digest algorithm 5) : 128비트 암호화 해시 함수 로, RFC 1321로 지정되어 있으며, 주로 프로그램이나 파일이 원본 그대로인지를 확인하는 무결성 검사 등에 사용된다. 1991년에 로널드 라이베스트가 예전에 쓰이던 MD4를 대체하기 위해 고안함.

HAS-160 : 국내 표준 전자서명 알고리즘인 KCDSA에 사용되는 160비트 암호학적 해시 함수로 SHA-1과 비슷한 구조를 가지고 있음.

N-NASH : 1989년 일본의 전신전화주식회사(NTT)에서 발표한 암호화 해시 함수. 블록 크기, 키 길이가 모두 128비트임.

SNEFRU : 1990년 R.C.Merkle가 발표한 해시 함수. 32비트 프로세서 에서 구현을 용이하게 할 목적으로 개발됨.

서비스 거부 공격 유형 ★ ★ ★ ★ ★

Ping of Death : Ping 명령을 전송 할 때 패킷의 크기를 인터넷 프로토콜 허용 범위(65,536 바이트) 이상 으로 전송해 공격 대상의 네트워크를 마비 시킴

Smurfing(스머핑) : IP 나 ICMP의 특성을 악용 해 엄청난 양의 데이터를 한 사이트에 집중적으로 보냄으로 네트워크 상태를 불능으로 만듬. ICMP Echo 패킷 을 직접 브로드 캐스팅, 바운스 사이트 라는 제 3의 사이트를 이용함.

SYN Flooding : TCP는 신뢰성 있는 전송을 위해 3-way-handshake를 거친 후에 데이터를 전송하는데, SYN Flooding은 공격자가 가상의 클라이언트로 위장해 3-way-handshake 과정을 의도적으로 중단시킴 으로 공격 대상지인 서버가 대기 상태에 놓여 정상적인 서비스를 수행하지 못하게 만듬

TearDrop : 데이터의 송수신 과정에서 패킷의 크기가 커 여러 개로 분할되어 전송될 때, 분할 순서를 알 수 있도록 Fragment Offset 값을 함께 전송하는데, TearDrop은 이 Offset값을 변경 시켜 수신 측에서 패킷을 재조합할 때 오류로 인한 과부하를 초래 함

Land Attack : 패킷을 전송할 때 송신 IP 주소 와 수신 IP 주소를 모두 공격 대상의 IP 주소 로 하여 공격대상에게 전송하는 것. 공격 대상은 송신 측이 자신이기 때문에 자신에게 무한히 응답 하게 된다.

DDos : 여러 곳에 분산된 공격 지점에서 한 곳의 서버에 대해 분산 서비스 공격을 수행하는 것으로, 네트워크에서 취약점이 있는 호스트들을 탐색한 후 이들 호스트에 분산 서비스 공격용 툴을 설치해 에이전트로 만든 후 DDoS 공격에 이용함

– Trin00 : 가장 초기 형태의 데몬으로 UDP Flooding 공격을 수행

– TFN : UDP Flooding + TCP SYN Flood 공격 + ICMP 응답 요청 + 스머핑 공격 수행

(니누푸) (훔쳐보기+획득+권한및탈취)

* 스니핑 : 네트워크 상에서 자신이 아닌 다른 상대방들의 패킷 교환을 훔쳐보는 행위(중요정보 훔쳐보기)

* 스누핑 : 네트워크 상에서 떠도는 중요 정보를 몰래 획득하는 행위.(중요정보 염탐 + 획득)

* 스푸핑 : 외부의 악의적인 네트워크 침입자가 웹사이트를 구성해 사용자들의 방문을 유도, 인터넷 프로토콜인 TCP/IP의 구조적 결함을 이용해 사용자의 시스템 권한을 획득한 뒤, 정보를 빼앗아 가는 해킹 수법(시스템 권한을 획득해 정보를 탈취)

네트워크 침해 공격 관련 용어 ★ ★ ★

스미싱 : 각종 행사 안내 등 문자 메시지 를 이용해 사용자의 개인 신용 정보를 빼내는 수법

스피어 피싱 : 특정 대상을 선정한 후 그 대상에게 일반적인 이메일로 위장한 메일 을 지속적으로 발송해 발송 메일의 본문 링크나 첨부된 파일을 클릭하도록 유도해 개인정보 탈취

APT(지능형 지속 위협) : 다양한 IT 기술과 방식들을 이용해 조직적으로 특정 기업 이나 조직 네트워크에 침투 해 활동 거점을 마련한 뒤 때를 기다리면서 보안을 무력화하고 정보를 수집한 다음 외부로 빼돌리는 공격

무작위 대입 공격(Brute Force Attack) : 암호화된 문서의 암호키를 찾아내기 위해 적용가능한 모든 값을 대입 해 공격하는 방식

SQL 삽입 공격 : 전문 스캐너 프로그램 혹 봇넷 등을 이용해 웹사이트를 무차별적으로 공격하는 과정에서 취약한 사이트가 발견되면 데이터베이스 등의 데이터를 조작 하는 공격 방식

크로스사이트 스크립팅(XSS) : 웹페이지에 악의적인 스크립트를 삽입 해 방문자들의 정보를 탈취하거나 비정상적인 기능 수행을 유발하는 공격

메모리 버퍼 오버플로우 : 연속된 메모리 공간을 사용하는 프로그램에서 할당된 메모리의 범위를 넘어선 위치 에서 자료를 읽거나 쓰려고 할 때 발생하는 보안 약점.

정보 보안 침해 공격 관련 요소 ★ ★ ★

좀비 PC : 악성 코드에 감염되 다른 프로그램이나 컴퓨터를 조종하도록 만들어진 컴퓨터. C&C(Command & Control) 서버의 제어를 받아 DDoS공격에 이용됨

C&C 서버 : 해커가 원격지에서 감염된 좀비 PC에 명령을 내리고 악성코드를 제어하기 위한 용도로 사용하는 서버

봇넷 : 악성 프로그램에 감염되어 악의적인 의도로 사용될 수 있는 다수의 컴퓨터들이 네트워크로 연결된 형태

웜 : 네트워크를 연속적으로 자신을 복제해 시스템의 부하를 높임으로 결국 시스템을 다운 시키는 바이러스의 일종.

제로 데이 공격 : 보안 취약점이 발견되었을 때 발견된 취약점의 존재 자체가 널리 공표되기도 전에 해당 취약점을 통해 이루어지는 보안 공격 으로 공격의 신속성을 의미

키로거 공격 : 컴퓨터 사용자의 키보드 움직임을 탐지해 ID, 패스워드 같은 개인정보를 빼가는 해킹 공격

백도어 : 시스템 설계자가 서비스 기술자나 유지보수 프로그램 작성자의 액세스 편의를 위해 시스템 보안을 제거해 만들어 놓은 비밀 통로

– 백도어 탐지 방법 : 무결성 검사, 로그 분석, SetUID 파일 검사[무로S]

트로이 목마 : 정상적인 기능을 하는 프로그램으로 위장해 프로그램 내에 숨어 있다가 해당프로그램이 동작할때 활성화 되어 부작용을 일으키는 것. 자기 복제 능력은 없음.

그외 보안 관련 ★ ★

침입 탐지 시스템(IDS) : 컴퓨터 시스템의 비정상적인 사용, 오용, 남용 등을 실시간으로 탐지 하는 시스템. 오용 탐지, 이상 탐지가 있음.

침입 방지 시스템(IPS) : 방화벽과 침입 탐지 시스템을 결합한 것으로, 비정상적인 트래픽을 능동적으로 차단 하고 격리하는 등의 방어 조치를 취하는 보안 솔루션.

데이터 유출 방지(DLP) : 내부 정보의 외부 유출을 방지하는 보안 솔루션 으로 사내 직원이 이용하는 PC와 네트워크 상의 모든 정보를 검색하고 사용자의 행위를 탐지 , 통제해 사전 유출 방지함.

VPN : 공중 네트워크 와 암호화 기술을 이용 해 사용자가 마치 자신의 전용 회선을 사용 하는 것처럼 해주는 보안 솔루션.

NAC(Network Access Control) : 네트워크에 접속하는 내부 PC의 MAC주소 를 IP 관리 시스템에 등록한 후 일관된 보안 관리 기능을 제공 하는 보안 솔루션.

ESM(Enterprise Security Management) : 다양한 장비에서 발생하는 로그 및 보안 이벤트를 통합해 관리 하는 보안 솔루션.

일방향 암호화 : 암호화 수행을 하지만 절대로 복호화가 불가능한 알고리즘

솔트(Salt) : 일방향 해시함수 에서 다이제스트 를 생성할 경우 추가되는 임의의 문자열

세션 하이재킹 : 세션을 가로채서 정상적인 인증 절차를 무시하고 불법적으로 시스템을 접속 하는 것.

tripwire : 크래커 가 침입해 백도어 를 만들어 놓거나 설정 파일을 변경했을때 분석하는 도구

Secure DB : 커널 암호화 방식으로 데이터베이스 파일을 직접 암호화 하고, 접근 제어와 감사 기록이 추가된 데이터베이스 보안 강화 기술

코드 난독화 : 역공학을 통한 공격을 막기 위해 프로그램 소스를 알아보기 힘든 코드로 바꾸는 기술

CWE(Common Weakness Enumeration) : 소프트웨어 취약점 및 취약점에 대한 범주 시스템 으로, 소프트웨어의 결함을 이해하고 이러한 결함을 식별·수정 및 방지하는데 사용할 수 있는 자동화된 도구를 작성하는 시스템

각종 재해 관련 ★ ★ ★

BCP(Business Continuity Planning) : BCP는 각종 재해, 장애, 재난으로부터 위기관리를 기반 으로 재해복구, 업무복구 및 재개, 비상계획 등을 통해 비즈니스 연속성을 보장 하는 체계이다.

RTO(Recovery Time Objective) : RTO는 업무중단 시점부터 업무가 복구되어 다시 가동 될 때까지의 시간 이다. 재해 시 복구 목표 시간의 선정

RPO(Recovery Point Objective) : RPO는 업무중단 시점부터 데이터가 복구되어 다시 정상가동 될 때 데이터의 손실 허용 시점 이다. 재해 시 복구 목표 지점의 선정

BIA(Business Impact Analysis) : BIA는 장애나 재해로 인해 운영상의 주요 손실을 입을 것을 가정하여 시간흐름에 따른 영향도 및 손실평가를 조사 하는 BCP를 구축하기 위한 비즈니스 영향 분석 이다.

DRS(Disaster Recovery System) : DRS는 재해복구계획의 원활한 수행을 지원하기 위하여 평상시에 확보하여 두는 인적,물적 자원 및 이들에 대한 지속적인 관리체계가 통합된 재해 복구 센터 이다.

포인터 파이썬 정리 ★ ★ ★ ★ ★

포인터 정리

int a = 50; // 임의의 메모리를 a라는 이름의 변수로 지정, 50을 저장 int *b = &a; // *b는 50이 저장된 a의 주소를 기억하는 포인터다. // &연산자는 해당 변수의 주소를 가져오는 연산자다. // *b = &a는 즉 *b 포인터를 초기화 하는 과정으로, *b 포인터에 a의 주소를 저장한다. int *b = *b + 20; // b가 가리키는 곳의 값(*b, 즉 a)에 20을 더한다. b에 저장된 주소가 a의 주소이고, // *연산자는 해당 포인터가 가리키는 값을 가져오는 것이기 때문에 실제로 a에 저장된 50을 뜻한다. // 50 + 20의 결과를 *b에 저장, 즉 a변수에 저장해 a변수의 값은 50에서 70으로 변경된다. printf(“%d, %d

“, a, *b); // a값과 *b값을 출력. 같은 곳을 가리키고 있기 때문에 70, 70으로 출력된다. char *s; // 문자형 변수가 저장된 곳의 주소를 기억할 포인터를 선언 s = “gilbut”; // s는 주소를 기억하는 포인트 변수이기 때문에 gilbut라는 문자열이 메모리 어딘가에 저장이 되고, // 그 메모리의 주소를 s가 기억한다. for (int i = 0; i<6; i+= 2){ printf("%c, ", s[i]); // s[0]의 문자를 출력 => g printf(“%c, “, *(s + i)); // s의 주소가 임의로 1000이라고 가정하면, s + i(0,1,2,…)로 // 즉 s의 주소가 1000, 1001, 1002씩 증가하게 된다. // char의 메모리는 1 byte이기 때문에 1000~1006까지 메모리에 문자열이 저장이 되어 // 1000 g / 1001 i / 1002 l / 1003 b / 1004 u / 1005 t // 해당 메모리값의 * 연산자가 들어가기 때문에 그 메모리 주소의 값을 가져오게 된다. printf(“%s

“, s + i); // 출력 연산자가 %s이기 때문에 s+i인 위치(1000, 1001, 1002, …)에서 // 문자열을 끝까지 출력한다. i가 2씩 증가하기 때문에 gilbut, lbut, ut // 이런식으로 출력 된다. }

파이썬 정리

x = input(‘입력 : ‘) // x에 xyz321를 입력했다고 가정 a = [ ‘abc123’, ‘def456’, ‘ghi789’] # a는 리스트로 저장되며 순차적으로 a[0], a[1], a[2]에 저장된다. a.append(x) # append 함수는 리스트 마지막에 x의 값을 추가하는 의미이며, # a[3] 위치에 xyz321이 저장된다. a.remove(‘def456’) # remove 함수는 리스트에 저장되어 있는 def456을 제거하는 의미이며, # 리스트에는 [‘abc123’, ‘ghi789’, ‘xyz321’]이 남게 된다. print(a[1][-3:], a[2][:-3], sep = ‘,’) # a[1][-3:]과 a[2][:-3]의 요소를 , 문자로 슬라이스해서 출력하라는 의미다. # a[1]에 저장된 문자열인 ghi789의 -3위치부터 마지막 요소까지 출력한다. # g h i 7 8 9 # -6 -5 -4 -3 -2 -1 # 즉, 789가 출력. # a[2]에 저장된 문자열인 xyz321의 맨 처음요소부터 -4위치까지 출력한다. # x y z 3 2 1 # -6 -5 -4 -3 -2 -1 # 즉, xyz가 출력. # 결과적으로 789,xyz가 출력된다. for i in range(3, 6) print(i, end = ‘ ‘) # 출력이 끝나고 끝 문자에 공백 문자를 추가한다는 의미이다. # 3에서부터 6-1(5)까지 이므로 3 4 5가 출력된다.

프로토콜 네트워크 요약

인터넷 ★ ★

서브네팅 : 네트워크 주소를 다시 여러 개의 작은 네트워크로 나눠 사용 하는 것. 4바이트의 구분하기 위해 나는 비트를 서브넷 마스크 라고 함.

IPv6 : 16비트씩 8부분, 총 128비트 로 구성됨. 각 부분을 16진수로 표현하고 콜론으로 구분. 인증성, 기밀성, 데이터 무결성 으로 보안문제 해결. 유 니캐스트, 멀 티캐스트, 애 니캐스트.

도메인 네임(DNS) : 숫자로 된 IP주소 를 사람이 이해하기 쉬운 문자 형태(이름) 로 표현한 것.

OSI 참조 모델[물데네전세표응] ★ ★

물리 계층 : 전송에 필요한 두 장치간의 실제 접속 과 절단 등 기계적 , 전기적, 기능적, 절차적 특성에 대한 규칙을 정의함. RS-232C, Bit

데이터 링크 계층 : 두 개의 인접한 개방 시스템 들 간에 신뢰성 있고 효율적인 정보 전송을 할 수 있도록 함. 흐름제어, 프레임 동기화, 오류 제어, 순서 제어. 이더넷, Frame

네트워크 계층 : 경로 설정(Routing) , 트래픽 제어, 패킷 정보 전송. IP/ICMP, 패킷

전송 계층 : 종단 시스템(End-to-End) 간의 전송 연결 설정, 데이터 전송, 연결 해제, 주소 설정, 다중화(데이터의 분활과 재조립), 오류 제어, 흐름 제어. TCP/UDP, 세그먼트

세션 계층 : 송수신 측 간의 관련성을 유지, 대화 제어 , 대화(회화) 구성 및 동기 제어, 데이터 교환 관리 기능. SSH/TLS

표현 계층 : 코드 변환 , 데이터 암호화 , 데이터 압축 , 구문 검색, 정보 형식 변환, 문맥 관리 기능. JPEG/MPEG

응용 계층 : 사용자가 OSI 환경에 접근할 수 있도록 응용 프로세스 간의 정보 교환 , 전자 사서함 , 파일 전송 , 가상 터미널 등의 서비스를 제공. HTTP/FTP

프로토콜 ★ ★ ★ ★ ★

서로 다른 기기 간의 데이터 교환을 원활하게 수행할 수 있도록 표준화 시켜 놓은 통신 규약.

프로토콜의 기본 요소

– 구문 : 전송하고자 하는 데이터의 형식, 부호화, 신호레벨 등을 규정 함

– 의미 : 두 기기 간의 효율적이고 정확한 정보 전송을 위한 협조 사항 과 유로 관리를 위한 제어 정보를 규정 함

– 시간 : 두 기기 간의 통신 속도, 메시지의 순서 제어 등을 규정함

응용 계층의 주요 프로토콜 ★ ★

SMTP : 전자 우편 을 교환하는 서비스

SMNP : TCP/IP의 네트워크 관리 프로토콜로, 라우터나 허브 등 네트워크 기기의 네트워크 정보를 네트워크 관리 시스템에 보내는데 사용 되는 표준 통신 규약

DNS : 도메인 네임 을 IP 주소로 매핑 하는 시스템

전송 계층의 주요 프로토콜 ★ ★ ★ ★

TCP : 양방향 연결형 서비스 제공. 스트림 위주의 전달. 신뢰성 있는 경로 확립. 순서 제어, 오류 제어, 흐름 제어 .

UDP : 연결을 설정하지 않는 비연결형 서비스 제공. 단순한 헤더 구조.

RTCP : RTP 패킷의 전송 품질을 제어 하기 위한 프로토콜. 세션에 참여한 각 참여자들에게 주기적으로 제어 정보 전송 . 하위 프로토콜은 데이터 패킷과 제어 패킷의 다중화를 제공. 최소한의 제어와 인증 기능 제공.

* LDAP(Lightweight Directory Access Protocol) : TCP/IP 위에서 조직화 되고 비슷한 특성을 가진 객체들의 모인인 디렉터리 서비스 를 조회하고 수정하는 응용 프로토콜

* DHCP(Dynamic Host Configuration Protocol) : 네트워크상에서 동적 으로 IP 주소 및 기타 구성정보 등을 부여/관리하는 프로토콜로서, PC의 수가 많거나 PC 자체 변동사항이 많은 경우 IP 설정이 자동으로 되기 때문에 효율적으로 사용 가능하고, IP를 자동으로 할당 해주기 때문에 IP 충돌을 막는데 사용 하는 프로토콜

인터넷 계층의 주요 프로토콜 ★ ★ ★ ★ ★

IP(Internet Protocol) : 전송할 데이터에 주소를 지정하고 경로를 설정. 비연결형인 데이터 그램 방식을 사용, 신뢰성 보장되지 않음

ICMP : IP와 조합해 통신 중에 발생하는 오류의 처리 와 전송 경로 변경 등을 위한 제어 메시지를 관리 하는 역할

IGMP : 멀티 캐스트를 지원하는 호스트나 라우터 사이에서 멀티캐스트 그룹 유지 를 위해 사용하며, 화상회의, IPTV에서 활용. 그룹가입, 멤버쉽관리 멤버쉽 응답 등의 기능

ARP : 호스트의 IP 주소 를 물리적 주소(MAC Address) 로 변환

RARP : ARP와 반대 로 물리적 주소를 IP 주소로 변환

네트워크 액세스 계층의 주요 프로토콜 ★ ★ ★

Ethernet(IEEE 802.3) : CSMA/CD 방식의 LAN

IEEE 802 : LAN을 위한 표준 프로토콜

HDLC : 비트 위주의 데이터 링크 제어 프로토콜

X.25 : 패킷 교환망 을 통한 DTE와 DCE(모뎀) 간의 인터페이스를 제공 하는 프로토콜이며 전기 통신 국제기구 ITU-T에서 관리 감독하는 프로토콜. 패킷이라고 불리는 데이터 블록을 사용

RS-232C : 공중 전화 교환망(PSTN) 을 통한 DTE와 DCE 간의 인터페이스 를 제공하는 프로토콜이며 미국의 EIA(Electronic Industries Association)에 의해 인터페이스가 규격화 됨

네트워크 구축 방법 ★ ★

스타형 : 중앙에 중앙 컴퓨터가 있고, 이를 중심으로 단말장치들이 연결되는 중앙 집중식의 네트워크 구성 형태.

링형 : 컴퓨터와 단말장치들을 서로 이웃하는 것끼리 연결 시킨 포인트 투 포인트 방식의 구성 형태.

버스형 : 한 개의 통신 회선에 여러 대의 단말장치가 연결되어 있는 형태

계층형 : 중앙 컴퓨터와 일정 지역의 단말장치까지는 하나의 통신회선으로 연결시키고, 이웃하는 단말 장치는 일정지역내에 설치된 중간 단말 장치로부터 다시 연결시키는 형태. 분산 처리 시스템을 구성 하는 방식.

망형 : 모든 지점의 컴퓨터와 단말 장치를 서로 연결한 형태. ” 회선수 = n(n-1) / 2 ” “포트수 = n-1”

NAT(네트워크 주소 변환) : 한 개의 정식 IP 주소 에 다량의 가상 사설 IP 주소를 할당 및 연결하는 기능. IP 마스커레이드 이용.

라우팅 프로토콜 ★ ★ ★ ★ ★

경로제어 : 송수신 측 간에 전송 경로중에서 최적패킷 교환 경로를 결정 하는 기능. 경로 제어표를 참조. 라우터에 의해 수행

내부 라우팅 프로토콜(IGP) : 하나의 자율시스템(AS)내에 라우팅에 사용되는 프로토콜

– RIP : 현재 가장 널리 사용되는 라우팅 프로토콜로, 소규모 동종의 네트워크 내에서 효율적인 방법이며, 최대 홉수를 15로 제한 함. 거리벡터 방식 라우팅 프로토콜. 최단 경로 탐색에 Bellman-Ford 알고리즘 사용. 라우팅 정보를 30초 마다 네트워크내 모든 라우터에게 알림

– OSPF : RIP의 단점을 해결해 새로운 기능을 지원하는 인터넷 프로토콜로 대규모 네트워크 내에서 사용. 라우팅 정보에 노드 간의 거리 정보, 링크 상태 정보를 실시간으로 반영 . 자신을 기준으로 한 다익스트라 알고리즘 기반으로 최단 경로를 찾는 라우팅 (Link-State) 프로토콜. 하나의 자율 시스템에서 동작하면서 내부 라우팅 프로토콜의 그룹에 도달.

외부 라우팅 프로토콜

– EGP : 자율 시스템(AS) 간의 라우팅 프로토콜로, 게이트 웨이 간의 라우팅에 사용 되는 프로토콜

– BGP : 자율시스템 간의 라우팅 프로토콜로 EGP의 단점을 보완하기 위해 만들어짐. BGP 라우터들이 연결될 때에 전체 경로 제어표(라우팅 테이블) 를 교환.

네트워크 관련 장비 ★ ★

허브 : 한 사무실이나 가까운 거리의 컴퓨터들을 연결하는 장치로, 각 회선을 통합적으로 관리하며, 신호 증폭 기능을 하는 리피터 역할도 포함함

리피터 : 물리계층의 장비로, 전송되는 신호가 왜곡 되거나 약해질 경우 원래의 신호 형태로 재생함

브리지 : 데이터 링크 계층의 장비로 LAN과 LAN을 연결하거나 LAN 안에서 컴퓨터 그룹을 연결함

라우터 : 네트워크 계층의 장비로 LAN과 LAN의 연결 및 경로 선택, 서로 다른 LAN이나 LAN과 WAN을 연결함

게이트웨이 : 전 계층의 프로토콜 구조가 전혀 다른 네트워크의 연결을 수행함

스위치 : 브리지와 같이 LAN과 LAN을 연결하여 훨씬 더 큰 LAN을 만드는 장치

네트워크 제어 ★ ★ ★

트래픽 제어 : 네트워크의 보호, 성능 유지, 네트워크 자원의 효율적인 이용을 위해 전송되는 패킷의 흐름 또는 그 양을 조절하는 기능.

흐름 제어 : 네트워크 내의 원활한 흐름을 위해 송수신 측 사이에 전송되는 패킷의 양이나 속도를 규제하는 기능.

– 정지 대기 : 수신 측의 확인 신호를 받은 후에 다음 패킷을 전송하는 방식

– 슬라이딩 윈도우 : 수신 통지를 이용해 송신 데이터의 양을 조절 하는 방식. 패킷의 최대치가 윈도우 사이즈를 의미.

폭주 제어 : 네트워크 내의 패킷 수를 조절 해 네트워크의 오버 플로를 방지 하는 기능을 함.

기타 네트워크 ★ ★ ★

CDN(Contents Delivery Network) : 게임 클라이언트 나 콘텐츠 를 효율적으로 전달하기 위해 여러 노드를 가진 네트워크에 데이터를 저장해 사용자에게 제공하는 시스템

SDN(Software Defined Network) : 개방형 API(오픈 플로우)기반 으로 네트워크 장비의 트래픽 경로를 지정하는 컨트롤 플레인 과 트래픽 전송을 수행하는 데이터 플레인을 분리 해 네트워크 트래픽을 중앙 집중적으로 관리하는 기술

오픈 플로우 : 가상화 기반 네트워크 기술로 네트워크 장치의 컨트롤 플레인 과 데이터 플레인 간의 연계 및 제어 를 담당하는 개방형 표준 인터페이스.

오버레이 네트워크 : 가상화 기반 네트워크 기술로 기존의 물리적, 논리적으로 존재하는 토폴로지 위에 또 다시 다른 필요에 의해 논리적인 토폴로지를 재구성해 성능을 개선하고, 다양한 기능을 제공하는 네트워크

VPN : 인터넷과 같은 공중망 에서 터널링, 암호화 기법 등을 사용해 전용 회선으로 연결된 사설망과 같은 서비스를 제공하는 가상의 네트워크다.

백본망 : 다양한 네트워크를 상호 연결하는 컴퓨터 네트워크의 일부로서, 각기 다른 LAN이나 부분망 간에 정보를 교환하기 위한 경로를 제공 하는 망

QoS(Quality Of Service) : 다른 프로그램, 사용자, 데이터 흐름 등에 우선순위 를 정하며, 데이터 전송에 특정 수준의 성능(속도)를 보장 하기 위한 능력

ATM(비동기 전송모드) : 광대역 서비스의 다양한 특수성을 수용하기 위한 광대역 종합정보통신망(B-ISDN)의 실현을 목적으로 제안되었으며, 회선 교환 방식과 패킷교환방식의 장점을 통합시킨 연결 지향적 송성을 지닌 패킷교환(스위칭) 프로토콜

SECURE OS ★ ★

SECURE OS : OS에 내재된 보안 취약점을 해소하기 위해 보안 기능을 갖춘 커널을 이식 해 외부의 침입으로 부터 시스템 자원을 보호하는 운영체제 . TCB 기반 참조 모니터의 개념을 구현 하고 집행.

참조 모니터 : 보호 대상 객체에 대한 접근 통제를 수행하는 추상 머신 이며, 보안 커널 데이터베이스를 참조 해 객체애 다한 접근 허가 여부를 결정

DB 관련 신기술 ★ ★ ★

하둡 : 오픈 소스를 기반으로 한 분산 컴퓨팅 플랫폼. 가상화된 대형 스토리지 형성, 거대한 데이터 세트를 병렬로 처리할 수 있도록 개발된 자바 소프트웨어 프레임워크

맵 리듀스 : 대용량 데이터를 분산 처리 하기 위한 목적으로 개발된 프로그래밍 모델

타조 : 오픈 소스 기반 분산 컴퓨팅 플랫폼인 아파치 하둡 기반의 분산 데이터 웨어하우스 프로젝트

운영체제

배치 프로그램

배치 프로그램 : 사용자와 상호작용 없이 일련의 작업을 작업 단위로 묶어 정기적으로 반복 수행하는 일괄 처리 방법

– 스프링 배치 : Spring Source 사와 Accenture 사가 2007년 공동 개발한 오픈 소스 프레임 워크 . 로그 관리, 추적, 트랜잭션 관리, 작업처리 통계, 재시작 기능 제공

– 쿼츠 스케줄러 : 스프링 프레임워크로 개발되는 오픈 소스 라이브러리 로 수행할 작업과 수행시간을 관리하는 요소들을 분리해 일괄처리 작업에 유연성을 제공(크론식 : (초) 분 시 일 월 요일 (년) 명령어 )

Windows 주요 특징

Pnp(자동감지기능) : 컴퓨터 시스템에 하드웨어 를 설치했을 때, 필요한 시스템 환경을 운영체제가 자동으로 구성 해주는 기능

OLE : 다른 프로그램에서 작성된 문자나 그림 등의 개체를 현재 작성 중인 문서에 자유롭게 연결하거나 삽입해 편집할 수 있게 하는 기능

Unix 시스템 특징

커널 : 프로그램과 하드웨어 간의 인터페이스 담당. 프로세스 관리, 기억장치 관리, 파일 관리, 입출력 관리 등

쉘 : 사용자 명령어 를 인식해 명령을 수행하는 명령어 해석기 . 시스템과 사용자 간의 인터페이스를 담당

기억장치 관리 전략

반입 전략 : 프로그램이나 데이터를 언제 주기억장치로 적재할 것인지 결정

– 요구 반입 : 실행 중인 프로그램이 특정 프로그램이나 데이터 등의 참조를 요구할 때 적재

– 예상 반입 : 실행 중인 프로그램에 의해 참조될 프로그램이나 데이터를 미리 예상해 적재

가상 기억 장치

보조기억장치의 일부를 주기억장치처럼 사용하는 것

– 페이징(Paging) 기법 : 가상 기억장치에 보관되어 있는 프로그램과 주기억장치의 영역을 동일한 크기 로 나눈 후, 나눠진 프로그램(페이지)을 동일하게 나눠진 주기억장치의 영역(페이지 프레임)에 적재시켜 실행. 외부 단편화 발생x, 내부 단편화 발생o . 주소 변환을 위해 페이지 맵 테이블이 필요함. 페이지 맵 테이블 사용 으로 비용이 증가, 처리속도가 감소.

– 세그먼테이션(Segmentation) 기법 : 가상기억장치에 보관되어 있는 프로그램을 다양한 크기 의 논리적인 단위로 나눈 후 주기억장치에 적재시켜 실행시키는 기법. 배열이나 함수 등과 같은 논리적 크기로 나눈 단위를 세그먼트라고 부르며, 각 세그먼트는 고유한 이름과 크기를 가짐. 기억장치의 사용 관점을 보존하는 기억장치 관리 기법이다. 주소 변환을 위해 세그먼트 맵 테이블 이 필요함. 세그먼트가 주 기억장치에 적재될 때 다른 세그먼트에게 할당된 영역을 침범할 수 없도록 기억장치 보호키가 필요함. 내부 단편화x, 외부 단편화o

페이지 교체 알고리즘

페이지 부재(Page Fault) : CPU가 액세스한 가상 페이지가 주기억장치 에 없는 경우. 페이지 부재가 발생하면 해당 페이지를 보조기억장치(디스크)에서 주기억장치로 가져와야함.

* 페이지 부재 빈도(PFF) : 페이지 부재 횟수를 의미.

* 프리페이징(Prepaging) : 처음의 과도한 페이지 부재를 방지하기 위해 필요할 것 같은 모든 페이지를 한꺼번에 페이지 프레임에 적재 하는 기법

OPT(OPTimal replacement, 최적 교체) : 앞으로 가장 오랫동안 사용하지 않을 페이지를 교체

FIFO(First In First Out) : 가장 먼저 들어와서 오래있었던 페이지를 교체

LRU(Least Recently Used) : 최근에 가장 오랫동안 사용하지 않은 페이지를 교체

LFU(Least Frequently Used) : 사용 빈도 가 가장 적은 페이지를 교체

NUR(Not Used Recently) : 최근에 사용하지 않은 페이지를 교체. 사용 여부를 확인 하기 위해 참조 비트와 변형 비트 2개의 비트 를 사용함.

가상기억장치 관리사항

Locality(지역성) : 데닝(Denning) 교수에 의해 개념 증명. 프로세스가 실행되는 동안 주기억장치를 참조할 때 일부 페이지만 집중적으로 참조 하는 성질. 스래싱을 방지하기 위한 워킹셋의 기반 이 됨.

– 시간 구역성 : 프로세스가 실행되면서 하나의 페이지를 일정 시간 동안 집중적으로 액세스 하는 현상. 한번 참조한 페이지는 가까운 시간 내에 계속 참조할 가능성이 높음

– 시간 구역성이 이뤄지는 기억 장소 : Loop(반복,순환), 스택(Stack), 부 프로그램(Sub Routine), Counting(1씩 증감), 집계에 사용되는 변수

– 공간 구역성 : 프로세스 실행시 일정 위치의 페이지를 집중적으로 액세스 하는 현상. 어느 페이지를 참조하면 그 근처의 페이지를 계속 참조할 가능성이 높음.

– 공간 구역성이 이뤄지는 기억 장소 : 배열 순회(Array Traversal), 순차적 코드의 실행, 프로그래머들이 관련된 변수(데이터를 저장할 기억 장소)들을 서로 근처에 할당되는 기억장소, 같은 영역에 있는 변수

워킹 셋(Working Set) : 프로세스가 일정시간 동안 자주 참조하는 페이지들의 집합 . 자주 참조되는 워킹 셋을 주기억장치에 상주시킴으로서 페이지 부재 및 페이지 교체 현상을 줄이고 프로세스의 기억 장치 사용이 안정됨.

스래싱(Thrashing) : 프로세스의 처리시간 보다 페이지 교체에 소요되는 시간이 더 많아지는 현상. 다중 프로그래밍 정도가 상승하면 CPU의 이용률은 어느 특정 시점까지 높아지며, 정도가 더욱 커지면 스래싱이 발생해 CPU의 이용률이 급격히 감소 하게 된다.

프로세스 상태 전이

PCB(프로세스 제어 블록) : 운영체제가 프로세스에 대한 중요한 정보를 저장해 놓는 곳이다.

제출(Submit, 생성) : 작업을 처리하기 위해 사용자가 작업을 시스템에 제출한 상태

접수(Hold, 생성) : 제출된 작업이 스풀 공간인 디스크의 할당 위치에 저장된 상태. 생성 과정 안에 (제출->접수)이 포함.

준비(Ready) : 프로세스가 프로세서를 할당받기 위해 기다리고 있는 상태. 프로세스는 준비상태 큐에서 실행을 준비.

접수(Hold) : 상태에서 준비상태로의 전이는 Job 스케줄러에 의해 수행된다.

실행(Run) : 준비상태 큐에 있는 프로세스가 프로세서를 할당받아 실행되는 상태. 프로세스 수행이 완료되기 전에 프로세스에게 주어진 프로세서 할당 시간(Timer Runout)이 종료 되면 프로세스는 준비 상태로 전이됨. 실행중인 프로세스에 입출력 처리가 필요하면 실행중인 프로세스는 대기 상태로 전이됨.

대기(Wait), 보류, 블록(BlocK) : 프로세스에 입출력처리가 필요하면 현재 실행 중인 프로세스가 중단되고, 입출력처리가 완료될 때까지 대기하고 있는 상태

종료 : 프로세스의 실행이 끝나고 프로세스 할당이 해제된 상태

*요약 : 사용자가 작업을 요청하면 프로세스가 스풀 공간에서 생성되고, 프로세서를 할당받기 위해 준비하며 프로세서가 할당되면 실행됩니다. 이때 할당시간이 종료되면 다시 준비로 가거나 입출력 처리가 필요하면 대기로 가서 입출력이 완료되면 Wake Up에 의해 다시 준비로 갑니다.

Hold -> Job 스케쥴러 -> 준비

준비 -> Dispatch -> 실행

실행 -> Timer Runout -> 준비

대기 -> Wake up -> 준비

프로세스 상태 전이 관련 용어

Dispatch : 준비 상태 에서 대기하고 있는 프로세스 중 하나가 프로세서를 할당받아 실행 상태 로 전이되는 과정

Wake Up : 입출력작업이 완료되어 프로세스가 대기 상태 에서 준비 상태 로 전이되는 과정

Spooling : 입출력 장치의 공유 및 상대적으로 느린 입출력장치의 처리속도를 보완 하고 다중프로그래밍 시스템의 성능을 향상 시키기 위해 입출력할 데이터를 직접 입출력장치에 보내지 않고 나중에 한꺼번에 입출력하기 위해 디스크에 저장 하는 과정.

타이머 런 아웃 : CPU를 할당받아 실행되고 있는 프로세스는 지정된 할당 시간이 초과되면 스케줄러에 의해 CPU 반납 후 다시 준비 상태가 되는 프로세스 상태 전이

MMU(Memory Management Unit) : CPU가 메모리에 접근하는 것을 관리하는 하드웨어 부품 으로 가상 메모리를 실제 메모리 주소로 변환 하는 장치

스케줄링 과정

장기 스케쥴링 : 어떤 프로세스가 시스템의 자원을 차지할 수 있도록 할 것인가를 결정하여 준비상태 큐로 보내는 작업. 작업 스케줄링, 상위 스케줄링이라고 함. 작업 스케줄러에 의해 수행됨

중기 스케쥴링 : 어떤 프로세스들이 CPU를 할당받을 것인지 결정하는 작업. CPU를 할당받으려는 프로세스가 많을 경우 프로세스 일시 보류 후 활성화함으로 부하를 조절함.

단기 스케줄링 : 프로세스가 실행되기 위해 CPU를 할당받는 시기와 특정 프로세스를 지정하는 작업. 프로세서 스케줄링, 하위 스케줄링 이라고 함. 프로세스 스케줄러에 의해 문맥 교환이 수행됨

스케줄링 목적

공정성 : 모든 프로세스에 공정하게 할당

처리율 증가(Throughput) : 단위 시간당 프로세스 처리 비율 증가

CPU 이용률 증가 : CPU의 낭비시간 감소, CPU의 사용 시간 비율 증가

우선순위 제도 : 우선순위가 높은 프로세스 우선 수행

오버헤드 최소화 : 오버헤드 최소화

응답시간 최소화 : 반응 시간 최소화

반환 시간 최소화(Turn Around Time) : 프로세스 제출 시간으로부터 실행이 완료되기 까지의 걸리는 시간 최소화

대기 시간 최소화 : 준비상태 큐에 대기하는 시간 최소화

균형 있는 자원의 사용 : 메모리, 입출력장치의 자원을 균형있게 사용

무한 연기 회피 : 자원을 사용하기 위한 무한정 연기 상태 회피

스케줄링 기법

선점 스케쥴링 : 하나의 프로세스가 CPU를 할당받아 실행하고 있을 때 우선순위가 높은 다른 프로세스가 CPU를 강제로 빼앗아 사용할 수 있는 스케줄링 기법. 우선순위가 높은 프로세스 먼저 처리. 시분할 시스템에 용이.

– SRT(Shortest Remaining Time First) : 가장 짧은 시간이 소요되는 프로세스를 먼저 수행하고, 남은 처리 시간이 더 짧다고 판단되는 프로세스가 준비 큐에 생기면 언제라도 프로세스가 점유되는 스케줄링 알고리즘

– 라운드 로빈 : CPU 할당 시간 설정 후 프로세스가 할당된 시간 내에 처리하지 못할 경우 큐리스트의 가장 맨 뒤로 이동 하고 다음 프로세스를 CPU에 할당하는 기법

비선점 스케쥴링 : 이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케줄링 기법(순서대로). 프로세스가 CPU를 할당받으면 해당 프로세스가 완료될 때까지 CPU 사용. 일괄처리 방식에 적합

– FCFS(First Come First Service, 선입 선출) : 준비 상태 큐에 도착한 순서 에 따라 차례로 CPU를 할당하는 기법

– SJF(Shortest Job First, 단기 작업 우선) : 실행 시간이 가장 짧은 프로세스에게 먼저 CPU를 할당하는 기법

– HRN(Hightest Responsse-ratio Next) : SJF 기법 보완하기 위한 것으로, 대기시간과 서비스 실행 시간을 이용하는 기법. 우선순위 계산식 : (대기 시간 + 서비스 시간) / 서비스 시간

– 기한부(Deadline) : 프로세스에게 일정한 시간을 주어 그 시간 안에 프로세스를 완료하도록 하는 기법

우선순위 : 준비상태 큐에서 기다리는 각 프로세스마다 우선순위를 부여해 그중 가장 높은 프로세스에게 먼저 CPU를 할당하는 기법

에이징 기법 : 시스템에서 특정 프로세스의 우선순위가 낮아 무한정 기다리게 되는 경우 , 한 번 양보하거나 기다린 시간에 비례해 일정 시간이 지나면 우선순위를 한단계씩 높여 가까운 시간 안에 자원을 할당 받도록 하는 기법.

mutex : 임계영역 을 가진 스레드들의 실행 시간이 서로 겹치지 않게 각각 단독으로 실행 되게 하는 기술

문맥교환 : 하나의 프로세스에 다른 프로세스로 CPU가 할당되는 과정에서 발생 되는 것. 새 프로세스에 CPU를 할당하기 위해 현재 CPU가 할당된 프로세스의 상태 정보를 저장하고, 새 프로세스에 상태 정보를 설정한 후 CPU를 할당해 실행되도록 하는 작업

교착상태(Dead Lock)

상호 배제에 의해 나타나는 문제점으로, 둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상

교착상태 필요 충분 조건

– 상호 배제 : 한 번에 한 개 의 프로세스만이 공유 자원을 사용할 수 있어야 함

– 점유와 대기 : 최소한 하나의 자원을 점유 하고 있으면서 다른 프로세스에 할당되어 사용되고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 있어야 함

– 비선점 : 다른 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없어야 함

– 환형 대기 : 공유 자원과 공유 자원을 사용하기 위해 대기하는 프로세스들이 원형 으로 구성되어 있어 자신에게 할당된 자원을 점유하면서 앞이나 뒤 에 있는 프로세스의 자원을 요구해야 함

교착상태 해결 방법[예회발복]

예방 기법 : 상호 배제, 점유 및 대기, 비선점, 환형 대기 조건 중에서 어느 하나를 제거하여 해결

회피 기법 : 은행원 알고리즘(교착상태가 발생할 가능성을 배제하지 않고 교착상태가 발생시 적절히 피해나가는 방법)

발견 기법 : 자원 할당 그래프 활용

회복 기법 : 교착 상태의 프로세스에 할당된 자원을 선점해 회복

클라우드 컴퓨팅 유형

Iaas(인프라형) : 서버, 스토리지 같은 시스템 자원을 클라우드로 제공하는 서비스로, 컴퓨팅 자원에 운영체제나 애플리케이션 등의 소프트웨어 탑재 및 실행을 하는 서비스

Paas(플랫폼형) : 인프라 생성, 관리 등 복잡한 절차 없이 애플리케이션 개발, 실행, 관리 할 수 있도록 플랫폼을 제공하는 서비스로 OS, 애플리케이션과 애플리케이션 호스팅 환경 구성의 제어권을 가진다.

Saas(소프트웨어형) : 소프트웨어 및 관련 데이터는 중앙에 호스팅 되고 사용자는 웹 브라이주 등의 클라이언트를 통해 접속해 소프트웨어를 서비스 형태로 이용하는 서비스로 주문형 소프트웨어라고도 불린다.

제품 소프트웨어 패키징

소프트웨어 패키징 ★ ★ ★

모듈별로 생성한 실행 파일들을 묶어 배포용 설치 파일을 만드는것

소프트웨어 패키징 작업 순서[기모빌환적변배]

– 기능 식별 : 코드의 기능 확인

– 모듈화 : 기능 단위로 코드 분류

– 빌드 진행 : 모듈 별로 실행 파일

– 사용자 환경 분석 : 사용 환경(웹/모바일/PC 등), 운영체제(인도우/유닉스/안드로이드 등), CPU, RAM

– 패키징 및 적용 시험 : 빌드한 파일을 배포용 파일 형식으로 패키징하고 테스팅

– 패키지 변경 개선 : 적용 시험 후 확인된 불편 사항 반영

– 배포 : 오류 발생 시 개발자에게 전달 및 수정 요청

릴리즈 노트 ★ ★ ★

개발 과정에서 정리된 릴리즈 정보를 최종 사용자인 고객과 공유하기 위한 문서

릴리즈 노트 작성 순서[모정개영정추]

– 모듈 식별 -> 릴리즈 정보 확인 -> 릴리즈 노트 개요 작성 -> 영향도 체크 -> 정식 릴리즈 노트 작성 -> 추가 개선 항목 식별

디지털 저작권 관리(DRM) ★ ★

저작권자가 배포한 디지털 콘텐츠가 저작권자가 의도한 용도로만 사용되도록 하는 디지털 콘텐츠 관리 및 보호 기술임.

디지털 저작권 관리 용어

– 콘텐츠 제공자 : 콘텐츠를 제공하는 저작권자

– 패키저 : 콘텐츠를 메타 데이터(데이터에 대한 속성정보)와 함께 배포 가능한 형태로 묶어 암호화 하는 프로그램

– 콘텐츠 분배자 : 암호화된 콘텐츠를 유통하는 곳이나 사람

– 콘텐츠 소비자 : 콘텐츠를 구매해서 사용하는 주체

– DRM 컨트롤러 : 배포된 콘텐츠의 이용 권한을 통제하는 프로그램

– 보안 컨테이너 : 콘텐츠 원본을 안전하게 유통하기 위한 전자적 보안 장치

– 클리어링 하우스 : 저작권 관리에서 키관리 및 라이선스 발급 관리 를 수행하는 것

– DOI(Digital Object Identifier) : 디지털 저작물에 특정 번호를 부여 하는 일종의 바코드 시스템

디지털 저작권 관리의 기술 요소

– 암호화 : 콘텐츠 및 라이선스를 암호화하고 전자서명할 수 있는 기술

– 키관리 : 암호화한 키에 대한 저장 및 분배 기술

– 암호화 파일 생성 : 암호화된 콘텐츠로 생성

– 식별 기술 : 콘텐츠에 대한 식별 체계 표현 기술

– 저작권 표현 : 라이선스의 내용 표현 기술

– 정책 관리 : 라이선스 발급 및 사용에 대한 정책 표현 및 관리 기술

– 크랙 방지 : 크랙에 의한 콘텐츠 사용 방지 기술

– 인증 : 라이선스 발급 및 사용자 기준이 되는 기술

형상관리 ★ ★ ★ ★

형상관리 : 개발과정에서 소프트웨어의 변경사항을 관리하기 위해 개발된 일련의 활동.

– 형상식별 : 관리 대상에 이름, 관리번호 부여. 계층 구조로 구분.

– 버전제어 : 업그레이드나 유지보수 과정에서 다른 버전의 형상 항목을 관리, 결합 하는 작업.

– 형상통제 : 형상 항목에 대한 변경 요구를 검토 . 현재의 기준선이 잘 반영될 수 있도록 조정 .

– 형상감사 : 기준선의 무결성을 평가 하기 위해 확인

– 형상기록 : 식별, 통제, 감사의 결과를 기록 및 관리.

* CCB(Configuration Control Board; 형상통제 위원회) : 형상 항목에 대한 형상 베이스라인이 승인 된 후, 발생되는 형상 항목의 변경에 대하여 평가, 조정, 승인/보류/기각을 결정 하는 심의 조직

소프트웨어 버전 등록 관련 용어 ★ ★

저장소(Respository) : 저장소

가져오기(Import) : 아무것도 없는 저장소에서 처음으로 파일을 복사

체크아웃(Check-Out) : 파일 받기

체크인(Check-In) : 체크아웃 한 파일의 수정을 완료한 후 저장소의 파일을 새로운 버전으로 갱신한다.

커밋(Commit) : diff도구 (비교 대상이 되는 파일 들의 내용을 비교하여 서로 다른 부분을 표시해주는 도구)를 이용해 충돌을 알리고 내용을 갱신한다.

동기화(Update) : 최신 버전으로 동기화

소프트웨어 버전 관리 도구 ★ ★

버전 관리 도구 : 형상 관리 지침을 활용해 제품 소프트웨어의 신규 개발, 변경, 개선과 관련된 수정사항을 관리하는 도구 다. 또한 소프트웨어 개발과 관련해 코드와 라이브러리 관련 문서 등 시간의 변화에 따른 변경을 관리하는 전체활동을 의미한다.

– 공유 폴더 방식 : 버전 관리 자료가 지역 컴퓨터의 공유 폴더 에 저장되어 관리 되는 방식. SCCS, RCS 등

– 클라이언트/서버 방식 : 버전 관리 자료가 서버에 저장 되어 관리 되는 방식. CVS, SVN(Subversion) 등

– 분산 저장소 방식 : 버전 관리 자료가 하나의 원격 저장소 와 분산된 개발자 PC의 지역 저장소에 함께 저장 되어 관리되는 방식. Git, GNU arch, DCVS 등

빌드 자동화 도구 ★ ★ ★

빌드를 포함해 테스트 및 배포를 자동화 하는 도구. 애자일과 같은 지속적인 통합 개발 환경에 활용.

Jenkins : Java 기반 오픈 소스, 서블릿 컨테이너 , 여러 대의 컴퓨터를 이용한 분산 빌드 가능

Gradle : Groovy 기반 오픈소스, 안드로이드 앱 개발환경, Task 단위, 이전에 사용했던 태스크를 재사용하거나 다른 시스템의 태스크를 공유할 수 있는 빌드 캐시 기능 지원

반응형

정보처리기사 실기 요점 정리(1) – 데이터베이스

이번 주 일요일에 있는 정보처리기사 실기 시험을 위해 1주일간 정리하고 공부한 내용입니다. 알고리즘은 빠져있으며 개인적으로 따로 공부하시는 것을 추천합니다. 외우는 것 보단 직접 이해하는 것이 중요하기 때문입니다.

정보처리기사 실기 데이터베이스 파트입니다.

qnet

데이터베이스

● SQL 언어

○ DML – INSERT, UPDATE, DELETE, SELECT

○ DDL – CREATE, ALTER, DROP

– 제약조건 : CONSTRAINT ~ CHECK(조건)

○ DCL – COMMIT, ROLLBACK, GRANT, REVOKE

● varchar – 가변형이라 물리공간에서 검색속도 떨어짐. 데이터 크기가 별 차이없으면 고정형 char로 설정 고려

● WHERE – BETWEEN A AND B 기억. and나오면 거의 비트윈. like는 and로 못씀

● TRIM – 문자열의 왼쪽, 오른쪽(LTRIM/RTRIM) 공백을 제거할 때 사용하는 함수

● 뷰(VIEW) – 데이터 논리적 독립성 제공, 보안성 향상, 여러 사용자 요구 지원

● OLAP – 온라인 분석 처리(Online Analytical Processing)

– ROLAP: 관계DB, 질의어 – MOLAP: 다차원데이터 – HOLAP: R+M

○ 사용자가 직접 DB 분석해 해결하는 분석형 APP

○ OLAP 연산종류(Roll:요약, Drill:상세 데이터에 접근)

– Roll-up: 상세데이터->요약된형태(피라미드 위쪽으로 올라가면 좁다=요약)

– Drill-down: 요약된형태->상세데이터(피라미드 아래로 갈 수록 넓어진다=보다 많이 봐야함)

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

– Drill-across: 다른 데이터 큐브 데이터에 접근

– Pivoting: 행열 페이지 차원을 바꿔서 보는 기능, 원하는 형태

– Slicing: 데이터큐브를 다차원 데이터들을 다양한 각도에서 쪼개서 비교하며 보는 기능

– Dicing: Slicing을 더 자르고 쪼개는데 그 모양이 주사위 모양.

● MVC 모델 (Model View Controller)

– Model : 어떠한 동작을 수행하는 코드

– View : 모델에게 질의를 하여 모델로부터 값을 가져와 사용자에게 보여줌

– Controller : 사용자는 컨트롤러를 사용하여 모델의 상태 변경

● 객체지향 기법의 기본 원칙

○ 캡슐화 : 객체의 상세한 내용을 객체 외부에 감춤

○ 추상화 : 불필요한 부분을 생략, 객체의 중요한 속성에만 중점을 두어 개략화, 모델화

○ 상속성 : 상위 클래스의 속성을 하위 클래스가 물려받는 것

○ 다형성 : 한 메시지에 대해 각 객체가 다양한 형태로 응답

● 트랜잭션의 특징 (ACID)

– Atomicity(원자성) : 모든 연산들은 완전히 실행되거나 전혀 실행되지 않아야 함

– Consistency(일관성) : 트랜잭션 수행 전 = 수행 완료 후

– Isolation(독립성) : 하나의 트랜잭션 실행 중에 다른 연산이 끼어들 수 없음

– Durability(지속성) : 고장 나더라도 트랜잭션에 의해 변경된 내용은 영구적으로 반영

● trigger(트리거)

– 참조된 두 테이블에서 내용이 변경됐을 때 자동으로 연쇄 수행되는 동작(일관성, 무결성)

– 이벤트가 발생할 때 마다 자동적으로 수행되는 사용자 정의 프로시저

○ Event(이벤트) – DB 항목 변경시키는 일의 발생(삽입, 삭제, 변경 등 이벤트)

● Mapping Rule(맵핑 룰)

– 모델링에서 도출된 개체를 릴레이션 스키마로 변환하는 것(개체-릴레이션, 속성-칼럼, 식별자-기본키, 관계-외래키)

● 관계해석: 관계 데이터의 연산을 표현하는 방법으로, 원하는 정보를 정의 할 때는 계산 수식을 사용하며, 관계 대수와 기능 면에서 동등하며 관계 대수로 표현 된 식은 관계 해석으로 표현, 질의어로 표현

● 관계대수

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

○ 순수 관계 연산자

– Select: σ, 릴레이션에서 행에 해당하는 튜플을 구한다.

– Project: π, 릴레이션에서 열에 해당하는 튜플을 구한다.

– Join: ⋈, 공통 속성을 중심으로 2개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만든다.

– 세타 Join : =, <, > 등의 비교 연산자를 세타로 일반화하여 세타로 표현될 수 있는 조인

– 자연 Join : join 조건이 =일 때 동일한 속성이 2번 나타나는데, 중복 속성을 제거하여 1번만 나타나게 하는 연산

– Division: ÷, 릴레이션 R, S가 있을 때, R⊃S인 경우, S의 속성 값을 가진 것만 제외 한 것

○ 일반 집합 연산자

– 합집합(Union): 기호 ∪, 튜플의 합집합

– 교집합(Intersection): 기호 ∩, 튜플의 교집합

– Difference: 기호-, 두 릴레이션의 차집합

– Cartesian Product(교차곱): 기호 ×, 튜플들의 결합된 정보

● 데이터

○ 데이터 웨어하우스 – 의사결정, 원본DB로부터 정제된 DB, 다차원 분석도구

○ 데이터마트 – 웨어하우스의 작은 규모, 관심있는 데이터만 담음

○ 데이터큐브 – OLAP의 검색속도를 향상, 차원과 사실로 정의(Dimension & Fact)

○ 자료사전(Data Dictionary) – 칼럼정의서의 코드 이름 규칙 관련(파일, 변수 목록), 데이터 개체를 유지 관리, 스키마, 언어, 제약 등의 내용 있음

○ 데이터 마이닝 – DW의 데이터 집합에서 사용자의 요구에 따라 유용하고 가능성 있는 정보를 발견하기 위한 기법

– 군집화: 상호 간에 유사한 특성을 갖는 데이터들을 집단화(Clustering)하는 방법

● 병행 제어

– 다중 프로그램의 이점을 활용하여 동시에 여러 개의 트랜잭션을 병행 수행할 때 실행되는 트랜잭션들이 데이터베이

스의 일관성을 파괴하지 않도록 트랜잭션 간의 상호 작용을 제어하는 기술

○ (Locking)로킹 기법: 주요 데이터의 액세스를 상호 배타적으로 하는 것으로, 트랜잭션들이 어떤 로킹 단위를 액세스하기 전에 Lock을 요청해서 Lock이 허락되어야만 그 로킹 단위를 액세스할 수 있도록 하는 기법

● 함수 종속

– 애트리뷰트 A의 값 각각에 대해서 B의 값이 오직 하나만 연관되어 있을 때 B는 A에 함수 종속 A→B

– A 값에 따라 B 값을 알 수 있을 때 A를 결정자(Determinant), B를 종속자(Dependent), Y는 X에 함수적 종속

○ 완전 함수적 종속 – A가 B에 완전 종속

○ 부분 함수적 종속 – 완전한 종속이 아님. 부분 속성으로 결정, 속성 집합 X전체에 대해 함수적 종속이면서, 다른 부분집합에 대해 함수적 종속(복합키의 일부에 종속)

○ 이행 함수적 종속 – X->Y, Y->Z 이면 X->Z를 만족하는 관계

● 다치종속 – 하나가 여러 개를 요청하면 동일 데이터 반복되는 것은 이와 관련(여러개 종속) ->> 화살표로 표시

● 스키마

– 외부 스키마 : 사용자나 각 개인의 입장에서 필요로 하는 데이터베이스의 논리적 구조를 정의한 것

– 개념 스키마 : 모든 프로그램이나 사용자들이 필요로 하는 데이터를 통합한 조직 전체의 데이터베이스 명세

– 내부 스키마 : 데이터베이스의 물리적 구조를 정의, 물리적 저장장치의 관점에서 본 전체 데이터베이스의 명세

● 관계

– 식별: 외래식별자가 주식별자로 존재(실선)

– 비식별: 외래식별자가 일반 속성으로 존재(점선)

● 무결성 제약조건

제약조건: 릴레이션 인스턴스들이 만족해야 하는 조건

– 정확하지 않은 데이터가 데이터베이스 내에 저장되는 것을 방지하기 위한 제약조건

○ 도메인 무결성 제약조건

– 어떤 속성에 해당하는 속성 값은 항상 그 속성의 도메인에 속하는 값이어야 한다.

○ 개체 무결성 제약조건

– 기본키에 해당하는 속성의 속성 값은 유일, Not Null(중복X)

○ 참조 무결성 제약조건

– 개체간의 ‘관계’에서 데이터 무결성을 위함(참조 못하는 외래키[null 가능] 가질 수 없다.)

● 백업

– 원본이 손상되거나 잃어버릴 경우를 대비하여 원본 자료를 미리 복사하는 과정

○ 전체 백업 : 변경 사항 유무에 관계없이 전체 데이터를 백업하는 방법

○ 증분 백업 : 전체 백업 또는 증분 백업이 수행된 후 변경된 사항을 선택적으로 백업하는 방식

○ 차등 백업 : 전체 백업 이후의 변경 사항을 모두 백업하는 방식

● 키

○ 후보키(candidate) – 튜플을 유일하게 식별할 수 있는 부분집합, 유일성, 최소성

○ 기본키(Primary Key) – 후보키중 선택, 식별자(고유함[개체무결성], not null), 조합도 가능

○ 대체키(Alternate) – 후보키 중 기본키를 제외한 나머지 키

○ 슈퍼키 – 후보키와 비슷한데 속성키의 집합으로 이루어져 있으며, 유일성은 만족하나 최소성을 만족못함(학번+성명은 유일성 만족하나, 성명만으로는 구별 불가하여 최소성 만족 불가)

○ 외래키 – 릴레이션(태이블) 간 참조 관계를 표현함, 참조 태이블의 기본키(참조 무결성)

– 식: 뒤에 REFERENCES 포함, 옵션: CASCADE- 함께 적용, RESTRICT- 변경 유지, SET NULL- 다른개체 null

– CASCADE: 연쇄적으로 수정 및 삭제(종속) ex. ON DELETE SET NULL ON UPDATE CASCADE

● 이상: Anomaly 삽입, 삭제, 갱신 이상(Insert, Deletion, Update)

● 정규화(normalization) – 도부이결다조(도메인 원자->1-> 부분 종속->2-> 이행적->3-> 결정자->bcnf-> 다치->4-> 조인->5) 도메인 원자성 외에는 다 제거되어야 만족

● 제2정규형 – 모든 도메인 원자값이며, 부분종속이 아닌 완전 종속 상태

● 비정규화(denormalization) – 비정규화. 정규화 반대. 대체로 정규화 설명과 같이 나온다.

● INDEX – 자주 검색되는 대상으로 성능 향상을 위함.(단점 시공간 많이 필요) hint. 변수명에 idx 들어가면 인덱스임

○ 클러스터드 인덱스 – 이미 정렬, 바로 값 찾음, 빠르나 수정 힘듬(재정렬 때문)

○ 넌클러스터드 인덱스 – 성능은 보다 떨어지나 여러개 인덱스 설정 유리, 불특정 범위에서 검색 시 유리

○ 선택성 – 인덱스 설계시 선택성(Selectivity)이 좋아야함

● Locking(로킹) – DB 동시성으로 데이터를 잃거나 부정적 효과를 방지하기 위함(병목 방지)

● 메타 데이터 – 데이터에 관한 데이터라고 해서 데이터 사전을 메타데이터라고도 함

구축을 위해 ‘MARC’, ‘DC’, ‘ONIX’, ‘MODS’(상호운용성 만족) 데이터 포맷 사용

○ 상호운용성 – 같은 또는 타 기종 간의 통신 및 처리를 정확히 실행할 수 있는 것

○ MDR – (Metadata Registry)메타데이터 레지스트리

● 이력관리방식

-선분 이력 – 데이터 변경의 시작~종료 시점 관리

-시점 이력 – 데이터의 변경이 발생한 시간만 관리

-변경 이력 – 관리 중 데이터가 변경된 경우와 변경전 데이터를 모두 관리할 수 있도록 구성

-이력데이터 – 변경, 발생, 진행 3가지로 구분

● JOIN – 분해된 릴레이션을 대상으로 질의, 자원과 시간 많이 소요

○ 자연 조인 – 두 릴레이션의 공통 속성을 매개로 관계로 묵는 연산

○ 조인 종속성 – 분할 R들을 모두 조인했을때 기존 R과 결과가 같은 경우

○ 무손실 분해 – 릴레이션 R을 정규화 하여 생성된 R1, R2가 자연조인(natural)하여 원래 R로 무손실 복귀되는 경우 R은 R1,R2로 무손실 분해 된 것

*조인 : 두 테이블로부터 조건에 맞는 관련된 튜플을 하나의 테이블로 만듦

– 동등 조인(Equi Join) : ‘=’ 만 사용

– 자연 조인(Natural Join) : 동등 조인에서 중복 속성 제거

– 외부 조인(Outer Join) : 조인시 조건에 맞지 않는 튜플도 결과 테이블에 포함

– 세타 조인(Theta Join) : ‘=’ 제외 조건 수식을 표현하여 조인

● DBA(DataBase Administration)

데이터베이스(database)의 전체적인 관리 운영(managing)에 대한 최고의 책임(responsible)

● DBMS(DataBase Management System)

데이터베이스 관리 시스템, 데이터베이스(database)를 조작하는 소프트웨어(software), 사람과 데이터베이스 사이(between) 인터페이스 역할(paly the role)

2020년 정보처리기사 실기 내용 정리 – 2. 데이터 입출력 구현 -1) 데이터베이스 설계

2020 정보처리기사 실기 2과목 [데이터 입출력 구현] -1) 데이터베이스 설계 파트 내용 요약 및 정리. + 문제 풀이

복습 : 2020년 정보처리기사 실기 내용 정리 – 1. 요구사항 확인

<데이터베이스 설계>

1) 설계 시 고려사항 “무일회보효확”

① 무결성 : 데이터는 연산 후에도 정해진 제약 조건을 항상 만족해야함

② 일관성 : 저장된 데이터 사이나, 특정 질의에 대한 응답이 변함없이 일정해야함

③ 회복 : 시스템 장애 발생 시 발생 직전의 상태로 복구 가능해야함

④ 보안성 : 불법적인 데이터 노출/변경/손실로부터 보호할 수 있어야함

⑤ 효율성 : 응답시간 단축, 시스템 생산성 향상, 저장공간 최적화 등 가능해야함

⑥ DB 확장 : DB 운영에 영향 주지 않으면서 데이터 추가 가능해야함

2) 설계 순서

① 요구조건 분석 : 요구 조건 명세서 작성

② 개념적 설계(=정보 모델링) : 개념 스키마 및 트랜잭션 모델링 병행 수행. E-R Diagram 작성. DBMS 독립적

– E-R Diagram – 표기법 : 피터 첸 / 정보 공학 / 바커 표기법

E-R 다이어그램 표기법 종류

③ 논리적 설계(=데이터 모델링) : 논리 스키마 설계. 트랜잭션 인터페이스 설계. DBMS 종속적

– 데이터 모델 : 현실 정보를 컴퓨터에 표현하기 위해 추상화한 개념적 모형

– 구성 요소 : 개체 / 관계(종속/중복/배타/재귀) / 속성(기본/설계/파생 속성으로 구분. 속성의 수 = 디그리)

– 표시할 요소 : 구조 / 연산 / 제약조건

– 식별자 : 한 개체 내 각각의 인스턴스를 유일하게 구분하는 구분자. 주/보조, 내/외부, 단일/복합, 원조/대리 식별자로 구분

– 정규화* : 관계형 데이터베이스 설계에서 중복을 최소화하여 데이터를 구조화하는 프로세스

④ 물리적 설계(=데이터 구조화) : 논리적 구조 데이터를 물리적 구조의 데이터로 변환

– 테이블 종류 : 일반 테이블, 클러스터드 인덱스 테이블(기본키나 인덱스 키의 순서에 따라 데이터 저장됨), 파티셔닝 테이블, 외부 테이블, 임시 테이블

– 테이블스페이스 : 테이블이 저장되는 논리적 영역.

– 트랜잭션 분석, CRUD 분석, 인덱스/파티션/뷰/클러스터 설계 => 자세히 보기(준비중)

– 분산 DB 설계, 이중화, 서버 클러스터링, DB 보안, 암호화, 백업, 스토리지 => 자세히 보기(준비중)

– 반정규화* : 정규화된 엔티티, 속성, 관계에 대해 성능 향상과 개발 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링의 기법

⑤ 구현 : DB 생성. 트랜잭션 생성

※ 관계형 모델

관계형 데이터 모델의 구성

※ 관계형 데이터베이스

관계형 데이터베이스의 릴레이션 구조

◎ 튜플의 수 = 카디널리티 / 속성의 수 = 디그리 혹은 차수

◎ 제약 조건

(1) 키 : 튜플을 찾거나 정렬할 때 기준이 되는 속성

– 종류 : 후보키 / 기본키 / 대체키 / 슈퍼키 / 외래키

(2) 무결성 : 현실 세계의 실제 값과 DB에 저장된 데이터값이 일치하는 정확성

– 종류 : 개체 무결성 / 도메인 무결성 / 참조 무결성 / 사용자 정의 무결성

◎ 관계대수 : 관계형 DB에서 원하는 정보와 그 정보를 검색하기 위해 어떻게 유도하는가를 기술하는 절차적 언어.

– 순수 관계 연산자 (Select,Project,Join,Division) / 일반 집합 연산자 (합집합,교집합,차집합,교차곱)

관계대수

– 관계해석 : 관계 데이터의 연산을 표현하는 방법. 원하는 정보 정의 시 계산 수식 사용. 비절차적

※ 시스템 카탈로그 : 모든 데이터 개체 정보나 명세에 대한 정보가 수록된 DBMS가 스스로 생성,유지하는 DB 내 테이블 집합체 (insert,update,delete 불가)

– 메타 데이터 : 데이터 그 자체가 아니라 자료의 속성, 구조 등을 설명하는 데이터의 데이터

*정규화

– 원칙 : 정보의 무손실 표현 (한 스키마에서 다른 스키마로 변환 시 손실X) / 중복 최소화 / 분리의 원칙 (하나의 독립된 관계성은 하나의 릴레이션으로 분리시켜 표현)

– 목적 : 중복 배제, 무결성 유지, 이상 현상(삽입,삭제,갱신) 방지 등

– 과정 : 도부이결다조

*반정규화 (=비정규화,역정규화)

– 방법

(1) 테이블 통합 : Join이 자주 발생하거나 동일한 프로세스가 자주 처리되는 경우 하나의 테이블로 합쳐 사용.

1:1 관계 테이블 통합, 1:N 관계 테이블 통합, 슈퍼타입/서브타입 테이블 통합이 있다.

(2) 테이블 분할 – 수평 분할 : 레코드별로 사용 빈도 차이가 큰 경우 레코드 기준으로 분할

– 수직 분할 : 속성이 너무 많은 경우 속성 기준으로 분할

(3) 중복 테이블 추가 : 여러 테이블에서 데이터를 추출해야하거나 다른 서버의 테이블을 이용하는 경우

집계 테이블 추가/진행 테이블 추가(이력관리)/특정 범위 포함 테이블 추가 등의 방법이 있다.

(4) 중복 속성 추가 : 조인해서 데이터 처리 시 조회 경로를 단축하기 위해 추가

집계 컬럼 추가/이력 컬럼 추가/파생 컬럼 추가/PK에 의한 컬럼 추가 등의 방법이 있다.

문제 (답은 드래그하면 보임)

꼭 직접 쓰면서 풀어보기!

Q. 데이터베이스 설계 시 고려사항을 3가지 이상 쓰시오.

A. 무결성 (데이터는 연산 후에도 정해진 제약조건을 만족)

일관성 (저장된 데이터 사이나 특정 질의에 대한 응답이 일정)

회복 (장애 발생 시 장애 발생 직전의 상태로 복구 가능)

보안 (불법적 데이터 노출,변경,손실로부터 보호)

효율성 (응답시간 최소화, 시스템 생산성, 저장공간 최적화 등 가능)

DB 확장 (DB 운영에 영향 미치지않고 데이터 추가 가능)

Q. 데이터베이스 설계 시 논리적 설계 단계의 특징은?

A. 개념 스키마를 정제 및 평가하고 논리 스키마를 설계하는 단계. 트랜잭션의 인터페이스를 설계. DBMS 종속적이다. 관계형 DB라면 테이블을 설계하는 단계

Q. 빈칸에 들어갈 용어는?

( 1 ) : 업무상 존재하지 않고 설계 과정에서 도출해내는 속성 ( 2 ) : 다른 속성으로부터 영향을 받아 발생하는 속성

A. 1. ( 설계 속성 ) 2. ( 파생 속성 )

Q. 빈칸에 들어갈 용어는?

( 1 ) : 두 개체 사이의 주-종 관계를 표현한 관계. 식별 관계 / 비식별 관계로 구분.

( 2 ) : 두 개체 사이에 종속 관계가 2번 이상 발생하는 관계.

( 3 ) : 개체가 자신과 관계를 맺는 것. 순환 관계라고도 한다.

( 4 ) : 개체 속성이나 구분자로 개체 특성을 분할하는 관계. 배타 AND 관계 / 배타 OR 관계로 구분한다.

A. 1. ( 종속 관계 ) 2. ( 중복 관계 ) 3. ( 재귀 관계 ) 4.( 배타 관계 )

Q. 각 내용이 설명하는 용어는?

1. 개체를 대표하는 유일한 식별자. 하나의 개체에 하나만 존재. 유일성,최소성,불변성,존재성을 만족한다.

2. 주 식별자 대신 개체를 식별할 수 있는 속성 . 하나의 개체에 하나 이상 존재 가능.

3. 개체 내에서 스스로 만들어지는 식별자.

4. 다른 개체와의 관계에 의해 외부 개체의 식별자를 가져와 사용하는 식별자. 다른 개체를 찾아가는 연결자 역할 수행.

5. 주 식별자가 한가지 속성으로만 구성된 경우

6. 주 식별자가 한가지 이상의 속성으로 구성된 경우

7. 업무에 의해 만들어지는 가공되지 않은 원래 식별자. 본질 식별자라고도 함.

8. 주 식별자의 속성이 두개 이상인 경우 속성들을 하나로 묶어 사용. 인조 식별자라고도 함.

9. 개체 내 각 인스턴스를 유일하게 식별할 수 있는 속성 또는 속성 집합. 속성 중 대표성이 있으면 주 식별자, 나머지를 보조 식별자로 지정한다. NULL 값 불가능.

A. 1. 주 식별자 2. 보조 식별자 3. 내부 식별자 4. 외부 식별자 5. 단일 식별자 6. 복합 식별자 7. 원조 식별자 8. 대리 식별자 9. 후보 식별자

Q. 다음은 관계형 데이터베이스의 제약조건 중 키에 대한 설명이다. 각각 알맞은 용어를 쓰시오.

1. 속성 중 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합, 즉 기본키로 사용할 수 있는 속성들. 유일성과 최소성을 만족한다.

2. 후보키 중 특별히 선정된 주키. 중복된 값을 가질 수 없다. Null 값을 가질 수 없다.

3. 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키.

4. 한 릴레이션 내 속성들의 집합으로 구성된 키.

5. 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합.

6. 후보키의 특성 중 ‘하나의 키값으로 하나의 튜플만을 유일하게 식별할 수 있어야한다’는 특성

7. 후보키의 특성 중 ‘모든 레코드들을 유일하게 식별하는데 꼭 필요한 속성으로 구성되어야한다’는 특성

A. 1.후보키 2.기본키 3. 대체키 4.슈퍼키 5.외래키 6.유일성 7.최소성

Q. 다음은 관계형 데이터베이스의 제약조건에 대한 설명이다. 각각 알맞은 용어를 쓰시오.

관계형 데이터베이스의 제약조건 중 ( 1 ) 은 현실 세계의 실제 값과 데이터베이스에 저장된 데이터 값이 일치하는 정확성을 의미한다.

종류로는 ( 2 ), ( 3 ), ( 4 ), ( 5 )가 있다.

( 2 ) 는 기본 테이블의 기본 키를 구성하는 어떤 속성도 null 값이나 중복 값을 가질 수 없다는 규정이다.

( 3 ) 는 주어진 속성 값이 정의된 도메인에 속한 값이어야한다는 규정이다.

( 4 ) 는 외래키 값은 null이거나 참조 릴레이션의 기본키 값과 동일해야한다는 규정이다.

( 5 ) 는 속성값들이 사용자가 정의한 제약조건을 만족해야한다는 규정이다.

데이터 ( 1 )은 ( 6 ), ( 7 ), ( 8 )로 강화할 수 있다.

( 6 ) 은 데이터 조작 시 무결성 조건 검증 코드를 데이터 조작 프로그램 내에 추가하는 방법이다.

( 7 ) 은 트리거 이벤트에 무결성 조건을 실행하는 절차형 sql을 추가하는 방법이다.

( 8 ) 데이터베이스에 제약 조건을 설정해 무결성을 유지한다.

(1) 무결성 (2) 개체 무결성 (3) 도메인 무결성 (4) 참조 무결성 (5) 사용자 정의 무결성 (6)애플리케이션 (7) 데이터베이스 트리거 (8) 제약 조건

Q. 관계대수에 대한 설명이다. 각각 알맞은 용어와 표기법을 쓰시오.

1. 이항 연산으로 관계성이 있는 두개의 릴레이션을 합집합하여 하나의 릴레이션을 만들어 내는 연산

2. 이항 연산으로 관계성이 있는 두개의 릴레이션에서 중복되어 있는 내용을 선택하여 새로운 릴레이션을 만들어 내는 연산

3. 이항 연산으로 관계성이 있는 두개의 릴레이션이 있을 때 그 중 하나의 릴레이션에서 또 다른 릴레이션의 내용과 겹치는 내용을 제거해서 새로운 릴레이션을 생성하는 연산

4. 이항 연산으로 두 릴레이션의 현재 투플로 구성 가능한 모든 조합 만드는 연산

5. 릴레이션의 주어진 조건을 만족하는 튜플을 선택하는 연산

6. 단항 연산으로 릴레이션에서 참조하고자 하는 어트리뷰트를 선택하여 분리해 내는 연산

7. 두 릴레이션 간의 에트리뷰트 값이 동일한 튜플을 연결하는 연산

8. 두 개의 릴레이션 A와 B가 있을 때 B의 릴레이션의 모든 조건을 만족하는 경우의 튜플들을 릴레이션 A에서 분리해 내어 프로젝션하는 연산

1. 합집합 U

2. 교집합 ∩

3. 차집합 –

4. 카티션 프로덕트 X

5. Select б

6. Project π

7. Join ▷◁

8. Division ÷

Q. 다음 관계대수 문장을 SQL로 표현하시오.

πname,dept( бyear=3(student) )

A. select name,dept from student where year = 3;

Q. 정규화란?

A. 관계형 DB 설계에서 중복을 최소화해 데이터를 구조화하는 프로세스

Q. 반정규화란?

A. 시스템의 성능향상, 개발 운영의 단순화를 위해 정규화된 데이터 모델을 통합,중복,분리하는 데이터 모델링 기법.

Q. 정규화 원칙을 쓰시오.

A. 정보의 무손실 표현 : 한 스키마를 다른 스키마로 변환할 때 정보가 손실되면 안됨.

분리의 원칙 : 하나의 독립된 관계성은 하나의 릴레이션으로 분리해 표현해야함.

중복 최소화

Q. 반정규화 방법을 모두 쓰시오.

A. 테이블 통합(1:1,1:N,슈퍼/서브) / 테이블 분할(수평,수직) / 중복 테이블 추가(집계,진행,특정범위) / 중복 컬럼 추가 (중복,파

오류나 추가될 사항 있으면 댓글 부탁드립니다생,이력,PK에 의한)

반응형

[정보처리기사 실기] 데이터베이스 정리

데이터베이스의 정의 : 관련 데이터들의 모임으로 조직체의 응용시스템들이 공유해서 사용하는 운영데이터들이 구조적으로 통합된 모임

데이터베이스의 필수 기능 : 정의, 조작,제어

장점 단점 물리적, 논리적 독립성 중복성 최소화 불일치 감소 무결성 보장 공유의 편리 표준화 용이 보안성 유지 관리 용이 초기구축 비용 이 높다 전문가 부족 백업/ 복구의 어려움 자료처리 방법의 복잡

DBMS (Database Manegement System) : 데이터베이스와 사용자를 연결해주는 역할을 하는 S/W 집합

스키마 ( Schema): 데이터베이스의 구조 ( 개체 , 속성, 관계)와 제약 조건에 대한 명세 기술

외부스키마( 서브스키마) :사용자 요구사항을 도출하는 과정 , 데이터베이스 시스템 사용자 관점에서 보고자 하는 정보의 집합

개념스키마( 논리스키마) :사용자 관점의 스키마인 외부 스키마를 분석하여 데이터베이스에 저장해야 할 필요가 있는 정보들을 도출하여

데이터베이스 구조로 설계 한것

내부스키마( 물리스키마) : 논리 스키마를 컴퓨터 내부에 저장할 수 있는 물리적인 구조로 변환한 것

데이터베이스 관리자(DBA): 데이터베이스 시스템과 관련된 모든 자원들에 대한 기획, 통제를 수행하는 사람 또는 조직

데이터베이스 시스템 ( DB System) : 데이터베이스 시스템 = 응용프로그램들 + DBMS+ Database

데이터 모델링 과정 : 쉽게보면 앞의 글씨를 따라간다 분석-명세 설계는 – 스키마로 이런식으로 대충 때려 맞추면 된다.

DB의 구성요소

개체( Entity) : 사람, 장소 , 사물 ,사건 등과 같이 독립적으로 존재하여 고유하게 식별이 가능한 현실 세계의 객체이다 .

속성(Attribute): 개체의 성빌, 분류, 식별, 수량 , 상태 등을 나타내는 세부 항목이다.

관계(Relation): 두개 이상의 개체 사이에 존재하는 연관성이다.

테이블의 집합 : 개체와 관계성을 모두 Table로 정의하여 표현 모든 관계성을 Key값으로 처리 ( 개체의 Key로 서로 연관시켜준다.)

장점 단점 업무 변화에 대한 적응력 탁월 유지,보수 편리성 높은 생산성 응용프로그램의 개발 용이 많은 시스템 자원의 요구 다:다 관계 표현이

키의 개념 : DB에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성

키 종류 내용 유일성 최소성 슈퍼키 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키 O X 후보키 튜플을 유일하게 구분할 수 있는 최소 슈퍼키 (하나의 속성으로 이루어짐) O O 기본키 후보키 중에서 특별히 선정된 키로 중복값을 가질수 없음 , 후보키의 성질을 가지며 NULL 값을 가질수 없다 O O 대체키 후보키- 기본키 = 대체키 후보키가 둘 이상 되는 경우에 그 중에서 어느 하나를 선정하여 기본키로 지정하면 나머지 후보키들은 대체키가 된다. O O 외래키 다른 릴레이션의 기본키를 참조하는 속성,속성들의 집합으로 참조 릴레이션의 기본키와 동일한 키 속성을 가진다. O O

무결성: DB에서 데이터의 정확성을 위해 값들의 일관성을 유지하며 유효한 값이 존재 하도록 하는것

제약조건: 데이터의 무결성을 유지하기 위한 조건으로 정확하지 않은 DB내에 저장되는것을 방지

개체 무결성: 기본키 값은 NULL 값을 가질수 없고, 중복 값을 가지지 않는다 .

도메인 무결성: 속성값이 반드시 원자값이어야 하며 , 데이터 형식을 통해 값들의 유형을 지정 한다. 특정 속성 값이 도메인에 속한 값이다.

키 무결성: 외래키는 NULL이거나 참조하는 테이블의 기본키와 같은 값이어야 한다. 하나의 릴레이션엔 적어도 하나의 키가 있어야 한다.

참조 무결성 : 외래키는 NULL 값이거나 참조하는 테이블의 기본키와 같은 값이어야 한다.

NULL 무결성 : 특정 속성 값이 NOT NULL

고유 무결성 : 특정 속성에 대해 각 튜플들이 서로 다른 값이다 .

관계 무결성 : Relation 에서 튜플의 삽입 가능여부

이상 (Anomaly)

삽입 이상 데이터를 삽입 할때, 의도치 않은 값들로 인해 삽입할 수 없게 되는 현상 삭제 이상 한 튜플을 삭제할 때, 의도치 않은 튜플도 연쇄 삭제 되는 현상 갱신 이상 튜플들의 값을 갱신할 때 일부 튜플만 갱신되어 정보가 불일치 되는 현상

함수적 종속: 어떤 릴레이션 R에서 X와 Y를 각각 R의 속성 집합의 부분 집합이라 할 경우, 속성의 값 각각에 대하여 시간에 관계 없이 항상 속성 Y의 값이 오직 하나만 연관되어 있을때 Y는 X에 종속이라 하고 X->Y로 표기한다

완전 함수적 종속: 여러 개의 속성이 모여서 하나의 기본키를 이룰 경우 기본키 전체가 있어야지만 어떤 속성이 결정될때 완전 함수적 종속이다.

부분 함수적 종속: 완전하게 함수적으로 종속하지 않으면 부분 함수적 종속성을 갖는다. 기본키를 구성하는 부분속성만으로도 결정 되어지만 부분 함수종속

이행 함수적 종속 : X->Y , Y->Z 일때 X->Z를 만족하는 관계

정규화(Normalization): 함수적 종속성 등의 종속성 이론을 이용하여 잘못 설계된 관계형 스키마를 더 작은 속성의 셀로 쪼개 바람직한 스키마로 만들어 가는 과정

정규화의 목적: 현실세계를 정확하게 표현하는 관계 스키마를 설계하는 작업으로 , 가능하다면 모든 개체간의 관계를 표현하기 위해서 이다.

SQL: 표준 관계형 데이터 베이스 언어 . DBMS에서 사용되는 비절차적 언어

-비절차적 언어: What 까지만 명시

-절차적 언어: HOW까지 명시

대화형 SQL : 사용자가 다른 언어를 통하지 않고 직접 데이터베이스 시스템에 접근 하여 DB내 자료를 조작하기 위해 사용하는 SQL

내장형 SQL: 호스트 프로그램 언어에 삽입된 SQL

관계 대수 중 순수 관계 연산자

DIVISION :나누어 지는 릴레이션인 A는 릴레이션 B의 모든 내용을 포함한 것이 결과 릴레이션이 된다.

SELECT: 릴레이션에서 주어진 조건을 만족하는 튜플들을 검색하는 것으로 기호는 시그마

PROJECT: 릴레이션에서 주어진 조건을 만족하는 속성들을 검색하는 것으로 기호는 파이 (수직적 연산)

JOIN : 두개의 릴레이션 A와 에서 공통된 속성을 연결 하는 것

Cartensian Project 연산 후 Select 연산을 수행한 것과 동일

SQL 구분

데이터 정의어 (DDL): 물리적인 데이터베이스를 정의하고 관리하는 언어 (CREATE, DROP, ALTER)

데이터 조작어 (DML): 생성된 데이터베이스에 데이터를 처리하는 언어 ( SELECT, INSERT, UPDATE,DELETE)

데이터 통제어 ( DCL): 데이터베이스 사용 권한 및 데이터의 무결성, 병행 수행 제어 기능 등을 관리하는 언어 ( GRANT, REVOKE, COMMIT, ROLLBACK)

관계해석(Relational Calculus): 원하는 정보가 무엇이라는 것만 정의하는 비절차적언어, 질의어로 표현

DDL

CREATE : SCHEMA, DOMAIN, TABLE , VIEW, INDEX

CREATE SCHIMA 수위실 AUTHORIZATION 이름;

CREATE DOMAIN BEATSLOTH CHAR(1);

DEFAULT ‘남’

CONSTRAINT VAILD-BEATSLOTH CHECK (VALUE IN(‘남’;’여’))

CREATE TABLE 학생{

학번 CHAR(18)

이름 CHAR(18) NOT NULL

성별 남

생년월일 DATE

PRIMAR KEY(학번), UNIQUE(생년월일) .

FOREIGN KEY (학과코드) REFERENCES 학과(학과코드)

CREATE VIEW 여학생(이름,성별)

AS SELECT 이름,성별

FROM 학생

WHERE 성별=’남’;

CREATE INDEX

CREATE UNIQUE INDEX 고객번호_idx

ON 고객 ( 고객번호 DESC);

ALTER TABLE – 테이블의 정의를 변경

ALTER TABLE 학생 ADD 취미 CHAR(18);

ALTER TAVLE 학생 ALTER 성별 SET DEFAULT ‘남’;

ALTER TABLE 학생 DROP 생년월일

DROP- 제거

DROP{SCHEMA |DOMAIN |TABLE| VIEW| INDEX |TREGGER | CONSTRAINT}

이름명 [{CASCADE | RESTRICT}]

DML

SELECT 속성

FORM 테이블

SELECT [{ALL |DISTINCT | DISTINCTROW}] [테이블명.]속성명[AS별칭][.[테이블명]속성명[AS별칭],…]

FROM 테이블명 [테이블명,…] [WHERE 조건]—비교연산자 /논리연산자 / LIKE

[GROUP BY 속성명 [속성명, …]] [HAVING 조건] – 그룹함수에 대한 조건; 그룹함수

(AVG (속성명), MAX(속성명), MIN(속성명), SUM(속성명), COUNT(속성명))

[ORDER BY 속성명 {ASC | DESC}[속성명{ASC | DESC}]]; –기본값은 ASC

INSERT – 데이터베이스에 저장된 자료 (튜플)를 검색 삽입,삭제,갱신, 재구성 하기 위한 언어

INSERT INTO 수강생 VALUES (‘이름’,’학과’.’지역’,100)

-수강생 테이블에 이름,학과, 지역 100을 넣어라

UPDATE- 테이블에 있는 튜플들 중에 특정 튜플의 내용을 갱신할 때 사용

UPDATE 수강생 SET 과목=’으에’ WHERE 이름=’BEATSLOTH’

-수강생 테이블에서 이름이 BEATSLOTH 튜플의 과목을 으에로 바꿔라

DELETE – 테이블에 있는 튜플들 중에서 특정 튜플을 삭제 할 때 사용하는 명령문

DELETE FROM 수강생 WHERE 과목=’사무’

-수강생 테이블에서 과목에 사무를 삭제하라

DCL

COMMIT- 데이터 베이스 사용 권한 및 데이터의 무결성, 병행 수행제어 기능등을 관리하는 언어

ROLLBACK -데이터베이스 조작 작업이 비정상적으로 종료되었을 때 원래 상태로 복구

GRANT – 데이터베이스 사용자에게 사용권한 부여

GRANT SELECT ON 수강생 TO ASD;

REVOKE – 데이터 베이스 사용자의 사용권한을 취소

REVOKE SELECT ON 수강생 FROM BEATSLOTH[CASCADE];

BEATSLOTH 에게 수강생 테이블에 대한 권한 취소

[정보처리기사] 실기 데이터베이스 정리

정보처리기사 실기 데이터베이스 내용 중 자주 출제되던 내용만 정리한 것이다.

내가 생각하기에 최소한 반드시 외워야 한다고 생각한 내용들이며 기사 시험 준비하시는 분들은 참고용으로만 봐주시면 좋겠다.

1. 데이터베이스 정의

– 통합 데이터(Integrated Data) : 검색의 효율성을 위해 중복이 최소화된 데이터의 모임

– 저장 데이터(Stored Data) : 컴퓨터가 접근 가능한 저장 매체에 저장된 데이터

– 운영 데이터(Operational Data) : 조직의 목적을 위해 존재 가치가 확실하고 반드시 필요한 데이터

– 공유 데이터(Shared Data) : 여러 응용 프로그램들이 공동으로 사용되는 데이터

2. 데이터베이스의 특징

– 실시간 접근성(Real Time Accessibility) : 사용자의 질의에 대해 즉시 처리하여 응답하는 특성

– 계속적인 진화(Continuous Evolution) : 삽입, 삭제, 갱신을 통해 항상 최근의 정확한 데이터를 동적으로 유지하는 특징

– 동시 공유(Concurrent Sharing) : 여러 사용자가 동시에 원하는 데이터를 공용할 수 있는 특징

– 내용에 의한 참조(Contents Reference) : 데이터베이스에 있는 데이터를 참조할 때 데이터 내용에 따라 참조하는 특징

– 데이터의 논지럭, 물리적 독립성(Independence)

= 논리적 독립성 : 응용 프로그램과 데이터베이스를 독립시켜서 데이터의 논리적 구조를 변경하더라도 응용프로그램은 변경되지 않음

= 물리적 독립성 : 응용프로그램과 보조기억장치와 같은 물리적 장치를 독립시켜 새로운 디스크를 추가해도 응용프로그램에 영향을 주지 않고 데이터의 물리적 구조만 변경됨

3. 데이터베이스 언어의 종류와 개념

– DDL(데이터 정의어) : 데이터베이스의 구조, 형식, 접근방식 등 데이터베이스를 구축하거나 변경함

– DML(데이터 조작어) : 데이터 처리를 위한 연산의 집합으로 데이터의 검색, 삽입, 삭제, 갱신을 수행

– DCL(데이터 제어어) : 보안 및 권한제어, 무결성, 회복, 병행제어를 위한 언어

4. 데이터베이스 사용자

– 데이터베이스 관리자(DBA) : DDL과 DCL을 통해 데이터베이스를 정의하고 제어하는 사람 또는 그룹

– 데이터 관리자 : 하나의 기업 또는 조직 내에서 데이터에 대한 정의, 체계화, 감독 및 보안 업무 담당. 데이터의 관리를 총괄. 계획 수립, 통제

– 데이터 설계자 : 기업의 업무 수행에 필요한 데이터의 구조를 체계적으로 정의하는 사람

5. 데이터 사전, 메타 데이터

– 데이터 사전 : 데이터베이스에 저장되어 있는 모든 데이터 개체들에 대한 정보를 유지, 관리하는 시스템. (=시스템 카탈로그)

– 메타 데이터 : 저장되는 데이터와 직.간접적으로 관계가 있는 정보를 제공하는 데이터

* MARC : 목록 레코드를 식별하여 축적 유통할 수 있도록 코드화한 메타 데이터

6. ER 도형의 의미

– 직사각형 : 개체 타입

– 마름모 : 관계 타입

– 원 : 속성

– 원-밑줄 : 기본키 속성

– 연결선 : 개체와 속성을 연결

7. 관계 및 관계 타입

– 관계 : 2개 이상의 개체 사이에 존재하는 연관성

– 관계 타입 : 같은 관계들의 집합 또는 틀

– 대응 카디널리티에 따른 관계의 종류 : 1:1, 1:N, N:M

8. 속성

– 속성 : 개체의 특성이나 상태를 기술한 것. 관계도 속성을 가질 수 있음

– 도메인 : 속성이 가질 수 있는 모든 가능한 값들의 집합 (ex, SEX – ‘남’, ‘여’)

– 모든 개체 타입은 그 개체를 유일하게 식별해주는 기본키 속성을 포함

– 단순 속성 : 더 이상 쪼갤 수 없는 속성 (ex, 나이)

– 복합 속성 : 2개 이상으로 분해 가능 (ex, 주소)

9. 키의 종류 및 개념

– 슈퍼키 : 한 릴레이션 내에 있는 속성들의 집합. 유일성은 만족하나 최소성은 만족하지 않음

– 후보키 : 한 릴레이션에서 튜플을 유일하게 식별할 수 있는 속성. 유일성, 최소성 모두 만족

– 기본키 : 후보키 중 특별히 선정된 키. 중복된 값을 가질 수 없음. NULL도 안됨

– 대체키 : 후보키 중 기본키를 제외한 나머지 속성들

– 외래키 : 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합

10. 무결성

– 무결성 : 데이터베이스에 저장된 값과 그것이 표현하는 현실의 실제 값이 일치하는 정확성을 의미 (잘못된 데이터가 없다는 것을 의미)

– 개체 무결성 : 기본 릴레이션의 기본키를 구성하는 어떤 속성도 NULL 일 수 없다는 규정

– 참조 무결성 : 외래키 값은 NULL 이거나 참조 릴레이션의 기본키와 동일해야 한다는 규정

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

11. 관계대수, 관계해석

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

– 연산 종류 : SELECT, PROJECT, JOIN, DIVISION, UNION, DIFFERENCE 등

– SELECT : σ국어>수학(성적) -> select * from 성적 where 국어>수학; / Λ(and), V(or), ㄱ(not)

– PROJECT : π이름,국어(성적) -> select 이름, 국어 from 성적;

– JOIN : 성적 ▷◁ 이름=이름 학적부 -> select * from 성적 join 학적부 on 성적.이름=학적부.이름;

– 관계해석 : E.F.Codd 가 수학의 Predicate Calculus 에 기반을 두고 관계 데이터베이스를 위해 제안. 원하는 정보가 무엇이라는 것만 정의하는 비절차적 언어

12. CREATE

– create schema 대학교 authorization 홍길동;

: ID가 홍길동인 사용자의 스키마 ‘대학교’를 생성

– create domain SEX char(1) default ‘남’ constraint valid-sex check (value in (‘남’, ‘여’));

: char(1) 형식의 도메인 SEX 생성, 기본값은 ‘남’, valid-sex라는 제약조건 생성(‘남’, ‘여’ 중 하나만 가능)

– create table … foreign key (전공) references 학과(학과코드) on delete set null on update cascade

: 전공 속성은 학과 테이블의 학과코드 속성을 참조하는 외래키. 학과 테이블에서 튜플이 삭제되면 전공 값은 null로, 갱신되면 같은 값으로 변경

– create view 안산고객 (성명, 전화번호) as select 성명, 전화번호 from 고객 where 주소=’안산’;

: 고객 테이블에서 주소가 안산인 튜플들의 성명, 전화번호 정보만을 갖는 ‘안산고객’ view 생성

– create unique index 고객번호_idx on 고객 (고객번호 desc);

: 고객 테이블에서 unique 한 고객번호 속성에 대해 내림차순 정렬하여 ‘고객번호_idx’라는 인덱스 생성

12. DROP

– drop table 테이블명 [ cascade | restrict ]

= cascade : 제거할 개체를 참조하는 다른 모든 개체도 함께 제거

= restrict : 다른 개체가 제거할 개체를 참조중일 경우 제거가 취소됨

13. ALTER

– 속성 추가 : alter table 테이블명 add 속성명 데이터타입 [default ‘기본값’]

– 속성 제거 : alter table 테이블명 drop column 속성명 [cascade]

– 속성 기본값 변경 : alter table 테이블명 alter 속성명 set default ‘기본값’

14. JOIN

– inner join : 공통 속성을 기준으로 ‘=’ 비교에 의해 같은 값을 가지는 행을 연결해 결과를 생성

(ex, select A.col1, B.col2 from A, B where A.col1 = B.col1;)

– outter join : join 조건에 만족하지 않아도 함께 출력. null로. left outter join, right outter join, full outter join 등

(ex, select A.col1, B.col2 form A left outter join B on A.col1 = B.col1);

– self join : 같은 테이블에서 조인. 테이블을 두개 그려놓고 생각

15. INSERT, DELETE, UPDATE

– insert into 테이블명 (…) select … from 테이블명;

– insert into 테이블명 (…) values (…);

– delete from 테이블명 [where …]

– update 테이블명 set 속성명=데이터, 속성명=데이터 [where …]

16. GRANT, REVOKE

– grant DBA|RESOURCE|CONNECT to 사용자명

* DBA(관리자), RESOURCE(데이터베이스 및 테이블 생성 가능자), CONNECT(단순 사용자)

– with grant option : 부여받은 권한을 다른 사용자에게 다시 부여할 수 있는 권한을 부여

– grant option for : 다른 사용자에게 권한을 부여할 수 있는 권한을 취소

– cascade : 권한 취소 시 권한을 부여받았던 사용자가 다른 사용자에게 부여한 권한도 취소

– grant all on 고객 to USER with grant option;

: 사용자 ID가 USER인 계정에게 고객 테이블에 대한 모든 권한과 다른 사람에게 권한을 부여할 수 있는 권한까지 부여

– revoke update on 고객 form USER [cascade]

: USER 계정의 권한 중 고객 테이블에 대한 update 권한을 취소

17. 이상(anomaly)

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

– 삽입이상 : 데이터를 삽입할 때 의도와는 상관없는 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상

(ex, 두 개의 속성으로 이루어진 기본키가 있는데 그 중 하나의 값을 null로 삽입하고자 할 경우)

– 삭제이상 : 테이블에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는 현상

– 갱시이상 : 테이블에서 튜플에 있는 속성값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보에 불일치성이 생기는 현상

18. 함수적 종속

– 함수적 종속 : 하나의 속성이 다른 하나의 속성에 의해 결정되는 것. 정규화를 하기 위해 가장 먼저 파악 필요

– X -> Y : 속성 X가 속성 Y를 함수적으로 결정. X가 결정자, Y가 종속자

(ex, 학번, 과목번호 -> 성적(완전 함수적 종속), 학번 -> 학년(부분 함수적 종속))

19. 정규화

– 정규화 : 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용해 테이블을 무손실 분해하는 과정. 삽입,삭제,갱신 이상의 발생 가능성을 줄이는 것

20. 트랜잭션

– 원자성 : 트랜잭션의 연산은 데이터베이스에 모두 반영되든지 아니면 전혀 반영되지 않아야 함

– 일관성 : 트랜잭션 수행이 성공적으로 완료되면 언제나 일관성 있는 데이터베이스 상태로 변환

– 독립성 : 한 트랜잭션이 데이터를 갱신하는 동안 다른 트랜잭션이 데이터에 접근하지 못해야 함

– 영속성 : 트랜잭션 실행이 성공적으로 실행 완료된 후에는 시스템에 오류가 발생해도 트랜잭션에 의해 변경된 내용은 계속 보존되어야 함

정보처리기사 실기 요약[SQL 응용- Chapter8](정처기)

반응형

정보처리기사 실기 정리는 제가 직접 수기로 작성하여 요약한 내용이기 때문에 조금의 오타가 있을 수 있습니다.

Chapter10 – 프로그래밍 언어 활용

Chapter11 – 응용 SW 기초 기술 활용

Chapter2 – 데이터 입출력 구현

본 3파트는 학교 OS, DB 수업과 코딩 테스트를 준비하면서 다른 과목들의 암기 시간을 늘리기 위해 정리(암기)하지 않고 갔습니다.

하지만 양이 많고, 가장 중요하면서 최소 4문제 이상 나오는 파트이기 때문에 준비를 잘해야하는 파트입니다.

시간이 된다면 추후에 추가하겠습니다.

SQL 응용

Chapter 8

SQL

RDB에서 사용되는 대표적인 언어, 관계 대수와 관계 해석을기초로 DB작업을 효율적으로 처리하기 위한 고급 데이터베이스 언어

DDL

종류

CREATE, ALTER, DROP

CREATE

테이블, 스키마, 도메인, 인덱스, 뷰 생성

CREATE TABLE 테이블 이름(

속성이름 타입 [NOT NULL,] [UNIQUE,] [FOREIGN KEY (속성이름) REFERENCES 참조테이블이름(속성이름) ] [ON DELETE | ON UPDATE | CASCASE | SET NULL | SET DEFAULT | NO ACTION]);

CREATE SCHEMA 스키마이름 AUTHORIZATION 사용자;

CREATE DOMAIN 도메인이름 데이터타입

[DEFAULT 기본값] [CONSTRAINT 제약조건 CHECK(VALUE IN(범위값))];

CREATE [UNIQUE] INDEX 인덱스이름

ON 테이블이름(속성이름 [ASC|DESC])

[CLUSTER];

CREATE VIEW 뷰이름[(뷰속성이름)]

AS SELECT 기본테이블 속성이름

FROM 기본테이블이름

[WHERE 조건] [WITH CHECK OPTION];

WITH CHECK OPTION 은 뷰에 갱신, 삽입, 수정시 WHERE조건을 따져서 조건에 맞지 않으면 실행하지 않음

데이터 타입

가변길이 문자 – VARCHAR(문자수)

고정길이문자 – CHAR(문자수)

ALTER

ALTER TABLE 테이블이름 ADD 속성이름 데이터타입 [DEFAULT];

ALTER TABLE 테이블이름 ALTER 속성이름 데이터타입 [SET DEFAULT];

ALTER TABLE 테이블이름 DROP 속성이름 데이터타입 [CASECADE | RESTRICT];

ALTER [UNIQUE] INDEX 인덱스이름 ON 테이블명(속성[ASC | DESC]);

DROP

DROP TABLE 테이블이름 [CASECADE | RESTRICT];

DROP SCHEMA 스키마이름 [CASECADE | RESTRICT];

DROP DOMAIN 도메인이름 [CASECADE | RESTRICT];

DROP VIEW 뷰이름 [CASECADE | RESTRICT];

DROP INDEX 인덱스이름;

DROP CONSTRAINT 제약조건이름;

RESTRICT : 삭제할 요소가 사용(참조) 중이면 삭제가 이루어지지 않음

CASECADE : 삭제할 요소가 사용(참조) 중이더라도 삭제, 삭제할 테이블을 참조 중인 다른 테이블도 연쇄 삭제

DML

종류

SELECT, INSERT, UPDATE, DELETE

SELECT

SELECT [DISTINCT] 속성이름

FROM 테이블이름

[WHERE 조건] [GROUP BY 속성이름 [HAVING 그룹조건]] [ORDER BY 속성이름 [ASC | DESC]];

NULL 과 비교시 IS NULL 이렇게 IS 사용

속성 매칭은 속성이름 LIKE ‘%AAAA’ 이렇게 사용

INSERT

INSERT INTO 테이블이름(속성들) VALUES (속성들);

UPDATE

UPDATE 테이블이름 SET 속성이름 = 변경내용 [WHERE 조건];

DELETE

DELETE FROM 테이블이름 [WHERE 조건];

DCL

종류

COMMIT, ROLLBACK, GRANT, REVOKE

COMMIT

DB 내 연산이 성공적으로 종료되어 연산에 의한 수정내용을 지속적으로 유지하기 위한 명령어

ROLLBACK

DB 내 연산이 비정상적으로 종료되거나 정상적으로 수행되더라도 수행 이전으로 되돌리기 위해 연산 내용 취소 명령어

GRANT

DBA가 사용자에게 DB 권한을 부여하는 명령어

GRANT 권한 ON 테이블이름 TO 사용자 [WITH GRANT OPTION];

WITH GRANT OPTION : 사용자가 관리자로부터 부여받은 권한을 다른 사용자에게 부여할 수 있는 권한 부여권까지 부여하고자 할때 사용

REVOKE

DBA가 사용자에게 부여한 권한을 취소하기 위해 사용하는 명령어

REVOKE 권한 ON 테이블이름 FROM 사용자 [CASCADE];

인덱스

수많은 데이터 중에 원하는 자료를 빠르고 효율적으로 검색하기 위해 사용하는 방법

구성

인덱스파일(데이터 위치 저장), 데이터 파일(실제 데이터를 기억)

장점 : 검색속도향상, 시스템 부하 감소, 시스템 전체 성능 향상

단점 : 추가 DB공간 필요, 인덱스 생성 시간 필요, 잦은 변경 작업으로 성능 저하

기본키로 만들면 기본 인덱스, 일반 속성으로 만들면 보조 인덱스

종류

B트리

검색 효율을 높이기 위해 자료 구조를 균형 있는 트리 구조로 나타내는 방법

B+트리

B트리의 변형, 인덱스 세트와 순차 세트로 구성

인덱스 세트는 단말 노드를 찾기 위한 인덱스를 제공, 순차 세트는 단말 노드로만 구성

클러스터 인덱스

테이블에서 하나의 속성을 기준으로 정렬시킨 후, 테이블을 재구성해 인덱스를 만드는 방법

물리적 순서와 인덱스 순서가 동일

하나의 테이블에는 하나의 인덱스만 가능

장점 : 일정 범위를 찾는 경우 속도 향상에 도움

넌 클러스터 인덱스

테이블을 재구성하지 않고, 데이터 주소를 이용해 인덱스를 만들어 주소값을 이용해 검색하는 방법

하나의 테이블에 여러 개의 인덱스 만들수 있음

인덱스 구조보다 다소 복잡해질 수 있음

장점 : 한 개의 특정 값을 찾을때, 많은 양 데이터에서 작은 범위를 찾을때

인덱스 스캔 방식

속성값의 유일성에 따라 : unique, nonunique로 구분

인덱스 구성하는 속성 수 : 단일 인덱스, 결합 인덱스

물리적 구성 방식 : B*Tree, 단일맵(Bitmap), 클러스터

하나 이상의 테이블로 부터 유도된 가상의 테이블, 임시 테이블

실제 물리 기억공간은 사용안하며, 논리적 독립성을 제공, 데이터 접근제어로 보안성 향상

특징

기본 테이블이 삭제되면, 자동 삭제, 검색은 일반 테이블과 거의 동일, 삽입, 삭제, 갱신등이 제약이 따름, 보안 측면으로 활용 가능, ALTER 문 불가(삭제후 다시만듬)

시스템 카탈로그

개체들에 대한 정보와 정보들 간의 관계를 저장한 것

데이터 사전이라고 불리며 메타 데이터(저장된 데이터에 관한 데이터)를 저장

시스템 카탈로그는 사용자가 SQL 실행하면 시스템에 의해 자동적으로 이루어짐

일반 테이블과 같이 시스템 테이블로 구성됨

서브 쿼리

상위 질의어에 포함되는 하의 질의어

ORDER BY 사용 안하며, 비교 연산자의 오른쪽에 기술, ()안에서 사용

단일 행 서브 쿼리 : =, <>, < , > , >= ,<= 등으로 사용, 서브 쿼리 수행 결과가 오직 하나일때 다중 행 서브 쿼리 : 서브쿼리 반환 결과가 여러 행이 반환될때, 다중 행 연산자와 사용(IN, ANY, ALL, EXISTS) IN : 메인 쿼리 조건이 서브쿼리 결과 중에 하나라도 일치하면 참 ANY : 메인 쿼리 비교 조건이 서브 쿼리 결과와 하나 이상 일치하면 참 ALL : 메인 쿼리 비교 조건이 서브 쿼리 검색 결과와 모든 값이 일치하면 참 EXISTS : 메인 쿼리 비교 조건이 서브 쿼리 결과 중 만족하는 값이 하나라도 존재하면 참 JOIN 물리적 조인 DB 내부에서 발생한느 테이블 결합 방식, 중첩 반복조인, 정렬 합병 조인, 해시 조인있음 내부 조인 동등 조인 : 동일 컬럼 기준으로 조합하여 나타냄 비동등 조인 : 동일 칼럼 없이 다른 조건 사용 외부조인 : Right Outer Join, Left Outer Join, Full Outer Join 집합 연산자 컬럼 수가 반드시 같아야하고, 컬럼의 자료형이 반드시 같아야 집합 연산 수행가능 UNION : 두질의 결과 행을 합침, 중복 제거 UNION ALL : 두질의 결과 행을 합침, 중복 포함 INTERSECT : 두질의 결과 행의 공통되는 행 MINUS : 첫 번째 질의 겨과에서 두번째 질의 결고에 있는 행을 제거한 값 다중 행 함수 GROUP BY 절에서는 그룹의 기준이 되는 컬러명을 기술, 집계 함수는 SELECT 절과 HAVING절에 사용 (윈도우 함수는 GROUP BY 절에 사용하지 않고 SELECT 절에 사용) GROUP BY 절을 사용한 그룹 처리 함수 ROLLUP, CUBE, GROUPING SETS 함수 ROLLUP함수 주어진 컬럼별 소그룹 간의 집계와 총계를 계산 후 원래 테이블에 추가해 생성된 결과 테이블 반환 결과레벨 : N+1 (컬럼개수 N) ex)GROUP BY ROLLUP(DEPT, GRADE); CUBE함수 주어진 컬럼들 간의 결합 가능한 다차원적인 모든 조합의 그룹 집계와 컬럼별 집계 및 총계를 계산 후 원래 테이블에 추가해 결과 테이블 반환 결과레벨 : 2^N (컬럼개수 N) ex)GROUP BY CUBE(DEPT, GRADE) 일반적으로 ROLLUP, CUBE 둘다 SELECT 절에 추가되어야 유의미한 결과 분석 가능 GROUPING SETS함수 주어진 컬럼별 집계를 계산후 집계의 결과 튜블만 출력 GROUP BY 사용하지 않은 윈도우 함수 윈도우함수는 분석함수라고도함,SELECT 절에만 사용 가능 순위 분석이 많이 나옴 RANK (), DENSE_RANK(), ROW_NUMBER() ex) SELECT UNIQUE DEPT, GRADE, COUNT(*) OVER(PARTITION BY DEPT, GRADE) 인원수 FROM STUDENT ODER BY DEPT, GRADE; RANK() 함수는 전체 또는 윈도우별 행의 순위 구함 공통으로 묶고 다음은 다음 수로, 1이 공동 3명이면 ,111 그다음 4 DENSE_RANK()함수는 그룹 내 비율 함수로 동일한 값의 순위와 상관없이 1 증가 ROW_NUMBER() 함수는 행 순서 함수, 각행의 1부터 절대적으로 증가 절차형 SQL 종류 : 프로시저, 사용자 정의 함수, 트리거 필수 구성 요소 : DECLARE, BEGIN, END PL/SQL 절차적 언어로 어떻게 처리할 것인지를 중점 프로시저, 함수, 트리거로 구성됨 SQL 단점 : 변수가 없음, 제어문 사용 불가, 예외처리 불가, 한번에 하나의 명령만 사용 가능 DECLARE : 선언부 BEGIN : 실행부로 필수절, 명령문들을 절차적으로 작성 EXCEPTION : 예외처리부, 예외처리 명령문을 기술하며 정상적으로 종료 END; : 실행 종료 예약어, 블록의 마지막 라인에 /를 입력 저장 프로시저 DB에 저장된 사용자가 만든 PL/SQL 명령문들을 말함. 자주 사용하는 복잡한 SQL DML 명령문을 서브 프로그램으로 만들고 필요할 때마다 호출하여 사용 성능향상과, 호환성 문제 해결됨 프로시저 : 호출로 실행, RETURN문 X, 블록내 DCL가능 함수 : 호출로 실행, RETURN문 O, 블록내 DCL 가능 트리거 : 호출로 실행 X, RETURN문 X, 블록내 DCL 불가능 매개변수가 있으며, MODE는 IN,OUT,INOUT으로 구성됨, EXECUTE 명령어로 실행 %TYPE 이미 존재하는 다른 변수가 대상 테이블의컬럼 속성과 동일한 자료형을 지정 삭제 : DROP PROCEDURE 프로시저_이름; 사용자 정의 함수 생성 구문 RETURN 명령문에 의해 사용자 정의 함수 처리 결과를 단일값을 가지고 호출한 지점으로 반환 ON REPLACE : 기존에 같은 이름으로 사용자 정의 함수를 생성하면 기존 함수는 제거하고 새로운 내용으로 재생성 MODE 는 IN매개변수만 사용가능, RETURN이 반드시 필요 호출 VARIABLE A NUMBER; EXECUTE :A := BONUS(1100); PRINT A; 제거 DROP FUNCTION BONUS; 이벤트와 트리거 트리거 : DB에 특정 사건이 발생될 때마다 자동으로 수행되는 프로시저 INSERT, UPDATE, DELETE 가 DB테이블 대상으로 실앻될때 자동으로 수행되는 프룃저 트리거는 별도 DB에 저장 DCL 명령은 불가능 행트리거 : 각 행의 값의 변화가 생길때 마다 트리거 수행 , FOR EACH ROW 옵션 문장트리거 : 이벤트에 의해 단 한번만 수행 BEFORE : 트리거 이벤트가 실행되기 전 트리거가 수행 AFTER : 트리거 이벤트가 실행된 후 트리거 수행 SET SERVEROUTPUT ON : 표준 출력을 화면에 볼 수 있도록 설정.(기본은 OFF) 제거 DROP TRIGGER 트리거이름; 반응형

키워드에 대한 정보 정보 처리 기사 실기 데이터베이스 정리

다음은 Bing에서 정보 처리 기사 실기 데이터베이스 정리 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 정보처리기사 실기-2022년 2회 대비 기출분석 및 합격전략

  • 동영상
  • 공유
  • 카메라폰
  • 동영상폰
  • 무료
  • 올리기

정보처리기사 #실기-2022년 #2회 #대비 #기출분석 #및 #합격전략


YouTube에서 정보 처리 기사 실기 데이터베이스 정리 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 정보처리기사 실기-2022년 2회 대비 기출분석 및 합격전략 | 정보 처리 기사 실기 데이터베이스 정리, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

Leave a Comment