정보처리기사 2020 필기 1,2회 41~60번 문제 해설
- 수제비 2020 정보처리기사 필기 도서와 수제비 카페 자료를 통해 작성
41,42,47,57,58. 데이터 언어
분류 | 설명 | 명령어/유형 |
---|---|---|
데이터 정의어 (DDL: Data Definition Language) | 데이터를 정의하는 언어 데이터베이스 객체의 생성, 변경, 삭제 테이블이나 관계의 구조를 생성 대상: Domain, Schema, Table, View. Index | CREATE ALTER DROP RENAME TRUNCATE |
데이터 조작어 (DML: Data Manipulation Language) | 데이터베이스의 실제적인 조작을 위한 언어
데이터베이스에 저장된 자료들을 입력, 수정, 삭제, 조회하는 언어 테이블에 데이터를 검색, 삽입, 수정, 삭제하는 데 사용 | SELECT INSERT UPDATE DELETE |
데이터 제어어 (DCL: Data Control Language) | 데이터베이스 데이터의 제어 언어
데이터베이스 관리자가 데이터 보안, 무결성 유지, 병행 제어, 복구(회복)를 하기 위해 DBA가 사용하는 제어용 언어 데이터의 사용 권한을 관리하는 데 사용 기능: 데이터 보안, 무결성 유지, 회복, 병행수행제어 | GRANT REVOKE COMMIT ROLLBACK |
43,56. 키(key)
데이터베이스에서 조건을 만족하는 튜플을 찾거나 순서대로 정렬할 때 다른 튜플들과 구별할 수 있는 기준이 되는 속성
종류 | 설명 |
---|---|
기본 키 (Primary Key) | 테이블의 각 튜플들을 고유하게 식별하는 컬럼 유일성과 최소성을 만족하는 후보키 중에서 대표성을 지닌 키 |
대체 키 (Alternate Key) | 후보 키 중에서 기본 키로 선택되지 않은 키 |
후보 키 (Candidate Key) | 릴레이션에 있는 모든 튜플에 대해 유일성과 최소성을 모두 만족하는 키
테이블에서 각 튜플들을 구별하는데 기준이 되는 컬럼 기본 키와 대체 키를 합친 키(기본 키⊆후보키, 대체 키⊆후보키) |
슈퍼 키 (Super Key) | 릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족하지만, 최소성을 만족하지 못하는 키 |
외래 키 (Foreign Key) | 테이블 간의 참조 데이터 무결성을 위한 제약 조건 어떤 릴레이션에 속성된 속성 또는 집합이 다른 릴레이션의 기본키가 되는 키 연관 관계가 있는 다른 테이블의 기본 키를 참조하는 키 |
- 유일성: 식별자에 의해 엔터티 타입 내에 모든 엔티티들이 유일하게 구분
- 최소성: 최소한의 속성으로 식별자 구성
44,46. 데이터베이스 정규화(DB Normalization)
관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스
데이터의 중복을 제거, 삽입/삭제/갱신 이상을 제거하는 것이 핵심
- 어떠한 릴레이션이라도 데이터베이스 내에서 표현 가능하게 함
- 데이터 삽입시 릴레이션을 재구성할 필요성을 줄임
- 효과적인 검색 알고리즘 생성 가능
단계 | 조건 |
---|---|
1정규형(1NF) | 원자화. 원자값으로 구성 반복 속성/중복 제거가 필요함 |
2정규형(2NF) | 부분 함수 종족 제거 (완전 함수적 종속 관계) |
3정규형(3NF) | 이행 함수 종속 제거 A→B이고 B→C일 떄, A→C를 만족하는 관계 |
보이스-코드 정규형(BCNF) | 결정자 함수 종족 제거 릴레이션 R의 모든 결정자가 후보키 |
4정규형(4NF) | 다치(다중 값) 종속성 제거 |
5정규형(5NF) | 조인 종속성 제거 |
- 1NF → 2NF: 1NF를 만족하고 키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속 관계를 만족해야 한다.
- 3NF → BCNF: 결정자가 후보키가 아닌 함수 종속 제거
이상 현상(Anomaly)
- 릴레이션 조작 시 데이터들이 불필요하게 중복되어 예기치 않게 발생하는 곤란한 현상
- 데이터의 중복성으로 인해 릴레이션을 조작할 때 발생하는 비합리적 현상
현상 | 설명 |
---|---|
삽입 이상 (Insertion Anomaly) | 데이터를 삽입하려면 불필요한 데이터도 함께 삽입해야만 하는 현상 |
삭제 이상 (Deletion Anomaly) | 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는 현상 |
갱신 이상 (Update Anomaly) | 중복된 데이터 중 일부만 수정되어 데이터 불일치/모순이 발생하는 현상 |
45,59. 데이터베이스 무결성(Database Itegrity)
데이터베이스에 저장된 데이터 값과 그것이 표현하는 실제 값이 일치하는 정확성을 의미
권한이 있는 사용자로부터 데이터베이스를 보호
종류 | 설명 | 요소 |
---|---|---|
개체 무결성 | 기본키에 속해 있는 Attribute는 NULL이나 중복값을 가질 수 없다. 한 엔티티에서 같은 기본키(PK)를 가질 수 없거나, 기본키의 속성이 NULL을 허용할 수 없음 | 기본 키 (primary Key) 유니크 인덱스 (Unique Index) |
참조 무결성 | 릴레이션은 참조할 수 없는 외래 키 값을 가질 수 없다. 외래 키 값은 참조 릴레이션의 기본 키 값과 동일해야 한다. 외래 키가 잠조하는 다른 개체의 기본키에 해당하는 값이 기본 키 값이거나 NULL이어야 함 - CASECADE: 참조 무결성을 유지하기 위해 DROP문에서 부모 테이블의 항목 값을 삭제할 경우 자동적으로 자식 테이블의 해당 레코드를 삭제하기 위한 옵션 | 외래 키 (Foreign Key) |
속성 무결성 | 속성의 값은 기본값, NULL 여부, 도메인(데이터 타입, 길이)이 지정된 규칙을 준수해야 함 | 체크(CHECK) NULL / NOT NULL 기본값(DEFAULT) |
사용자 무결성 | 사용자의 의미적 요구사항을 준수해야 함 | 트리거(Trigger) 사용자 정의 데이터 타입(User Defined Data Type) |
키 무결성 | 한 릴레이션에 같은 키 값을 가진 튜플들을 허용할 수 없음 | 유니크(Unique) |
48. 절차형 SQL
개념 | 설명 |
---|---|
트리거 (Trigger) | 데이터베이스가 미리 정해 놓은 조건이 충족되거나, 특정 테이블에 삽입, 갱신, 삭제 등의 이벤트가 발생하면 DBMS에서 자동으로 실행되도록 구현된 프로그램 |
이벤트 (Event) | 특정 시간에 특정한 쿼리, 프로시저, 함수 등을 실행시키는 기능 |
DBMS (Database Management System) | 사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해주는 소프트웨어 |
데이터 무결성 | 데이터베이스에 저장된 데이터 값과 그것이 표현하는 실제 값이 일치하는 정확성 |
사용자 정의 함수 (User-Defined Function) | 사용자가 직접 함수를 정의하여 사용할 수 있는 기능 |
프로시저 (Procedure) | DB 내부에 저장된 일련의 SQL 명령문들을 하나의 함수처럼 실행하는 쿼리의 집합 |
49. 데이터 모델링 수행 절차
요구조건 분석 단계 > 개념적 설계 단게 > 논리적 설계 단계 > 물리적 설계 단계 > 구현 단계
개념적 모델링
- 개념: 업무 요건을 충족하기 위해서 주제 영역과 핵심 데이터 집합, 핵심 데이터 집합 간의 관계를 정의하는 상위 수준의 개략적 데이터 설계 작업
- ERD(Entity Relationship Diagram) 작성: 주제 영역 도출, 핵심 데이터 집합 선정(Entity), 관계 설정(Cardinality), 핵심 속성 정의(Attribute), 식별자 정의(Identifier)
- 개체-관계 모델 설정(Entity-Relationship Model)
논리적 모델링
- 개념: 업무의 모습을 모델링 표기법으로 형상화하여 사람이 이해하기 쉽게 표현하는 절차
- 주요 Task: 엔티티 타입 도출, 관계 도출, 식별자 도출, 속성 도출, 세부사항 도출, 정규화, 통합/분할, 데이터 모델 검증
단계 | 설명 |
---|---|
논리적 데이터 모델로 변화 | DBMS 독립적인 개념적 스키마(개념적 구조)를 목표 DBMS에 맞는 논리적 데이터 모델(관계/계층/네트워크/객체지향모델)로 변환하는 것 논리적 데이터베이스 구조로 매핑(Mapping) 논리 스키마(테이블) 생성 및 정규화 적용 |
트랜잭션 인터페이스 설계 | 트랜잭션의 전체적인 골격(Skeleton)을 개발하고 인터페이스를 정의 |
스키마의 평가 및 정제 | 정량적 정보와 성능 평가 기준에 따라 평가 및 정제 - 정략적 정보: 데이터의 양, 처리 빈도수, 처리 작업량 - 성능 평가기준: 논리적 레코드 접근, 데이터의 전송량, 데이터베이스의 크기 등 |
물리적 모델링
- 개념: 논리 데이터 모델을 특정 DBMS에 맞는 물리적인 스키마를 만드는 일련의 과정
- 주요 Task: Entity별 Table로의 전환, 식별자의 Primary Key 정의, 속성의 컬럼 전환, 관계의 컬럼 전환, 수퍼타입/서브타입 모델 전환, 성능을 고려한 반정규화
50. 개체-관계(E-R) 모델
현실 세계에 존재하는 데이터와 그들 간의 관계를 사람이 이해할 수 있는 형태로 명확하게 표현하기 위해서 가장 널리 사용되고 있는 모델
구성 | 기호 |
---|---|
개체 | □ 사각형 |
관계 | ◇ 마름모 |
속성 | ○ 타원 |
관계-속성 연결 | ― 선 |
다중 값 속성 | ◎ 이중타원 |
51. 데이터베이스 동시성 제어(병행제어)
여러 트랜잭션들이 성공적으로 동시에 실행될 수 있도록 지원하는 기법
기법 | 설명 |
---|---|
로킹(Locking) 기법 | 트랜잭션이 사용하는 데이터 항목에 대하여 잠금(Lock)을 설정한 트랜잭션이 해제(unlock)할 때까지 독점적으로 사용할 수 있게 상호배제 기능을 제공하는 기법 - 로킹 단위: 한꺼번에 로킹할 수 있는 객체의 크기. 로킹의 대상이 되는 객체의 크기. 데이터베이스, 파일, 레코드 등 한 트랜잭션이 어떤 데이터에 대해서 액세스하는 동안 다른 트랜잭션 역시 이 데이터에 접근하기 위해서는 Lock을 소유하고 있어야만 액세스할 수 있도록 하는 방법 로킹 단위가 작을수록 병행 수준이 뛰어나고 데이터베이스 공유도가 증가하지만 관리가 어렵고 오버헤드가 증가함 |
2단계 로킹 (2PL: 2 Phase Locking) | 모든 트랜잭션들이 잠금(Lock)과 해제(unlock) 연산을 확장 단계와 수축 단계로 구분하여 수행하는 기법 |
타임스탬프 오더링 (Timestamp Ordering) | 시스템에서 생성하는 고유 번호인 시간스탬프를 트랜잭션에 부여하는 것으로 트랜잭션 간의 순서를 미리 선택하고 동시성 제어의 기준으로 사용하는 기법 |
낙관적 검증 | 트랜잭션이 어떠한 검증도 수행하지 않고, 일단 트랜잭션을 수행하고 트랜잭션 종료시 검증을 수행하여 데이터베이스에 반영하는 기법 |
다중버전 동시성 제어 (MVCC: Multi Version Concurrency Control) | 트랜잭션의 타임스탬프와 접근하려는 데이터의 타임스탬프를 비교하여 직렬 가능성이 보장되는 적절한 버전을 선택하여 접근하도록 하는 기법 |
52. 뷰(View)
- 기본 테이블로부터 유도된 가상 테이블: 기본 테이블과 같은 형태의 구조. 물리적으로 구현되어 있지 않음
- 데이터의 논리적 독립성을 제공
- 사용자 데이터 관리가 용이하고 명령문이 간단해짐
- 데이터를 안전하게 보호하는 효율적인 기법. 데이터 보안 용이
- CREATE 로 생성하고 DROP 으로 제거
- 뷰 위에 또 다른 뷰 정의 가능
- 뷰에 대한 조작에서 삽입, 갱신, 삭제 연산에 제약 있음
- 뷰가 정의된 기본 테이블이 제거되면 뷰도 자동적으로 제거됨
53,54. 논리데이터베이스 설계
관계 데이터 모델(Relation Data Model)
- 실세계 데이터를 행과 열로 구성된 테이블 형태로 구성된 데이터 모델
구성요소 | 설명 |
---|---|
릴레이션 | 행(Row)과 열(Column)로 구성된 테이블 |
튜플 (Tuple) | 릴레이션의 행(Row)에 해당되는 요소 하나의 레코드를 나타내는 행(Row) |
속성 (Attribute) | 릴레이션의 열(Column)에 해당되는 요소 테이블의 열(Column). 테이블에서의 필드 |
카디널리티 (Cardinality) | 튜플(Row)의 수 기수라고도 함 |
차수 (Degree) | 속성(Attribute)의 수 |
스키마 (Schema) | 릴레이션이 어떻게 구성되는지, 어떤 정보를 담고 있는지에 대한 기본적인 구조 |
인스턴스 (Instance) | 정의된 스키마에 따라 생성된 테이블에 실제 저장된 데이터의 집합 |
도메인 (Domain) | 속성이 취할 수 있는 값 하나의 속성(Attribute)이 취할 수 있는 같은 타입의 모든 원자 값들의 집합 |
관계 데이터 언어 - 관계대수
- 관계형 데이터베이스에서 원하는 정보와 그 정보를 어떻게 유도하는 가를 기술하는 절차적 정형언어
- 주어진 릴레이션 조작을 위한 연산의 집합
- 질의에 대한 해를 구하기 위해 수행해야 할 연산의 순서를 명시
- 일반 집합 연산과 순수 관계 연산으로 구분
연산자 | 기호 | 표현 | 설명 |
---|---|---|---|
셀렉트 (Select) | σ | σ조건(R) | 릴레이션 R에서 조건을 만족하는 튜플 반환 |
프로젝트 (Project) | π | π속성리스트(R) | 릴레이션 R에서 주어진 속성들의 값으로만 구성된 튜플 반환 |
조인 (Join) | ⋈ | R⋈S | 공통 속성을 이용해 R와 S의 튜플들을 연결해 만들어진 튜플 반환 |
디비전 (Division) | ÷ | R÷S | 릴레이션 S의 모든 튜플과 관련 있는 R의 튜플 반환 |
55. 분산 데이터베이스(Distributed Database)
투명성 | 설명 |
---|---|
위치 투명성 (Location Transparency) | 사용자나 응용 프로그램이 접근할 데이터의 물리적 위치(실제 위치)를 알아야 할 필요가 없는 성질 |
복제 투명성 (Replication Transparency) | 사용자나 응용 프로그램이 접근할 데이터가 물리적으로 여러 곳에 복제/중복되어 있는지의 여부를 알 필요가 없는 성질 |
병행 투명성 (Concurrency Transparency) | 여러 사용자나 응용 프로그램이 동시에 분산 데이터베이스에 대한 트랜잭션을 수행하는 경우에도 결과에 이상이 발생하지 않는 성질 로팅(Locking), 타임 스탬프(Time Stamp) 순서 기법 이용 |
분할 투명성 (Fragmentation Transparency) | 사용자가 하나의 논리적인 릴레이션이 여러 단편으로 분할되어 각 단편의 사본이 여러 장소에 저장되어 있음을 알 필요가 없는 성질 |
장애 투명성 (Failure Transparency) | 데이터베이스가 분산되어 있는 각 지역의 시스템이나 통신망에 이상이 생기더라도, 데이터의 무결성을 보존할 수 있는 성질 2PC(Phase Commit) 활용 |
60. 트랜잭션(Transaction)
하나의 논리적 기능을 정상적으로 수행하기 위한 작업의 기본 단위
특징 | 설명 | 주요기법 |
---|---|---|
Atomicity 원자성) | 트랜잭션 연산은 데이터베이스에 모두 반영되든지 아니면 전혀 반영되지 않아야 함 분해가 불가능한 작업의 최소 단위 연산 전체가 성공 또는 실패(All or Nothing) 하나라도 실패할 경우 전체가 취소되어야 함 | Commit Rollback 회복성 보장 |
Consistency (일관성) | 트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 보존함 | 무결성 제약조건 동시성 제어 |
Isolation (격리성) | 트랜잭션 실행 중 생성하는 연산의 중간 결과를 다른 트랜잭션이 접근할 수 없음 | Read Uncommit Read Commit Phantom Read Serializable |
Durability (영속성) | 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장 나더라도 영구적/영속적으로 반영되어야 함 | 회복 기법 |
상태 | 설명 |
---|---|
활동 상태 (Active) | 초기 상태 트랜잭션이 실행 중일 때 가지는 상태 |
부분완료 상태 (Partially Committed) | 마지막 명령문이 실행된 후에 가지는 상태 |
완료 상태 (Committed) | 트랜잭션이 성공적으로 완료된 후 가지는 상태 부분완료 상태에서 Commit이 실행된 후 가지는 상태 |
실패 상태 (Failed) | 정상적인 실행이 더 이상 진행될 수 없을 때 가지는 상태 |
철회 상태 (Aborted) | 트랜잭션이 취소되고 데이터베이스가 트랜잭션 시작 전 상태로 환원된 상태 실패 상태에서 Rollback이 실행된 후 가지는 상태 |