정보처리산업기사 실기/데이터베이스

[정보처리산업기사 실기] 데이터베이스 요약 정리본

미웡할꺼야 2020. 11. 8. 19:49
[정리] 데이터베이스 개념 - codingman18.tistory.com/5

 

1.1. 데이터베이스 정의 : 공유하여 사용할 목적으로 통합, 저장, 관리, 운영되는 데이터의 집합.

1) 통합된 데이터(Integrated Data) : 중복을 최소화한 데이터의 집합.

2) 저장된 데이터(Stored Data) : 저장된 데이터의 집합.

3) 공용 데이터(Shared Data) : 공유할수 있도록 만든 데이터의 집합.

4) 운영 데이터(Operational Data) : 중복을 최소화, 관리를 필요로 하는 데이터로 이용가치가 있는 데이터의 집합.

 

1.2. 데이터베이스 특징

1) 계속적인 변화(진화)(Continuous Evolution) : 항상 최신 정보를 유지할 수 있도록 삽입, 삭제, 갱신이 이루어짐.

2) 동시 공유(Concurrent Sharing) : 여러 사용자가 동시에 접근하여 이용.

3) 실시간 접근성(Real-Time Accessibility) : 질의(Query)에 대해 실시간 처리 및 응답.

4) 내용에 의한 참조(Contents Reference) : 데이터의 물리적 주소나 위치에 의하지 않고 사용자가 요구하는 데이터 내용으로 검색(이용)

5) 데이터 중복의 최소화(Redundancy Minimize) : 동일 데이터의 중복성을 최소화해야 함.

 

1.3. 데이터베이스 구성 요소

1) 개체(Entity) : 실제 존재하는 유형 혹은 무형 정보의 대상, 하나 이상의 속성(정보)으로 구성된다.

2) 속성(Attribute) : 가장 작은 논리적 단위로 개체의 특성이나 혹은 상태를 기술하는 것, 속성만으로는 개체를 구분하기 어렵다.

3) 관계(Relationship) : 두 개 이상의 개체 사이 또는 속성 간의 상호 연관성.


[정리] 데이터베이스 관리 시스템(DBMS : DataBase Management System) - codingman18.tistory.com/6
[정리] 데이터베이스 구조(스키마) - 데이터베이스 관리자(DBA: DataBase Administrator) - codingman18.tistory.com/7

 

2.1. DBMS 정의

- 데이터의 중복성과 종속성 등의 문제를 최소화하기위해 등장, 사용자와 데이버테이스 간의 중계 역할.

- 모든 사용자나 응용 프로그램들이 데이터베이스를 공유할 수 있도록 관리/운영해 주는 소프트웨어 시스템을 말한다.

 

2.2. DBMS 구조

 

2.3. DBMS 필수 기능

1) 정의 기능(Definition Facility) : 데이터베이스의 저장에 관한 여러 가지 사항을 정의(생성)하는 기능.

2) 조작 기능(Manipulation Facility) : 검색, 갱신, 삽입, 삭제 등을 지원하는 기능.

3) 제어 기능(Control  Facility) : 데이터의 정확성과 안전성 유지를 위한 관리 기능, 데이터의 무결성 유지, 보안, 병행 수행 제어 등을 제공.

 

2.4. DBMS 장/단점

1) 장점 : 중복성/종속성 최소화, 일관성/무결성 유지, 사용자 간 데이터 공유, 보안 유지, 표준화 구현.

2) 단점 : 전산화 비용 증가, 자료 처리 복잡, 백업과 회복 어려움, 시스템 취약.

 

2.5. DBA 정의

- 데이터베이스 시스템과 관련된 모든 자원에 대해 기획/통제.

- 데이터베이스 언어를 이용해 DBMS를 거쳐 데이터베이스 시스템의 전체적인 관리 운영에 책임을 지는 사람이나 집단.

 

2.6. DBA 역할

1) 데이터베이스 구성 요소를 결정.
2) 저장 구조와 접근 방법을 선정.
3) 보안, 권한 부여, 유효성 검사 등을 수행.
4) 스키마 정의.
5) 예방, 회복 절차 수립 등을 모색.
6) 무결성 유지를 위한 관리.


[정리] 데이터베이스 구조 - 스키마(Schema) - codingman18.tistory.com/7

 

3.1. 데이터베이스의 표현

1) 논리적 구조 : 사용자의 관점에서 본 구조(형태).

2) 물리적 구조 : 저장 장치(기계) 관점에서 본 구조(형태).

 

3.1. 스키마 정의

- 데이터베이스의 전체적인 구조와 제약조건에 대한 명세를 기술/정의한 것을 말하며, 스킴(Scheme)이라고도 한다.

- 상세히 말하면 개체(Entity), 속성(Attribute), 관계(Relation), 제약조건(Constraint)를 기술한 것.

 

3.3. 스키마 3계층

1) 내부 스키마(Internal Schema) : 물리적 저장 장치 관점(기계 관점)에서 본 데이터베이스의 물리적 구조.

2) 개념 스키마(Conceptual Schema) : 논리적 관점(사용자 관점)에서 본 전체적인 데이터 구조.

3) 외부(서브) 스키마(External(Sub) Schema) : 전체 데이터 중 사용자가 사용하는 한 부분에서 본 논리적 구조.

 

스키마 구조

 


[정리] 데이터베이스 설계 - codingman18.tistory.com/8

 

4.1. 데이터베이스 설계 정의 : 데이터베이스의 스키마(Schema)를 정의, 데이터베이스를 구현하기 위한 전반적인 과정.

 

4.2. 데이터베이스 설계 과정(요구조건분석 > 설계(개념적 설계 > 논리적 설계 > 물리적 설계) > 구현 > 유지보수)

1) 요구 조건 분석 : 요구 사항 분석 및 명세서(Specification) 작성.

2) 개념적 설계(Conceptual Design) : 개체 관계를 설계하는 과정, ER모델.

3) 논리적 설계(Logical Design) : 스키마를 정의하는 과정, 데이터 모델링.

4) 물리적 설계(Physical Design) : 효율적인 기계 처리에 맞도록 설계하는 과정, 데이터 구조화.

5) 구현 : 실제 데이터베이스를 만드는 과정.

4) 운영 및 개선(유지보수) : 구현된 데이터베이스를 실제로 운영하는 단계.

 

데이터베이스 설계 과정

 

4.3. 데이터 아키텍쳐(DA : Data Architecture)의 정의

- 기업의 데이터 측면에서 데이터를 구조적/체계적으로 관리하고 설계하는 모든 과정.

- 기존의 데이터 모델링을 포함한 포괄적인 개념.


[정리] 개체-관계 모델(Entity-Relationship Model, ERM) - codingman18.tistory.com/9

 

5.1. ERM 정의

- 개념적 설계 단계에서 사용되는 실제 기법.

- 데이터베이스의 전반적인 구조를 이해하기 쉽도록 표현한 모델.

- P.chen 박사가 제안.

 

5.2. ERM 기호

1) 사각형 : 개체(Entity).

2) 마름모 : 관계(Relationship).

3) 타원 : 속성(Attribute).

4) 밑줄 타원 : 기본키(Primary Key) 속성.

5) 복수 타원 : 복합 속성.

6) 사각형-마름모-사각형 : 개체 간 관계.

7) 선(링크) : 개체, 속성 연결.

 

5.3. 데이터베이스 모델 정의 : 논리적 설계 단계에서 사용되는 모델, 데이터 모델로 변환하기 위해 사용.

 

5.4. 데이터베이스 모델 종류

1) 관계 데이터 모델(=표 데이터 모델) : 2차원 구조의 표(테이블) 형태로 표현.

2) 네트워크 모델(=망 데이터 모델) : 레코드 타입 간 관계를 도형으로 표현.

3) 계층 데이터 모델(=트리 데이터 모델) : 부모-자식 관계, 즉 1 : N 관계를 나타낸다.


[정리] 관계 데이터 모델 - codingman18.tistory.com/10

 

6.1. 관계 데이터 모델 정의 : 2차원 구조의 표(테이블)로 표현하는 방법.

 

6.2. 관계 데이터 모델 용어

1) 릴레이션(Relation) : 2차원 구조의 테이블(표).

2) 속성(Attribute) : 각 열(Column = 항목).

3) 튜플(Tuple) : 속성들의 집합(Tuple = Row = Record).

4) 도메인(Domain) : 하나의 속성이 가질 수 있는 값들의 범위.

5) 릴레이션 스키마(Relation Schema) : 릴레이션의 이름과 속성 이름의 집합(릴레이션의 구조).

6) 릴레이션 인스턴스(Relation Instance) : 튜플들의 집합.

7) 차수(Degree) : 속성(항목)의 수.

8) 카디널리티(Cardinality) : 튜플(행)의 수.

 

6.3. 릴레이션의 특징

1) 튜플들은 모두 상이하다(서로 다르다).
2) 튜플들은 유일하며 순서에는 의미가 없다.
3) 속성들 간의 순서는 의미가 없다.
4) 속성값은 원자값으로 구성되며 분해가 불가능하다.

 

6.4. ERM과 관계 데이터 모델의 관계

1) Mapping Rule : 개념적 설계(E-R Model) => 논리적 설계(관계 데이터 모델) 변환 과정(개체 > 릴레이션(테이블) / 속성 > 릴레이션의 항목 / 키 속성(식별자) > 기본키 / 관계 > 외래키).

2) 교차 엔티티(Intersection Entity) : N : M(다 대 다) 관계일 경우 관계용 릴레이션을 만듬.


[정리] 키(Key)와 무결성 제약조건(Integrity Constraint) - codingman18.tistory.com/11

 

7.1. 키(Key)의 개념 : 관계 데이터베이스에서 튜플을 식별하기 위해 사용하는 속성이나 속성의 집합.

 

7.2. 키(Key) 종류

1) 후보키(Candidate Key) : 각 튜플을 유일하게 식별할 수 있는 속성들의 부분집합, 유일성과 최소성 만족.

    * 유일성 : 각 튜플을 유일하게 식별하는 성질을 말한다.
    * 최소성 : 각 튜플을 유일하게 식별할 수 있는 최소 구성의 성질을 말한다.

2) 기본기(Primary Key) : 후보키 중 특별히 선택된 키, 중복값 X, NULL값 X, 유일성과 최소성 만족.

3) 대체키(Alternate Key) : 후보키 중에서 기본키를 제외한 속성.

4) 외래키(Foreign Key) : 다른 테이블을 참조(이용)하기 위해 사용되는 속성, 외래 식별자라고도 한다.

    * 식별 관계 : 외래키가 기본키인 경우.
    * 비식별 관계 : 외래키가 일반 속성인 경우.

5) 슈퍼키(Super Key) : 한 릴레이션(테이블) 내의 튜플들을 식별할 수 있는 후보키와 다른 속성들과의 모든 조합, 유일성은 만족하지만, 최소성은 만족못함.

 

7.3. 무결성 정의 : DB에 저장된 값과 현실세계 실제 값이 일치하는 정확성.

7.4. 제약조건 정의 : 정확성과 완전성을 유지하기 위한 제약조건.

 

7.5. 무결성 제약조건 종류

1) 개체 무결성 : 기본키는 NULL값이 올 수 없으며, 중복될 수 없음을 나타내는 제약조건.

2) 참조 무결성 : 외래키는 NULL값이 올 수 있으며, 참조 릴레이션(테이블)의 기본키와 같아야 하는 제약조건.

3) 도메인 무결성 : 속성값의 정해진 범위 이내의 값으로 구성해야 하는 제약조건.

4) 고유(Unique) 무결성 : 특정 속성 내 각 튜플 값은 서로 달라야 하는 제약조건.

5) NULL 무결성 : 특정 속성 값은 NULL이 될 수 없는 제약조건.

6) 키 무결성 : 한 릴레이션(테이블)에 최소한 하나의 키가 존재해야 하는 제약조건이다.


[정리] 관계 데이터 연산 - codingman18.tistory.com/12

 

8.1. 관계 대수(Relational Algebra) 정의 : 릴레이션에서 사용자가 원하는 결과를 얻기 위해 연산자를 표현하는 절차적 언어.

 

8.2. 관계 대수(Relational Algebra) 종류(순수 관계 연산자)

1) SELECT(기호 : σ) : σ<선택조건>(테이블명), 수평적 부분 집합(튜플).

2) PROJECT(기호 : π) : π<추출 속성리스트>(테이블명), 수직적 부분 집합(속성의 값).

3) JOIN(기호 : ⋈) : 테이블1⋈<조인 조건>테이블2, 하나의 테이블로 만드는 연산.

    * 동일 조인(Equi Join) :  '=' 연산자만 사용, 중복 속성 모두 표현.

    * 자연 조인(Natural Join) : 중복 속성 제거하여 표현.

    * 외부 조인(Outer Join) : 조건에 맞지 않는 튜플도 표현, 해당 자료가 없는 부분은 NULL값 처리.

    * 세타 조인(Theta Join) : '=' 외의 연산자만 사용, 중복 속성 모두 표현.

4) DIVISION(기호 : ÷) : 테이블1(테이블1속성 ÷ 테이블2속성)테이블2, 연산에 사용된 속성은 결과에서 제외.

 

8.3. 관계 대수(Relational Algebra) 종류(일반 집합 연산자)

1) 합집합(기호 : ∪) : X∪Y, 합집합하여 모두 표현. 중복 속성 한 번만 표현.

2) 교집합(기호 : ∩) : X∩Y, 서로 같은 속성값만 표현.

3) 차집합(기호 : -) : X-Y, X테이블의 속성값에서 Y테이블의 속성값을 제외한 값을 표현.

4) 카티션 프로덕트(기호 : ×) : X×Y, 두 테이블의 속성값을 모두 대응시켜 모든 경우를 표현.

 

8.4. 관계 해석(Relational Calculus) 정의 : 릴레이션에서 결과를 얻기 위한 과정, 연산자 없이 정의하는 방법을 이용하는 비절차적 언어.

8.5. 관계 해석(Relational Calculus) 종류 : 튜플 관계 해석, 도메인 관계 해석.

8.6. 관계 해석(Relational Calculus) 표기 형식 : {결과값 | 조건}


[정리] SQL 정의어(DDL : Data Definition Language) - codingman18.tistory.com/13

 

9.1. DDL 정의 : 관계 데이터베이스에서 사용될 테이블, 스키마, 도메인, 인덱스, 뷰 등을 정의(생성)하거나 수정/제거하기 위해 사용되는 언어.

 

9.2. DDL 종류

1) CREATE(생성)

- 테이블 생성

CREATE TABLE 테이블명
(
    {속성명 데이터타입 [NOT NULL][DEFAULT 값],}
    [PRIMARY KEY(속성명),]
    [UNIQUE(속성명),]
    [FOREIGN KEY(속성명) REFERENCES 참조테이블(속성명)]
        [ON DELETE CASCADE | SET NULL | SET DEFAULT | NO ACTION]
        [ON DELETE CASCADE | SET NULL | SET DEFAULT | NO ACTION],
    [CONSTRAINT 제약조건명][CHECK(속성명=범위값)]
);

 

- 스키마 생성 : 시스템 관리자가 일반 사용자에게 스키마에 대한 권한을 주기 위해 사용.

CREATE SCHEMA 스키마명 AUTHORIZATION 사용자;

 

- 도메인 생성 : 한 속성값의 범위를 지정.

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

 

- 뷰 생성 : 기존 테이블로부터 유도되어 만들어진 가상(임시) 테이블 정의.

CREATE VIEW 뷰명[(뷰_속성명)]
AS SELECT 기본테이블의 속성명
FROM 기본테이블명
[WHERE 조건]
[WITH CHECK OPTION];

 

- 인덱스 생성 : 자료를 보다 효율적으로 검색하기 위해 생성, 시스템이 자동 관리.

CREATE [UNIQUE] INDEX 인덱스명
ON 테이블명(속성명 [ASC | DESC])
[CLUSTER];

 

2) ALTER(변경) : 기존 테이블의 속성을 추가, 변경, 삭제할 때 사용하는 명령어.

- 추가 : ALTER TABLE 테이블명 ADD 속성명 데이터타입 [DEFAULT];
- 변경 : ALTER TABLE 테이블명 ALTER 속성명 [SET DEFAULT];
- 삭제 : ALTER TABLE 테이블명 DROP 속성명 [CASCADE | RESTRICT];

 

3) DROP(삭제) : 기존 테이블, 스키마, 도메인, 인덱스, 뷰, 제약조건 등을 제거할 때 사용하는 명령어, 삭제 시 전체가 삭제된다.

- 테이블 삭제 : DROP TABLE 테이블명 [CASCADE | RESTRICT];
- 스키마 삭제 : DROP SCHEMA 스키마명 [CASCADE | RESTRICT];
- 도메인 삭제 : DROP DOMAIN 도메인명 [CASCADE | RESTRICT];
- 뷰 삭제 : DROP VIEW 뷰명 [CASCADE | RESTRICT];
- 인덱스 삭제 : DROP INDEX 인덱스명;
- 제약조건 삭제 : DROP CONSTRAINT 제약조건명;

    * RESTRICT : 삭제할 요소가 사용(참조) 중이면 삭제되지 않는다.
    * CASCADE : 삭제할 요소가 사용(참조) 중이더라도 삭제되며, 삭제할 테이블을 참조 중인 다른 테이블도 연쇄적으로 같이 삭제.


 

[정리] SQL 조작어(DML : Data Manipulation Language) - codingman18.tistory.com/14

 

10.1. DML 정의 : 데이터베이스 내의 자료를 실제 사용자가 이용(조작)하기 위한 언어.

 

10.2. DML 종류 : SELECT, INSERT, UPDATE, DELETE


[정리] SQL 제어어(DCL : Data Control Language) - codingman18.tistory.com/15

 

11.1. DCL 정의 : 관리자가 데이터의 보안, 무결성 유지, 병행제어, 회복 등을 하기 위해 사용하는 언어.

 

11.2. DCL 종류

1) COMMIT : 연산이 성공적으로 종료되어 수정 내용을 지속적으로 유지하기 위한 명령어.

2) ROLLBACK : 수행되기 이전 상태로 되돌리기 위해 연산 내용을 취소할 때 사용하는 명령어.

3) GRANT : 관리자가 사용자에게 데이터베이스에 대한 권한을 부여하기 위한 명령어.

- RANT 권한 내용 ON 테이블명 TO 사용자 [WITH GRANT OPTION];

4) REVOKE : 관리자가 사용자에게 부여했던 권한을 취소하기 위해 사용되는 명령어.

- REVOKE 권한 내용 ON 테이블명 FROM 사용자 [CASCADE];


[정리] 뷰(VIEW)와 시스템 카탈로그(System Catalog) - codingman18.tistory.com/16

 

12.1 뷰 정의

- 하나 이상의 테이블로부터 유도되어 만들어진 가상 테이블.

- 처리 과정 중의 내용이나 기본 테이블 중 일부 내용을 검색해 보여주거나 별도로 관리하고자 하는 경우 사용하는 임시 테이블.

- 실제 물리적 기억공간을 차지하지 않음, 논리적 독립성 제공, 보안성 향상.

 

12.2. 시스템 카탈로그(System Catalog) 정의

- 개체들에 대한 정보와 정보들 간의 관계를 저장한 것, 그 자체가 하나의 작은 데이터베이스.

- 데이터 사전(Data Dictionary)이라고도 한다.

- 저장된 데이터를 메타 데이터(Meta Data)라고 한다.

- 메타 데이터(Meta Data) : 저장된 데이터에 관한 데이터를 말한다.

- 일반 테이블과 같이 시스템 테이블로 구성.

일반 사용자도 시스템 카탈로그의 내용을 검색할 수 있지만, 시스템 카탈로그의 내용을 삽입, 삭제, 갱신 등은 불가능하다.

- 시스템 카탈로그 갱신은 사용자가 SQL문을 실행하면 시스템에 의해 자동적으로 이루어진다.


[정리] 이상(Anomaly)과 함수적 종속(Fuctional Dependency) - 이상(Anomaly) - codingman18.tistory.com/17

 

13.1. 이상 정의 : 데이터의 중복과 종속으로 인해 발생되는 문제점.

 

13.2. 이상 종류

1) 삭제 이상(Deletion Anomaly) : 원치 않은 자료까지 함께 삭제가 이루어져 발생하는 문제점.

2) 삽입 이상(Insertion Anomaly) : 원치 않는 자료가 삽입 혹은자료가 부족해 삽입이되지 않아발생하는 문제점을 말한다.

3) 갱신 이상(Update Anomaly) : 정확하지 않거나 일부의 튜플만 갱신, 정보가 모호해지거나 일관성이 없어져 정보 파악이 안 되는 현상.

 

13.3. 함수적 종속 정의

- B가 A에 종속되어 A값을 알면 B값을 알 수 있을 때, B는 A에 함수적으로 종속되었다고 한다.

- A를 '결정자'라고 하고, B를 '종속자'라고 한다.

- 기호로는 'A -> B'로 표기한다.

 

13.4. 함수적 종속 종류

1) 완전 함수 종속(Full Functional Dependency) : 속성들이 기본키에만 종속이 되는 경우, A->(B, C, D).

2) 부분 함수 종속(Partial Functional Dependency) : 기본키가 2개 이상 합성키(복합키)로 구성된 경우 이 중 일부 속성에 종속이 되는 경우, (A, B)->(C or D) or B->D.

3) 이행적 함수 종속(Transitive Functional Dependency) : A를 알면 B를 알고, B를 알면 C를 알 수 있을 때, A를 알면 C를 알 수 있는 경우, A->B, B->C, A->C.


[정리] 정규화(Normalization) - codingman18.tistory.com/18

 

14.1. 정규화 정의 : 논리적 설계 단계에서 종속으로 인한 이상(Anomaly) 현상의 문제점을 해결하기 위해, 여러 개의 릴레이션으로 분해하는 과정.

 

14.2. 정규화 종류

1) 제1정규형(1NF : First Normal Form) : 모든 도메인이 원자값(Atomic Value)만으로 구성.

2) 제2정규형(2NF : Second Normal Form) : 제1정규형을 만족, 부분 함수 종속 제거 -> 완전 함수 종속.

3) 제3정규형(3NF : Third Normal Form) : 제2정규형을 만족, 이행적 함수 종속 -> 비이행적 함수 종속.

4) 보이스-코드 정규형(BCNF : Boyce-Codd Normal Form) : 제3정규형을 만족, 후보키가 아닌 결정자 관계 제거.

5) 제4정규형(4NF : Fourth Normal Form) : 다치 종속 관계 제거.

6) 제5정규형(5NF : Fifth Normal Form) : 후보키를 통하지 않은 조인 종속 관계 제거.

    * 외울 때 1NF(도) - 2NF(부) - 3NF(이) - BCNF(결) - 4NF(다) - 5NF(조) 로 외우는 것을 추천.


[정리] 역정규화 - codingman18.tistory.com/19

 

15.1 역정규화 정의 : 정규화된 릴레이션을 물리적 데이터 모델링 과정에서 성능 향상을 위해 중복을 허용하더라도 다시 통합하거나 분할하여 구조를 재조정하는 것.

 

15.2. 역정규화 종류

1) 릴레이션 역정규화 : 두 릴레이션을 합하거나 하나의 릴레이션을 분할하는 방법.

1.1) 릴레이션 병합 : 두 릴레이션 간의 잦은 데이터 참조로 성능이 저하되는 문제점을 해결하기 위해 두 릴레이션을 합하는 방법.

1.2) 릴레이션 분할 : 자주 사용되는 속성이나 튜플과 자주 사용되지 않는 속성이나 튜플을 분해, 성능 향상.

- 수직 분할 : 자주 사용되는 속성과 그렇지 않는 속성을 구분해서 분할하는 방법.

- 수평 분할 : 자주 사용되는 튜플과 그렇지 않는 튜플을 구분해서 분할하는 방법.

2) 속성 역정규화 : 성능 향상을 위해 속성 단위로 추가하거나 필요한 속성을 만드는 것.

- 속성 추가 : 두 릴레이션 A, B에서 A의 외래키에 의해 B의 특정 속성값을 자주 참조하는 경우 B의 속성을 A 릴레이션에 추가하는 방법.

- 파생속성 추가 : 릴레이션에 파생속성을 추가하여 성능을 향상시키는 방법.


[정리] 내장 SQL(Embedded-SQL)과 커서(Cursor) - codingman18.tistory.com/20

 

16.1. 내장 SQL 정의 : 응용 프로그램이 실행될 때 같이 실행되도록 호스트 프로그램 언어에 삽입된 SQL.

 

16.2. 내장 SQL 특징

1) 호스트 프로그램 실행 시 같이 실행.

2) 결과값으로 여러 자료(튜플)가 아닌 하나의 자료(튜플)만 얻을 수 있다.

3) 호스트 변수명과 데이터베이스의 속성명은 같아도 무방하다.

4) 데이터베이스 속성의 데이터 타입과 호스트 변수의 데이터 타입은 서로 같아야 한다.

 

16.3. 내장 SQL 기본 구문

1) 호스트 변수 선언 구문 : EXEC SQL BEGIN DECLARE SECTION; [데이터_타입 호스트_변수명;] EXEC SQL END DECLARE SECTION;

2) 단일 튜플 검색 : EXEC SQL SELECT {속성_이름} INTO {:호스트_변수명} FROM 테이블_이름 WHERE 조건;

3) 삽입 : EXEC SQL INSERT INTO 테이블_이름(속성명) VALUES(:호스트_변수명);

4) 갱신 : EXEC SQL UPDATE 테이블_이름 SET 변경내용 WHERE 조건;

5) 삭제 : EXEC SQL DELETE FROM 테이블_이름 WHERE 조건;

 

16.4. 커서 정의

- 여러 개의 자료(튜플)를 그룹으로 처리하기 위해 이용.

- 커서 실행 후 튜플들의 집합을 처리하는 데 사용되는 위치(포인터) 역할, 한 번에 하나씩 순서대로 수행.

 

16.5. 커서 명령어

1) DECLARE : 사용할 커서를 선언하기 위한 명령어.

2) OPEN : 커서를 첫 번째 튜플로 이동하기 위한 명령어.

3) FETCH : 순서대로 처리하기 위해 커서를 다음 튜플로 이동하는 명령어.

4) CLOSE : 처리가 완료된 후 커서를 종료하는 명령어.

5) 진행 순서 : DECLARE - OPEN - FETCH - CLOSE

 

16.6. 스토어드 프로시저(Stored Procedure) 정의

- 반복되는 작업을 하나의 작은 프로그램으로 작성하여 데이터베이스에 저장.

- 필요한 경우 호출하여 사용하기 위해 만들어 놓은 프로그램.

- 작업이 효율적이며 수행시간 단축.

 

16.7. 스토어드 프로시저(Stored Procedure) 종류

1) 프로시저 생성

CREATE PROCEDURE 프로시저_이름

BEGIN

    SQL 처리 내용

END;

 

2) 프로시저 삭제

DROP PROCEDURE 프로시저_이름;


[정리] 트랜잭션(Transaction) - codingman18.tistory.com/21

 

17.1. 트랜잭션 정의

- 하나의 작업 처리를 위한 논리적 작업 단위.

- 연산은 한꺼번에 완료되어야 하며 그렇지 못한 경우 모두 취소되어야 한다.

 

17.2. 트랜잭션의 성질(ACID 성질)

1) 원자성(Atomicity) : 트랜잭션 내의 연산이 모두 수행되거나 수행되지 않아야 함.

2) 일관성(Consistency) : 트랜잭션 완료 후 언제나 일관성 있는 데이터베이스 상태.

3) 격리성(독립성)(Isolation) : 하나의 트랜잭션이 수행 중 다른 트랜잭션의 접근 방지, 각각의 트랜잭션은 독립적이어야 함.

4) 영속성(지속성)(Durability) : 트랜잭션 완료 후 결과는 지속적으로 유지되어야 함.

 

17.3. 트랜잭션 연산

1) COMMIT : 트랜잭션 정상종료 후 수정된 내용을 지속적으로 유지하기 위한 연산.

2) ROLLBACK : 트랜잭션 오류 발생 시 수행 작업을 취소하고 이전 상태로 되돌리기 위한 연산.

 

17.4. 트랜잭션의 상태도(수행 과정)

1) 실행 : 현재 실행 중인 상태.

2) 부분 완료 : 실행을 모두 마치고, 데이터베이스에 결과를 저장하기 직전 상태.

3) 완료 : 트랜잭션의 연산을 정상적으로 마치고, 연산 결과를 데이터베이스에 저장한 상태.

4) 실패 : 트랜잭션 실행 중 오류에 의해 더 이상 진행될 수 없는 상태.

5) 철회 : 트랜잭션 실행이 실패되어 복귀되는 상태.

트랜잭션의 상태도

 

17.5. 트랜잭션 스케줄(Transaction Schedule) 정의 : 동시에 여러 개의 트랜잭션들이 병행 실행되는 경우 트랜잭션의 연산들이 실행되는 순서를 말하는 것.

 

17.6. 트랜잭션 스케줄(Transaction Schedule) 종류

1) 직렬 스케줄(Serial Schedule) : 한 트랜잭션을 구성하는 연산들을 연속적으로 모두 실행하고 다른 트랜잭션을 수행하는 방식.

2) 비직렬 스케줄(Nonserial Schedule) : 인터리브 실행 기법, 각 트랜잭션의 연산들을 번갈아가면서 병행 실행하는 방법.

3) 직렬 가능 스케줄(Serializable Schedule) : 직렬 스케줄 결과와 비직렬 스케줄 결과가 동일하게 나오는 경우.


[정리] 회복 기법과 병행(동시성) 제어(Concurrency Control) - codingman18.tistory.com/22

 

18.1. 회복 정의 : 손상되기 이전의 정상적인 상태로 복구시키는 작업, 회복을 위해 로그(Log)를 이용.

 

18.2. 회복 종류

1) 회복 기법

- 즉시 갱신 기법 : 변경된 내용을 바로 데이터베이스에 적용, 장애 발생 시 Log의 내용을 토대로 회복.

- 지연 갱신 기법 : 부분 완료가 될 때까지 지연시킨 후 부분 완료가 되면 Log의 내용을 토대로 데이터베이스에 적용.

- 검사 시점 기법 : 중간에 검사 시점(Check Point)을 지정, 검사 시점까지 수행 후 완료된 내용을 데이터베이스에 적용.

- 그림자 페이징(Shadow Paging 기법) : Log를 사용하지 않고, 데이터베이스를 동일한 크기의 단위인 페이지로 나뉘어 각 페이지마다 복사하여 그림자 페이지를 보관하는 기법, 장애가 발생되는 경우 그림자 페이지를 이용해 회복함.

 

2) REDO(재수행)와 UNDO(취소)

- REDO : COMMIT 시 로그(Log)의 내용을 토대로 재수행하며 변경된 내용을 데이터베이스에 반영하게 되는 과정.

- UNDO : 트랜잭션 오류 발생 시 트랜잭션이 시작되는 시점으로 되돌아가는 과정.

REDO와 UNDO의 수행

 

18.3. 데이터베이스 수행 시 발생되는 장애의 유형
1) 트랜잭션 장애 : 트랜잭션 수행 과정에서 발생하는 오류.
2) 시스템 장애 : 트랜잭션 장애들로 인해 시스템 상의 문제가 발생하여 트랜잭션이 수행되지 못하는 경우. 예로 컴퓨터 다운.
3) 미디어 장애 : 하드웨어적으로 손상되는 경우.

 

18.4. 병행 제어 정의

- 동시에 여러 개의 트랜잭션이 실행되는 경우 트랜잭션 간의 격리성을 유지하여 트랜잭션 수행에 문제가 발생되지 않도록 제어하는 것.

- 대표적인 병행 제어의 방법으로 로킹(Locking) 기법이 있다.

 

18.5. 로킹(Locking)

1) 로킹의 정의

- 하나의 트랜잭션이 사용 중 다른 트랜잭션이 접근하지 못하게 하는 것.

- LOCK -> 트랜잭션 실행 -> 트랜잭션 완료 -> UNLOCK.

 

2) 로킹의 접근 허용 : 교착상태(Deadlock)를 방지하기 위해 공유 락(Shared Lock)과 배타 락(Exclusive Lock)을 이용.

- 공유 락(Shared Lock) : 사용 중인 데이터에 대해 읽기만 허용, 쓰기는 허용하지 않는 방법.

- 배타 락(Exclusive Lock) : 사용 중인 데이터에 대해 읽기와 쓰기 모두 허용하지 않는 방법.

* 교착상태(Deadlock) : 한 트랜잭션이 완료되지 못해 LOCK상태가 계속 유지되는 경우 다른 트랜잭션들의 작업이 더 이상 진행되지 못하고 무한정 기다리는 상태.

 

3) 로킹 단위 : LOCK을 설정할 데이터의 크기, 테이블, 속성, 튜플 단위로 설정할 수 있다.

- 로킹 단위가 크면 많은 양의 데이터의 LOCK 설정이 가능하고, 설정한 가짓수가 적어지며, 병행성 수준이 낮아진다.

- 로킹 단위가 작으면 적은 양의 데이터의 LOCK 설정이 가능하고, 설정한 가짓수가 많아지며, 병행성 수준이 높아진다.

 

4) 2단계 로킹 기법(Two-Phase Locking Protocol) : LOCK설정 대상 데이터가 여러 개인 경우 모든 데이터에 LOCK을 설정하는 단계와 완료 후 LOCK을 해제하는 단계의 2단계로 구성된 기법, 교착상태(Deadlock)가 발생할 수 있는 단점이 있다.

- 확장 단계(Growing Phase) : 실행 중인 트랜잭션에 LOCK을 설정하는 단계.

- 축소 단계(Shrinking Phase) : 완료된 트랜잭션에 LOCK을 해제하는 단계.

 

5) 타임 스탬프(Time Stamp) : 데이터에 접근할 시간을 미리 지정, 시간(Time Stamp)의 순서에 따라 접근하여 수행하는 방법, 교착상태(Deadlock)가 발생하지 않는다.

 

6) 병행 제어를 하지 않았을 때의 문제점

- 갱신 분실(Lost update) : 복수의 트랜잭션 수행 중 연산 결과의 일부가 없어지는 현상.

- 모순성(Inconsistency) : 복수의 트랜잭션 결과가 일관성 없이 서로 다른 현상.

- 연쇄 복귀(Cascading Rollback) : 트랜잭션 취소 시 다른 트랜잭션도 연쇄적으로 취소되는 현상.

- 비완료 의존성(Uncommittes Dependency) : ROLLBACK 시 다른 트랜잭션이 실패한 갱신 결과를 참조하는 현상.


[정리] 인덱스(INDEX) - codingman18.tistory.com/23

 

19.1. 인덱스 정의

- 원하는 자료를 빠르고 효율적으로 검색하기 위해서 사용하는 방법.

- 인덱스 파일(Index File) : 데이터의 위치(주소)를 관리/기억, [키 값, 주소]의 두 가지 정보로 구성된다.

  * 키 값 : 인덱스를 만들 때 사용된 속성의 값, 주소 : 실제로 자료가 저장된 위치.

- 데이터 파일(Data File) : 실제 데이터를 기억.

- 데이터를 검색할 때는 먼저 인덱스 파일에서 데이터의 주소를 찾고 데이터 파일에서 인덱스 파일에서 찾은 주소의 데이터를 검색하게 된다.

 

19.2. 인덱스 구조

1) B-트리(Balanced Tree)

- 자료의 구조를 균형 있는 트리 구조로 나타내는 방법, 하나의 노드에는 여러 개의 자료를 기억.

- 한 노드의 키 값은 반 이상 채워져 있으며, 오름차순 정렬되어 있다.

2) B+-트리

- B트리의 변형으로 인덱스 세트와 순차 세트로 구성된다.

- 인덱스 세트는 단말 노드를 찾기 위한 인덱스를 제공하고, 순차 세트는 단말 노드로만 구성되어 있다.

- 순차 세트의 단말 노드에는 모든 키 값이 다시 나타나도록 하여 단말 노드만으로도 순차 검색이 가능하다.

 

19.3. 인덱스 종류

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

- 테이블에서 하나의 속성을 기준으로 정렬시킨 후 테이블을 재구성하여 인덱스를 만드는 방법.

- 물리적으로 행을 재배열.

- 넌 클러스터드 인덱스 페이지 용량보다 작다.

- 일정한 범위를 가지고 찾는 경우 속도 향상에 도움이 된다.

- 테이블 : 인덱스 = 1 : 1

 

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

- 테이블을 재구성하지 않고, 데이터 주소를 이용하여 인덱스를 만들어 주소값을 이용하여 검색하는 방법.

- 물리적으로 재배열 하지 않는다.

- 클러스터드 인덱스 페이지 용량보다 크다.

- 테이블 : 인덱스 = 1 : N

- 특정값, 복수 데이터 중 작은 범위를 찾을 때 유용.


[정리] 객체 지향 데이터베이스(OODB) - codingman18.tistory.com/24

 

20.1. 객체 지향 기법의 특징

1) 객체(Object) : 서로 구별되는 개념적인 단위, 개체(Entity)의 개념과 처리 기능을 갖는 연산자까지 포함된 하나의 단위 시스템

2) 복합 객체(Complex Object) : 한 객체가 가지고 있는 속성으로 다른 객체를 이용하기 위한 것.

3) 속성(Attribute) : 객체의 특성이나 상태.

4) 메시지(Message) : 객체에 어떤 처리를 하도록 지시하는 명령

5) 메소드(Method) : 메시지에 따라 객체가 실행해야 할 구체적인 연산.

6) 클래스(Class) : 유사한 성격과 공통적인 특성을 갖는 객체들의 모임

7) 캡슐화(Encapsulation) : 정보들의 묶음, 정보은폐(정보은닉)

8) 상속(계승 : Inheritance) : 클래스의 계층구조에서 상위 클래스의 특징과 정보 등을 하위 클래스에서 그대로 재사용할 수 있는 개념.

9) 다형성(Polymorphism) : 동일한 객체더라도 경우에 따라 다른 의미의 연산으로 사용될 수 있는 개념.


[정리] 보안(Security) - codingman18.tistory.com/25

 

21.1. 보안 정의 : 통제된 접근을 통해 정보를 안정적으로 관리하는 것.

 

21.2. 정보 보안의 목표

1) 기밀성(Confidentiality) : 비허가자는 정보 내용을 알 수 없도록 하는 것.

2) 무결성(Integrity) : 비허가자가 정보를 함부로 수정/삭제 등을 변경할수 없도록 하는 것.

3) 가용성(Availability) : 허가자가 정보에 접근하고자 할 때 방해받지 않도록 하는 것.

 

21.3. 정보 보안의 방법

1) 물리적인 방법 : 자물쇠나 사람의 감시 등의 방법.

2) 비물리적인 방법 : 암호화 기법을 이용하는 방법.

 

21.4. 암호화 기법

구분 대칭키 시스템 비대칭키 시스템
작동 방식 비트 연산. 소인수 분해를 통한 수학적 계산.
단일키 사용. 공개키, 비밀키 사용.
장점 속도가 빠르고, 알고리즘이 간단함. 보안성이 좋으며, 키 관리가 수월함.
단점 사용자의 수만큼 키가 생성되므로 관리가 어려움. 속도가 느리고, 알고리즘이 복잡함.
대표 시스템 DES RSA

DES 기법과 RSA 기법

* 평문(Plain Text) : 보호해야 할 메시지나 정보.

* 암호문(Cipher Text) : 평문을 암호화 기법으로 변환하는 것.

* 암호화(Encryption) : 평문을 암호문으로 변환하는 과정.

* 복호화(Decryption) : 암호문을 다시 평문으로 변환하는 과정.

 

21.5. 데이터베이스 보안 방법 : DCL이용, 뷰(VIEW) 이용.


[정리] 기타 데이터베이스 용어 - codingman18.tistory.com/26

 

22.1. 개체(Entity)의 종류

1) 독립 개체(Independent Entity) : 다른 개체에 종속되지 않고, 그 개체(Entity) 내에서 모든 검색, 변경 등이 가능한 개체.

2) 종속 개체(Dependent Entity) : 원하는 연산을 하기 위해 다른 개체를 참조해야 하는 개체.

 

22.2. 속성(Attribute)의 종류

1) 단순 속성(Simple Attribute) : 속성값을 더 이상 작은 단위로 나눌 수 없는 속성.

2) 복합 속성(Composite Attribute) : 속성값을 여러 개의 작은 단위로 나눌 수 있는 속성.

3) 결합 속성(Conccatenate Attribute) : 복수의 속성값을 합쳐 단일 속성으로 구성된 속성.

4) 설계 속성(Designed Attribute) : 설계의 편의상 만든 속성.

 

22.3. 관계(Relationship)의 종류

1) 중복 관계(Redundant Relationship) : 두 테이블 간의 참조가 두 가지 이상의 속성으로 참조할 수 있는 경우, Outer Join.

2) 재귀 관계(Recursive Relationship) : 하나의 테이블 내에서 자기 자신의 테이블 내용을 참조하는 경우, Self Join.

 

22.4. 분산 데이터베이스(Distributed Database)

1) 정의 : 통신 네트워크를 통해 복수의 컴퓨터에 데이터를 분산시켜 저장/관리, 정보 요청 시 각각 컴퓨터에서 직접 처리/제공.

* 투명성(Transparency) : 복수로 나누어진 DB를 사용자는 하나의 DB로 느끼는 것.

2) 분산 형태

- 수평분산(Horizontal Distribution) : 복수의 동등한 서버(컴퓨터)에 저장시켜 운영, 하나의 서버에 문제가 발생하더라도 DB운영에 지장을 주지 않음.

- 수직분산(Vertical Distribution) : 운영하는 주 서버, 처리하는 부 서버로 구성하여 운영, 주 서버에 장애 발생 시 전체 운영에 지장을 줌.

3) 장단점

- 장점 : 처리 신속, 확장성 용이, 신뢰성/가용성 증진, 효율성/융통성.

- 단점 : 구축 복잡, 오류 증가, 구축/운영비 증가.

 

22.5. 튜닝(Tuning)

1) 정의 : 데이터베이스 시스템을 최적화하기 위해 재조정(조율)하는 것.

2) 고려사항

- 신속한 검색이 이루어지도록 한다.

- SQL 명령어 작성 시 표준화된 형태로 작성한다.

- 트랜잭션의 무결성을 유지, Locking기법을 사용.

 

22.6. CRUD(CreateReadUpdateDelete) 매트릭스 : 2차원 구조의 행렬 구조로 표현함으로써 응용 시스템과 데이터베이스 간의 업무 분석을 하기 위한 상관 분석표.

 

22.7. 트리거(Trigger) : 테이블의 내용이 바뀌었을 때 데이터의 일관성/무결성 유지를 위해 연관된 테이블도 연쇄적으로 변경이 이루어질 수 있도록 하는 것.

 

22.8. 행 이주(Row Migration) : 새 데이터를 입력 혹은 기존 데이터 변경 시 기존 데이터 블럭에 저장 공간이 없을 때 블럭을 옮겨 저장하는 현상, VARCHAR(가변 길이 문자형)인 경우 발생, 검색 속도 느림.

 

22.9. 행 연결(Row Chaining) : 빈 블럭의 기억 공간이 적어 새로 입력하려는 데이터 일부만 저장, 일부는 다른 블럭에 저장하여 두 블럭을 연결하는 방법.

 

22.10. 데이터 웨어하우스(Data Warehouse) : 기간 내의 저장된 대량의 데이터를 공통의 형식으로 변환하여 관리하는 데이터베이스, 기업의 여러 가지 정보를 관리하는 정보 관리 시스템으로 이용.

 

22.11. 데이터 마트(Data Mart) : 데이터 웨어하우스의 축소판, 기업의 경영 활동을 돕기 위한 시스템.

 

22.12. 데이터 마이닝(Data Mining) : 실제로 존재하지 않는 정보를 얻어내기 위해 통계적 규칙(Rule)이나 패턴(Pattern)을 찾아내는 것.

 

22.13. OLAP(Online Analytical Processing)

1) 정의 : 사용자가 직접 데이터베이스 검색과 분석을 통해 문제점이나 해결책을 찾도록 해주는 분석형 애플리케이션 개념, 데이터 웨어하우스 지원 도구이며 다차원 구조 분석 기법을 통해 고속으로 지원.

다차원 구조(큐브) 형태 예시

 

2) 종류

- MOLAP(Multidimensional OLAP) : 다차원 데이터베이스를 기초로 한 OLAP 구조, 결과값을 다차원 배열로 저장, 큐브 형태의 데이터 뷰로 구성.

- ROLAP(Relational OLAP) : 관계형 데이터베이스를 기초로 한 OLAP 구조, 집계 테이블을 생성/저장하여 두는 방식의 시스템, 대량의 데이터 처리와 빠른 로딩, 원시 데이터 조화가 가능.

- HOLAP(Hybrid OLAP) : MOLAP과 ROLAP의 장점을 혼용한 방식의 OLAP 기술.

스타 스키마(Star Schema) : 다차원 분석을 지원하기 위한 데이터 모델링 기법, 활동 내용을 수치로 표현한 사실 테이블과 추가적인 관점을 제공하는 차원 테이블로 구성.

 

22.14. OLTP(On-Line Transaction Processing) : 중앙 컴퓨터와 통신 회선으로 접속되어 있는 다수의 사용자 단말기에서 요청한 트랜잭션의 처리를 중앙 컴퓨터에서 처리하여 그 처리된 결과를 즉시 사용자 단말 측으로 되돌려 보내 주는 처리 형태, 예를 들어 산업용 PDA.

'정보처리산업기사 실기 > 데이터베이스' 카테고리의 다른 글

기타 데이터베이스 용어  (0) 2020.11.08
보안(Security)  (0) 2020.11.08
객체 지향 데이터베이스(OODB)  (0) 2020.11.08
인덱스(INDEX)  (0) 2020.11.07
회복 기법과 병행 제어  (0) 2020.11.07