본문 바로가기
License

[정보처리기사필기] 3과목 데이터베이스 구축 기출문제 해설 요약정리

by prinha 2023. 5. 6.
반응형

데이터베이스 설계 단계

1. 요구사항 분석

DB 사용 환경을 분석 후 데이터베이스로 관리할 대상 및 제한 조건 도출

 

2. 개념적 설계

분석 결과를 추상화된 방식으로 기술 -> 개념적 스키마(데이터베이스에 대한 추상적 설계도, 개체 관계 다이어그램)

 

3. 논리적 설계

논리적 데이터베이스 구조에 맞는 스키마 생성 - > 논리적 스키마(테이블 구조도, ERD를 바탕으로 생성되는 테이블들의 집합), 스키마의 평가 및 정제

트랜잭션의 인터페이스 설계 -> 사용자의 입장에서 편리하도록

 

4. 물리적 설계

실제 컴퓨터에 저장되는 효율적이고 구현가능한 물리적 구조 설계

필드의 데이터 타입, 인덱스, 테이블 저장 방법 등을 정의

성능 향상을 위한 개념 스키마의 변경 여부 검토

저장 공간의 효율화

응답시간

트랜잭션 처리량

 

 

수평분할

하나의 테이블의 각 행을 다른 테이블에 분산 시키는 것 -> 병렬 데이터베이스 환경

라운드로빈(round-robin), 범위(range), hash, list, composite

 

 

데이터베이스 정규화 (Normalization)

테이블 간의 중복된 데이터를 허용하지 않는 것으로 무결성(Integrity)을 유지할 수 있으며 DB 저장 용량을 줄일 수 있음

테이블을 분해하는 정규화의 단계가 정의되어 있는데, 어떻게 분해되는지에 따라 정규화 단계가 달라진다

논리적 설계 단계에서 수행하는 작업이다

 

도 부 이 결 다 조

 

[제 1 정규화 -> 도메인 분해]

테이블의 컬럼이 원자값(하나의 값)을 갖도록 테이블을 분해하는 것

릴레이션에 속한 모든 속성의 도메인이 원자값으로만 구성되어 있음

제 1 정규화 분해

 

[제 2 정규화 -> 완전함수종속]

제 1 정규화를 진행한 테이블에 대해 완전 함수 종속을 만족하도록 테이블을 분해하는 것

(완전함수종속 : 기본키의 부분집합이 결정자가 되어서는 안된다는 것)

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

 

기본키 -> 복합키(학생번호, 강좌이름) -> 결정(성적)

강의실이라는 컬럼은 기본키의 부분집합이고 강좌이름이 결정자이기 때문에 분해하여 별도의 테이블로 관리

 

제 2 정규화 분해

 

[제 3 정규화 -> 이행적종속]

제 2 정규화를 진행한 테이블에 대해 이행적 종속을 없애도록 테이블을 분해하는 것

(이행적 종속 : A->B, B->C가 성립할 때 A->C가 성립되는 것)

기본키가 아닌 모든 속성이 기본키에 이행적 함수 종속이 되지 않는다

 

제 3 정규화 분해

 

[BCNF 정규화 -> 모든 결정자가 후보키가 되도록함]

제 3 정규화를 진행한 테이블에 대해 모든 결정자가 후보키가 되도록 테이블을 분해하는 것

결정자라는 키워드가 있으면 BCNF정규화

교수가 특강이름을 결정하는 결정자지만 후보키가 아니기때문에 테이블 분해

BCNF 정규화

[제 4 정규화 -> 다중치 종속 제거]

BCNF 정규형을 만족하면서 함수 종속이 아닌 다치 종속을 제거해야 만족할 수 있다

 

[제 5 정규화 -> 조인 종속 제거]

제 4정규형을 만족하면서 후보키를 통하지 않는 조인 족송을 제거해야 만족할 수 있다


트랜잭션 설계단계

- 개념설계 : 트랜잭션 모델링

- 논리설계 : 트랜잭션 인터페이스 설계

- 물리설계 : 트랜잭션 세부설계

 

트랜잭션(Transaction)의 성질

- 원자성(Atomicity) : 완전하게 수행 완료되지 않으면 전혀 수행되지 않아야 함

- 일관성(Consistency) : 시스템의 고정 요소는 트랜잭션 수행 전후에 같아야 함

- 격리성(Isolation, 고립성) : 트랜잭션 실행시 다른 트랜잭션의 간섭을 받지 않아야함

- 영속성(Durability, 지속성) : 트랜잭션의 완료 결과가 데이터베이스에 영구히 기억됨

 

트랜잭션 모델링 (개념적 설계 단계에서)

트랜잭션을 개념적 시스템 독립적으로 정의한다

트랜잭션의 입출력기능, 형태만 정의한다

검색, 갱신, 혼합

 

트랜잭션의 순서

Active -> Partially Committed -> Committed -> (성공)

              -> failed -> aborted(rollback) -> (실패)

 

- Partially Committed : 트랜잭션의 마지막 연산이 실행된 직후로 모든 연산은 끝났지만 최종결과를 데이터베이스에 반영하지 않은 상태

- Commited : 트랜잭션이 실행을 성공적으로 완료하여 데이터베이스에 반영까지 완료한 상태

 

 

분산 데이터 베이스 시스템

물리적으로 분산된 데이터베이스 시스템을 논리적으로 하나의 데이터베이스 시스템처럼 사용할 수 있도록 한 것

물리적으로 분산되어 지역별로 필요한 데이터를 처리할 수 있는 지역컴퓨터를 분산처리기(Distritued Processor)라고 한ㅁ

분산 데이터베이스 시스템을 위한 통신 네트워크 구조가 데이터 통신에 영향을 주므로 효율적으로 설계해야 함

데이터베이스의 설계가 비교적 어렵고, 개발 비용과 처리 비용으 증가한다는 단점이 있다

주요 구성 요소 : 분산(처리기, 데이터베이스, 트랜잭션), 통신네트워크

구조 : 전역, 분할(단편화), 할당, 지역스키마

 

분산 데이터 베이스의 목표

- 위치 투명성(Location Transparency) : 하드웨어와 소프트웨어의 물리적 위치를 사용자가 알 필요가 없음

- 중복(=복제) 투명성(Replication Transparency) : 사용자에게 통지할 필요없이 시스템 안에 파일들과 자원들의 부가적인 복제를 자유롭게 할 수 있음

- 병행 투명성(Concurrency Transparency) : 다중 사용자들이 자원들을 자동으로 공유할 수 있음

- 장애 투명성(Failure Transparency) : 사용자들은 어느 위치의 시스템에 장애가 발생했는지 알 필요가 없음

 

인덱스(Index)

데이터베이스 성능에 많은 영향을 주는 DBMS의 구성요소로 문헌의 색인, 사전과 같이 데이터를 쉽고 빠르게 찾을 수 있도록 만든 데이터 구조

테이블과 클러스터에 연관되어 독립적인 저장 공간을 보유하며, 데이터베이스에 저장된 자료를 더욱 빠르게 조회하기 위해 별도로 구성한 순서 데이터

대부분의 데이터베이스에서 테이블을 삭제하면 인덱스도 같이 삭제된다

B-트리 인덱스는 분기를 목적으로 하는 Branch Block을 가지고 있다

기본키에 대한 인덱스는 자동 생성됨 -> 사용자가 변경, 생성, 제거 가능

인덱스 추가 - CREATE  / 인덱스 삭제 - DROP

 

저장 레코드 양식을 설계할 때의 고려 사항

데이터 타입, 데이터 값의 분포, 접근 빈도

 

[병행제어 기법]

동시에 여러 개의 트랜잭션을 병행수행할 때, DB일관성을 파괴하지 않도록 제어하는 것

 

로킹(병행제어)

직렬화 기법으로 데이터베이스, 파일, 레코드 등은 로킹단위가 될 수 있음

한꺼번에 로킹할 수 있는 객체크기를 로킹 단위라고 한다

로킹단위가 큼 : 로크의 수가 적어짐 -> 병행성 수준이 낮아 병행 제어 기법이 간단해짐

로킹단위가 작음 : 로크의 수가 많아짐 -> 데이터베이스 공유도 증가, 로킹 오버헤드 증가, 병행성 수준이 높아짐

 

타임스탬프(동시성제어)

직렬화 기법으로 트랜잭션이 실행을 시작하기 전에 타임스탬프를 부여하여 부여된 시간에 따라 트랜잭션 간의 처리 순서를 미리 정하는 기법

 

검증기법

확인기법

낙관적기법

다중버전기법

 

(시분할기법 : 사용자가 여러개의 작업을 동시에 수행하는 것처럼 느끼도록 분할하는 운영체제 운영기법)


DCL(Data Control Language) - 제어

- COMMIT : 명령어로 수행된 결과를 실제 물리적 디스크로 저장하고, 수행을 성공적으로 완료하였음을 선언

- ROLLBACK :  명령어로 수행 실패를 알리고, 수행된 결과를 원상복구

- GRANT :  데이터베이스 사용자에게 사용 권한 부여

- REVOKE : 데이터베이스 사용자로부터 사용 권한 취소

 

DDL(Data Definition Language) - 정의

- CREATE : SCHEMA, DOMAIN, TABLE, VIEW, INDEX 정의

- DROP : SCHEMA, DOMAIN, TABLE, VIEW, INDEX 삭제 (테이블 자체 를삭제)

- ALTER : 테이블에 대한 정의를 변경하는 데 사용

 

DML(Data Manipulation Language) - 조작

- SELECT : 테이블에서 조건에 맞는 튜플을 검색

- INSERT : 테이블에 새로운 튜플을 삽입

- DELETE : 테이블에서 조건에 맞는 튜플을 삭제 (테이블내의 튜플만 삭제)

- UPDATE : 테이블에서 조건에 맞는 튜플의 내용 변경

 

Grant Create Table to A;

Revoke Create Table from A;

 

Drop View V_1 CASCADE

일시적으로 참조관계(V_1, V_2)를 끊을 수 있다

 

INTERSECT : 교집합


데이터 모델의 구성요소

- 구조(Structure) : 논리적인 개체 타입들간의 관계, 데이터 구조 및 정적 성질을 표현

- 연산(Operation) : 실제 데이터를 처리하는 작업에 대한 명세, 조작하는 기본 도구

- 제약조건(Constraint) : DB에 저장될 수 있는 실제 데이터의 제약 조건

 

데이터 사전(Data Dictionary)

시스템 카탈로그 또는 시스템 데이터베이스라고도 한다

데이터베이스에 대한 데이터인 메타데이터를 저장하고 있으며,

데이터 사전에 있는 데이터에 실제 접근하는 데 필요한 위치 정보는 데이터 디렉토리에서 관리한다

사용자가 시스템 카탈로그를 직접 갱신할 수 없음 -> SQL문으로 여러 가지 객체에 변화를 주면 DBMS가 자동으로 갱신

시스템 테이블로 구성되어 있어 SQL문을 이용하여 검색이 가능하다

 

데이터베이스 릴레이션(Database Relation) = 테이블

- 튜플 : 각각의 행, ROW

- 모든 튜플은 서로 다른 값을 가지고 있다

- 튜플의 순서는 정해져있지 않다

- 각 속성은 릴레이션 내에서 유일한 이름을 가진다

- 모든 속성 값은 원자 값(atomic value)을 가진다

 

차수 : 열(속성-attribute의수, degree)

속성은 개체의 특성을 기술한다

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

속성은 파일 구조상 데이터 항목 또는 데이터 필드에 해당된다

 

카디널리티 : 행(튜플-tuple의 수, row의 수)

 

차수는 +를 해주고, 카디널리티는 *를 해준다

R1차수 4, 카디널리티 5

R2차수 6, 카디널리티 7

-> 두개의 릴레이션을 카티션 프로덕트(곱)한 결과는 차수 10, 카디널리티 35

 

뷰(VIEW)

- 논리적으로만 존재한다

- 다른 뷰를 기반으로 새로운 뷰를 만들 수 있다

- CREATE를 사용한다

- DBA는 보안성 측면에서 뷰를 활용할 수 있다

- 뷰는 삽입, 갱신, 삭제 연산 시 제약 사항이 있다

 

기본키(Primary Key)

테이블의 각 레코드를 고유하게 식별하는 필드나 필드의 집합으로 필수 설정은 아님

- 기본키 설정을 하지 않고도 다른 테이블과 관계 설정을 할 수 있음

- Not Null

- 릴레이션에서 튜플을 구별할 수 있다

- 외래키로 참조될 수 있다

- 검색할 때 반드시 필요하진 않다

 

외래키(Foreign Key)

다른 릴레이션의 기본키를 참조하는 키

 

슈퍼키(Super Key)

속성들의 집합으로 구성된 키, 릴레이션을 구성하는 모든 튜플들 중 슈퍼키로 구성된 집합과 동일한 값은 없다

유일성은 만족하지만 최소성은 만족하지 못한다

 

후보키(Candidate Key)

유일성과 최소성을 만족하는 속성 또는 속성들의 집합으로 튜플을 유일하게 식별하기 위해 사용

 

대체키(Alternate Key) = 보조키

기본키로 선택되지 못한 후보키로, 후보키가 둘 이상일 때 기본키를 제외한 나머지

 

무결성 제약조건

- 개체 무결성 : 각 릴레이션의 기본키를 구성하는 속성은 Null값이나 중복된 값을 가질 수 없다

- 참조 무결성 : 외래키값은 Null이거나 참조하는 릴레이션의 기본키 값과 동일해야 한다

- 도메인 무결성 : 속성들의 값은 정의된 도메인에 속한 값이어야 한다

- 고유 무결성 : 특정 속성에 대해 고유한 값을 가지도록 조건이 주어진 경우 릴레이션의 각 튜플이 가지는 속성 값들은 서로 달라야한다

- Null 무결성 : 릴레이션의 특정 속성 값은 Null이 될 수 없다

- Key 무결성 : 각 릴레이션은 최소한 한개 이상의 키가 존재해야 한다

- 릴레이션 무결성 : 릴레이션을 조작하는 과정에서의 의미적 관계(Semantic Relationship)

 

Cardinality : 튜플의 수(행)

Degree : 속성의 수(열)

 

E-R모델

- 마름모 : 관계

- 사각형 : 개체

- 선 : 관계-속성 연결

- 두개의 원 : 다중값 

 

관계 해석 기호

∃ : 존재한다(exist)

∀ : 모든 것에 대하여 (for all)

a ∈ b : a가 b에 속함 

∪ : 합집합

 

병행제어의 목적

- 여러 사용자들의 데이터베이스 공동 사용을 최대화

- 사용자의 응답 시간 최소화

- 시스템 활용도 최대화

- 데이터베이스 일관성 유지

 

카디션 프로덕트(Cartesian Product)

두 테이블의 곱집합

두 개의 테이블은 카티션 프로덕트 후 튜플의 수가 각테이블 튜플의 곱

 

관계 대수 연산

관계형 데이터베이스에서 원하는 정보와 그 정보를 검색하기 위해 어떻게 유도하는 가를 기술하는 절차적인 언어

원하는 릴레이션을 정의하는 방법을 제공한다

릴레이션 조작을 위한 연산의 집합으로 피연산자와 결과가 모두 릴레이션이다

질의에 대한 해를 구하기 위해 수행해야 할 연산의 순서를 명시한다

 

1. 일반 집합 연산자

합집합, 교집합, 차집합, 카티션 프로덕트(곱)

2. 순수 관계 연산자

Select(수평단절), Project(수직단절), Join(두개의 릴레이션 튜플 연결), Division(÷)

 

데이터 이상(Anomaly)

데이터의 중복으로 인하여 관계연산을 처리할 때 예기치 못한 곤란한 현상이 발생하는 것

- 삽입 이상

- 갱신 이상

- 삭제 이상


https://prinha.tistory.com/entry/%EC%A0%95%EB%B3%B4%EC%B2%98%EB%A6%AC%EA%B8%B0%EC%82%AC%ED%95%84%EA%B8%B0-4%EA%B3%BC%EB%AA%A9-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EC%96%B8%EC%96%B4-%ED%99%9C%EC%9A%A9-%EA%B8%B0%EC%B6%9C%EB%AC%B8%EC%A0%9C-%ED%95%B4%EC%84%A4-%EC%9A%94%EC%95%BD%EC%A0%95%EB%A6%AC1

 

[정보처리기사필기] 4과목 프로그래밍 언어 활용 기출문제 해설 요약정리1

C언어 문자열 처리 함수 - strlen(s) : s의 길이 - strcpy(s1, s2) : s2를 s1으로 복사 - strcmp(s1, s2) : 문자열 비교 - strrev(s) : s를 거꾸로 변환 - strcat(s1, s2) : 문자열 연결 C언어 연산자 -> 0이 아닌 모든 값은 1(

prinha.tistory.com


자료 및 출처

1. 정보처리기사 필기 기출

2. 망나니개발자 님 티스토리 : https://mangkyu.tistory.com/110

반응형