data life

[정처기 실기] 2. 데이터 입출력 구현 본문

자격증/정보처리기사

[정처기 실기] 2. 데이터 입출력 구현

주술회전목마 2023. 4. 16. 20:57

2. 데이터 입출력 구현


2-1. 데이터 전환

데이터 전환

- 운영 중인 기본 정보 시스템에 축적된 데이터를 추출하여 새로 개발할 정보 시스템에서 운영할 수 있도록 변환한 후, 적재하는 과정

- ETL (Extraction, Transformation, Load)

- Data Migration(데이터 이행, 데이터 이관) 이라고도 한다.

 

데이터 전환 계획서

- 데이터 전환에 필요한 모든 계획을 기록하는 문서

- 항목

    - 개요

    - 데이터 전환 대상 및 범위

    - 환경 구성

    - 조직 및 역할

    - 일정

    - 방안

    - 데이터 정비 방안

    - 비상 계획

    - 데이터 복구 대책

 

2-2. 데이터 검증

데이터 검증 

- 원천 시스템의 데이터 -> 목적 시스템의 데이터로 전환하는 과정이 정상적으로 수행되었는지 확인하는 과정

- 검증 방법 & 검증 단계에 따라 분류

 

검증 방법에 따른 분류

검증 방법 내용
로그 검증 데이터 전환 과정에서 작성하는 ETL 로그를 검증
기본 항목 검증 로그 검증 이외에 별도로 요청된 검증 항목을 검증
응용 프로그램 검증 응용 프로그램으로 데이터 전환의 정합성을 검증
응용 데이터 검증 사전 정의된 업무 규칙을 기준으로 데이터 전환의 정합성을 검증
값 검증 숫자 항목의 합계, 코드 데이터의 범위, 속성 변경에 따른 값 검증

 

검증 단계에 따른 분류

검증 방법 목적 검증 방법
추출 원천 시스템 데이터에 대한 정합성 확인 로그 검증
전환 매핑 정의서대로 반영되었는지 확인
매핑 정의서 오류 여부 확인
로그 검증
DB 적재 SAM 파일을 적재하는 과정에서 발생할 수 있는 오류나 데이터 누락 여부 등 확인 로그 검증
DB 적재 후 적재 완료 후 정합성 확인 기본 항목 검증
전환 완료 후 추가 검증 과정을 통해 데이터 전환 정합성 검증 응용 프로그램 검증
응용 데이터 검증

 

 

2-3. 오류 데이터 측정 및 정제

오류 데이터 측정 및 정제

- 고품질의 데이터를 운영 및 관리하기 위해 수행

- 진행과정

   - 데이터 품질 분석 : 오류 데이터를 찾기 위해 원천 및 목적 시스템 데이터의 정합성 여부를 확인

   - 오류 데이터 측정 : 정상 데이터와 오류 데이터의 수를 측정하여 오류 관리 목록 작성

   - 오류 데이터 정제 : 오류 관리 목록의 각 항목을 분석하여 원천 데이터 정의 및 전환 프로그램 수정

 

오류 상태

상태 내용
Open 오류 보고만 된 상태 (분석❌)
Assigned 개발자에게 오류를 전달한 상태 (for 오류 영향 분석 및 수정)
Fixed 개발자가 오류를 수정한 상태
Closed 수정된 오류에 대해 테스트를 다시하고 오류가 발견되지 않은 상태
Deferred 오류 수정 연기 상태
Classified 보고된 오류가 오류가 아니라고 확인된 상태

 

데이터 정제 요청서

- 데이터 정제와 관련된 전반적 내용을 문서로 작성

- 오류 관리 목록을 기반으로 데이터 정제 요건 목록을 작성하고, 이 목록의 항목별로 데이터 정제 요청서를 작성

 

데이터 정제 보고서

- 데이터 정제 요청서를 통해 정제된 원천 데이터가 정상적으로 정제되었는지 확인한 결과를 문서로 작성

 

 

2-4. 데이터베이스 개요

데이터 저장소

- 논리 데이터 저장소 : 데이터 및 데이터 간 연관성, 제약 조건을 식별하여 논리적인 구조로 조직화한 것

- 물리 데이터 저장소 : 논리 데이터 저장소를 소프트웨어가 운용될 환경의 물리적 특성을 고려하여 실제 저장장치에 저장한 것

 

데이터베이스 (Database)

- 여러 사람에 의해 공동으로 사용될 데이터의 중복을 배제하여 통합하고, 쉽게 접근하여 처리할 수 있도록 저장장치에 저장하여 항상 사용할 수 있도록 운영하는 운영 데이터

- 분류

   - 통합 데이터 (Integrated Data) : 자료의 중복을 배제한 데이터의 모임

   - 저장 데이터 (Stored Data) : 컴퓨터가 접근할 수 있는 저장 매체에 저장된 자료

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

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

 

DBMS (DataBase Management System : 데이터베이스 관리 시스템)

- 사용자의 요구에 따라 정보를 생성해주고 데이터베이스를 관리해주는 소프트웨어

- 데이터의 종속성중복성의 문제를 해결하기 위함

- 필수 기능 3가지

   ⭐️ 정의 기능 : 데이터의 형과 구조에 대한 정의, 이용 방식, 제약 조건 등을 명시하는 기능

   ⭐️ 조작 기능 : 데이터 검색, 갱신, 삽입, 삭제 등을 위해 인터페이스 제공

   ⭐️ 제어 기능 : 데이터의 무결성, 보안, 권한 검사, 병행 제어를 제공

 

데이터의 독립성

- 논리적 독립성

   : 응용 프로그램과 데이터베이스를 독립

   => 데이터의 논리적 구조를 변경하여도 응용 프로그램은 영향받지 않음

- 물리적 독립성

   : 응용 프로그램과 보조기억장치 같은 물리적 장치를 독립

   => 디스크 추가 / 변경하여도 응용 프로그램은 영향받지 않음

 

스키마 (Schema)

- 데이터베이스의 구조와 제약 조건에 전반적인 명세를 기술한 것

- 종류

종류 내용
외부 스키마 사용자나 응용 프로그래머가 각 개인의 입장에서 필요로 하는 데이터베이스의 논리적 구조를 정의
개념 스키마 데이터베이스의 전체적인 논리적 구조로 하나만 존재한다.
내부 스키마 물리적 저장장치 입장에서 본 데이터베이스 구조
실제 저장될 레코드의 형식, 저장 데이터 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타냄

 

 

2-5. 데이터베이스 설계

데이터베이스 설계

- 사용자의 요구를 분석하여 컴퓨터에 저장할 수 있는 데이터베이스의 구조에 맞게 변형한 후, DBMS로 데이터베이스를 구현하여 일반 사용자들이 사용하게 하는 것

 

데이터베이스 설계 시 고려사항

항목 내용
무결성 삽입, 삭제, 갱신 등 연산 후에도 데이터베이스에 저장된 데이터가 정해진 제약 조건을 항상 만족해야 한다
일관성 데이터베이스에 저장된 데이터들 사이, 특정 질의에 대한 응답 등이 처음부터 끝까지 변함없이 일정해야 한다
회복 시스템 장애 발생 시, 장애 발생 직전 상태로 복구할 수 있어야 한다
보안 불법적인 데이터의 노출, 변경, 손실로부터 보호할 수 있어야 한다
효율성 응답시간의 단축, 시스템의 생산성, 저장 공간의 최적화가 가능해야 한다
데이터베이스 확장 데이터베이스 운영에 영향을 주지 않으면서 지속적으로 데이터를 추가할 수 있어야 한다

 

데이터베이스 설계 순서

요구 조건 분석 - 데이터베이스를 사용할 사람들로부터 필요한 용도를 파악
- 요구 조건 명세서 작성
개념적 설계 (정보 모델링, 개념화) - 개념 스키마, 트랜잭션 모델링, E-R 모델
- 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
논리적 설계 (데이터 모델링) - 컴퓨터가 이해하고 처리할 수 있는 물리적 저장장치에 저장하도록 변환하기 위해 특정 DBMS가 지원하는 논리적 자료 구조로 변환(Mapping)시키는 과정
- 목표 DBMS에 맞는 논리 스키마 설계, 트랜잭션 인터페이스 설계
물리적 설계 (데이터 구조화) - 목표 DBMS에 맞는 물리적 구조의 데이터로 변환
- 데이터베이스 파일의 저장 구조 및 액세스 경로 결정
데이터베이스 구현 - 논리적 설계와 물리적 설계에서 도출된 데이터베이스 스키마를 파일로 생성
- 목표 DBMS의 DDL(데이터 정의어)로 데이터베이스 생성, 응용 프로그램을 위한 트랜잭션 작성

 

 

2-6. 데이터 모델의 개념

데이터 모델

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

구성 요소

   - 개체

   - 속성

   - 관계

 

종류

   - 개념적 데이터 모델 : 현실 세계에 존재하는 개체를 인간이 이해할 수 있는 정보 구조로 표현 (= 정보 모델)

                                      대표적으로 E-R 모델이 있다.

   - 논리적 데이터 모델 : 개념적 모델링에서 얻은 개념적 구조를 컴퓨터 세계에 맞도록 변환 (= 데이터 모델)

                                     데이터 간의 관계를 어떻게 표현하느냐에 따라 관계 모델, 계층 모델, 네트워크 모델로 구분

   - 물리적 데이터 모델

 

표시할 요소

    - 구조

    - 연산

    - 제약 조건

 

 

2-7. 데이터 모델의 구성 요소

개체 (Entity)

- 데이터베이스에 표현하려는 것, 개념이나 정보 단위 같은 현실 세계의 대상체

- 독립적으로 존재하나 그 자체로서도 구별이 가능, 유일한 식별자에 의해 식별된다.

- 다른 개체와 하나 이상의 관계가 있다.

 

속성 (Attribute)

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

- 데이터 항목 또는 데이터 필드에 해당

- 개체를 구성하는 항목으로 개체의 특성을 기술

- 속성의 수를 차수(Degree)라고 한다.

- 속성은 속성의 특성개체 구성 방식에 따라 분류

 

속성의 특성에 따른 분류

분류 내용
기본 속성
(Basic Attribute)
- 업무 분석을 통해 정의한 속성
- 속성 중 가장 많고 일반적임
설계 속성
(Designed Attribute)
- 원래 업무상 존재하지 않고, 설계 과정에서 도출해내는 속성
- 업무를 규칙화하려고 속성을 새로 만들거나 변형하여 정의하는 속성
파생 속성
(Derived Attribute)
- 다른 속성으로부터 계산이나 변형 등의 영향을 받아 발생하는 속성
- 되도록 적게 정의하는 것이 좋음

https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbr9oiP%2FbtqDg5p2FW3%2FH48Yckb0ZeUmL7aKpuCiZk%2Fimg.jpg

 

속성의 개체 구성 방식에 따른 분류

분류 내용
기본키 속성
(Primary Key Attribute)
개체를 유일하게 식별할 수 있는 속성
외래키 속성
(Foreign Key Attribute)
다른 개체와의 관계에서 포함된 속성
일반 속성 개체에 포함되어 있고 기본키, 외래키에 포함되지 않은 속성

 

관계 (Relationship)

- 개체와 개체 사이의 논리적인 연결

- 개체 간의 관계 & 속성 간의 관계

 

관계의 형태

형태 내용
1 : 1 개체 집합 A의 각 원소가 개체 집합 B의 원소 한개와 대응하는 관계
1 : N 개체 집합 A의 각 원소는 개체 집합 B의 원소 여러 와 대응하지만 개체 집합 B의 각 원소는 개체 집합 A의 원소 한개와 대응하는 관계
N : M 개체 집합 A의 각 원소는 개체 집합 B의 원소 여러 와 대응하고, 개체 집합 B의 각 원소도 개체 집합 A의 원소 여러 와 대응하는 관계

 

관계의 종류

종류 내용
종속 관계 - 두 개체 사이의 주종 관계를 표현
- 식별 관계 & 비식별 관계
중복 관계 두 개체 사이에 2번 이상의 종속 관계가 발생하는 관계
재귀 관계 개체가 자기 자신과 관계를 갖는 것 (순환 관계)
배타 관계 - 개체의 속성이나 구분자를 기준으로 개체의 특성을 분할하는 관계
- 배타 AND 관계 배타 OR 관계

 

 

2-8. 식별자 (Identifier)

식별자 (Identifier)

- 하나의 개체 내에서 각각의 인스턴스를 유일하게 구분할 수 있는 구분자

- 모든 개체는 하나 이상의 식별자를 반드시 가져야 한다.

 

식별자의 분류

분류 식별자
대표성 여부 - 주 식별자 : 개체를 대표하는 유일한 식별자
- 보조 식별자 : 주 식별자를 대신하여 개체를 식별할 수 있는 속성
스스로 생성 여부 - 내부 식별자 : 개체 내에서 스스로 만들어지는 식별자
- 외부 식별자 : 다른 개체와의 관계에 의해 외부 개체의 식별자를 가져와 사용하는 식별자
단일 속성 여부 - 단일 식별자 : 주 식별자가 한 가지 속성으로만 구성된 식별자
- 복합 식별자 : 주 식별자가 두 개 이상의 속성으로 구성된 식별자
대체 여부 - 원조 식별자 : 업무에 의해 만들어지는 가공되지 않은 원래 식별자
- 대리 식별자 : 주 식별자의 속성이 2개 이상인 경우 하나의 속성으로 묶어 사용하는 식별자

 

후보 식별자

- 개체에서 각 인스턴스를 유일하게 식별할 수 있는 속성 또는 속성 집합

- 하나의 개체에는 한 개 이상의 후보 식별자가 존재할 수 있으며, 이 중 개체의 대표성을 나타내는 식별자를 주 식별자, 나머지는 보조 식별자로 지정

 

주 식별자 특징

- 유일성 : 개체 내의 모든 인스턴스들은 주 식별자에 의해 유일하게 구분되어야 함

- 최소성 : 유일성을 만족시키기 위해 필요한 최소한의 속성으로만 구성되어야 함

- 불변성 : 주 식별자가 특정 개체에 한 번 지정되면 그 식별자는 변하지 않아야 함

- 존재성 : 주 식별자가 지정되면 식별자 속성에 반드시 데이터 값이 존재해야 함

학번 주민번호 성명
1001 010429-3****** 김상욱
1002 000505-3****** 임선호
1003 001225-4****** 이다혜

'학번' 이나 '주민번호' 는 다른 속성과 함께 복합키로 구성되지 않아도 단일 속성만으로(최소성) 다른 레코드들을 유일하게 구별할 수 있으며(유일성), 값이 변경되거나(불변성), 어떤 값도 비어있어서는 안된다(존재성)

 

 

2-9. E-R(개체-관계) 모델

E-R(Entity-Relationship, 개체-관계) 모델

- 1976년 피터 첸(Peter Chen)에 의해 제안

- 개념적 데이터 모델의 가장 대표적

- 데이터를 개체, 관계, 속성으로 묘사한다.

- E-R 다이어그램으로 표현하며 1:1, 1:N, N:M 등의 관계 유형을 제한 없이 나타낼 수 있다.

 

E-R 다이어그램

https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F993FA2495D6D1F9B08

 

 

2-10. 관계형 데이터베이스의 구조 / 관계형 데이터 모델

관계형 데이터베이스

- 2차원 표(Table)을 이용해서 데이터 상호 관계를 정의하는 데이터베이스

- 개체관계를 모두 릴레이션이라는로 표현하기 때문에 개체에는 개체 릴레이션관계 릴레이션이 존재한다.

- 장점 : 간결하고 보기 편리, 다른 데이터베이스로의 변환 용이

- 단점 : 성능이 다소 떨어짐

 

관계형 데이터베이스의 릴레이션 구조

- 릴레이션은 데이터들을 표(Table) 의 형태로 표현한 것

- 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성

https://computer-science-student.tistory.com/194

튜플(Tuple)

- 릴레이션을 구성하는 각 행

- 속성의 모임

- 레코드와 같은 의미

- 튜플의 수를 카디널리티(Cardinality) 또는 기수, 대응수라고 한다.

 

속성(Attribute)

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

- 데이터 항목 또는 데이터 필드에 해당

- 속성은 개체의 특성을 기술

- 속성의 수를 차수(Degree)라고 한다.

 

도메인(Domain)

- 하나의 속성이 취할 수 있는 같은 타입의 원자값들의 집합

예) '성별' 속성의 도메인은 '남'과 '여'로, 그 외 값은 입력될 수 없다.

 

릴레이션의 특징

- 한 릴레이션에 포함된 튜플 사이에는 순서가 없다.

- 튜플들의 삽입, 삭제 등의 작업으로 릴레이션은 시간에 따라 변한다.

- 릴레이션 스키마를 구성하는 속성들 간 순서는 중요하지 않다.

- 속성의 유일한 식별을 위해 속성의 명칭은 유일해야 하지만 속성을 구분하는 값은 동일한 값이 있을 수 있다.

- 릴레이션을 구성하는 튜플을 유일하게 식별하기 위해 속성들의 부분집합을  키(Key)로 설정한다.

- 속성의 값은 논리적으로 더 이상 쪼갤 수 없는 원자값만 저장한다.

 

관계형 데이터 모델

- 2차원적인 표를 이용해서 데이터 상호관계를 정의하는 DB구조

- 가장 널리 사용되는 데이터 모델

- 기본키와 이를 참조하는 외래키로 데이터 간의 관계를 표현

- 관계형 모델의 대표적인 언어 : SQL

- 1:1, 1:N, N:M 관계를 자유롭게 표현

 

 

2-11. 관계형 데이터베이스의 제약 조건 - 키(Key)

키(Key)

- 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성

종류

종류 내용
후보키
(Candidate Key)
- 릴레이션을 구성하는 속성들 중 튜플을 유일하게 식별하기 위해 사용되는 속성들의 부분집합
- 기본키로 사용할 수 있는 속성들
- 유일성최소성을 모두 만족
기본키
(Primary Key)
- 후보키 중에서 특별히 선정된 메인
- 중복된 값을 가질 수 없다.
- 한 릴레이션 안에서 특정 튜플을 유일하게 구별할 수 있는 속성
- NULL 값 가질 수 없음
대체키
(Alternate Key)
- 후보키가 2개 이상일 때 기본키를 제외한 나머지 후보키
- 보조키
슈퍼키
(Super Key)
- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키
- 유일성은 만족하지만, 최소성은 만족하지 못한다.
외래키
(Foreign Key)
- 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
- 외래키로 지정시, 참조 릴레이션의 기본키에 없는 값은 입력할 수 없다

* 유일성 : 하나의 키 값으로 하나의 튜플만을 유일하게 식별할 수 있어야 한다.

* 최소성 : 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성되어야 한다.

 

 

2-12. 관계형 데이터베이스의 제약 조건 - 무결성(Integrity)

무결성(Integrity)

- 데이터베이스에 저장된 데이터 값과 그것이 표현하는 현실 세계의 실제 값이 일치하는 정확성

- 무결성 제약 조건 

" 데이터베이스에 들어 있는 데이터의 정확성을 보장하기 위해 부정확한 자료가 데이터베이스 내에 저장되는 것을 방지하기 위한 제약 조건"

 

무결성의 종류

종류 내용
개체 무결성 기본 테이블의 기본키를 구성하는 어떤 속성도 NULL 값이나 중복값을 가질 수 없다
참조 무결성 외래키 값은 NULL이거나 참조 릴레이션의 기본키 값과 동일해야 함
즉, 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다

 

데이터 무결성 강화

- 애플리케이션 : 데이터 생성, 수정, 삭제 시 무결성 조건을 검증하는 코드를 프로그램 내에 추가

- 데이터베이스 트리거 : 트리거 이벤트에 무결성 조건을 실행하는 절차형 SQL을 추가

- 제약 조건 : 데이터베이스에 제약 조건을 설정하여 무결성을 유지

 

 

2-13. 관계대수 및 관계해석

관계대수

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

- 릴레이션 처리를 위한 연산자와 연산 규칙을 제공하며 피연산자와 연산 결과 모두 릴레이션이다.

- 순수 관계 연산자 & 일반 집합 연산자

 

순수 관계 연산자

종류 특징 기호
Select - 릴레이션에 존재하는 튜플 중 선택 조건을 만족하는 튜플의 부분집합을 구하여 새로운 릴레이션을 만드는 연산
- 수평 연산
σ (시그마)
Project - 주어진 릴레이션에서 속성 리스트에 제시된 속성 값만 추출하여 새로운 릴레이션을 만드는 연산
- 중복은 제거됨
- 수직 연산자
π (파이)
Join - 공통 속성을 중심으로 2개의 릴레이션을 하나로 합쳐 새로운 릴레이션을 만드는 연산
- 교차곱을 수행 후, Select를 수행한 것과 동일
Division - XY인 2개의 릴레이션 R(X)와 S(Y)가 있을 경우, R의 속성이 S의 속성값을 모두 가진 튜플에서 S가 가진 속성을 제외한 속성만을 구하는 연산

 

일반 집합 연산자

합병조건

- 합병하려는 두 릴레이션 간에 속성 수가 같고, 대응되는 속성별로 도메인이 같아야한다.

연산자 기능 카디널리티
합집합
UNION (∪)
- 두 릴레이션에 존재하는 튜플의 합집합을 구하되, 중복되는 튜플은 제거되는 연산 두 릴레이션 카디널리티의 합보다 크지 않음
교집합
INTERSECTION (∩)
- 두 릴레이션에 존재하는 튜플의 교집합을 구하는 연산 두 릴레이션 중 카디널리티가 적은 릴레이션의 카디널리티보다 크지 않음
차집합
DIFFERENCE (-)
- 두 릴레이션에 존재하는 튜플의 차집합을 구하는 연사나 릴레이션 R의 카디널리티보다 크지 않음
교차곱
CARTESIAN PRODUCT (Х)
- 두 릴레이션에 있는 튜플들의 순서쌍을 구하는 연산 두 릴레이션의 카디널리티를 곱합 것과 같음

 

관계해석

- 관계 데이터의 연산을 표현하는 방법

- 원하는 정보가 무엇인지 정의하는 비절차적 특성을 지님

- 원하는 정보를 정의할 때 계산 수식을 사용

 

 

2-14. 이상 / 함수적 종속

이상(Anomaly)

- 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고 이 중복으로 인해 테이블 조작 시 문제가 발생하는 현상

- 종류

   - 삽입 이상 : 테이블에 데이터를 삽입 시, 원하지 않는 값들로 삽입할 수 없게 되는 현상

   - 삭제 이상 : 테이블에서 한 튜플을 삭제할 시, 의도와 상관없는 값들도 함께 삭제되는 현상 (연쇄 삭제)

   - 갱신 이상 : 테이블에서 튜플에 있는 속성 값을 갱신할 시, 일부 튜플의 정보만 갱신되어 정보에 불일치성이 생기는 현상

 

함수적 종속

- 어떤 테이블 R에 X와 Y를 각각 R의 속성 집합의 부분 집합이라 하자

- 속성 X의 값 각각에 대해 시간에 관계없이 항상 속성 Y의 값이 오직 하나만 연관되어 있을 때 Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다고 한다.

- X (결정자) -> Y (종속자)

학번 이름 학년 학과
400 이순신 4 약학과
422 유관순 4 물리학과
301 강감찬 3 수학과
320 홍길동 3 체육과

학번 -> 이름

학번 -> 학년         or     학번 -> 이름, 학년, 학과

학번 -> 학과

 

완전 / 부분 함수적 종속

학번 과목번호 성적 학년
100 C413 A 4
100 E412 A 4
200 C123 B 3
300 C312 A 1
300 C324 C 1

학번, 과목번호 -> 성적

학번 -> 학년

 

테이블 속성 중 '성적'은 (학번, 과목번호)에 완전 함수적 종속이라 하며, '학년'은 (학번, 과목번호)에 완전 함수적 종속이 아니므로 부분 함수적 종속이라고 한다.

💡즉, 완전 함수적 종속은 어떤 속성이 기본키에 대해 완전히 종속일 때를 말한다.

 

 

2-15. 정규화 (Normalization)

정규화(Normalization)

- 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해하는 과정

- 가능한 한 중복을 제거하여 삽입, 삭제, 갱신 이상의 발생 가능성을 줄이는 것이 목적이다.

 

정규화 과정

⭐️ 도부이결다조 (두부이걸다줘?)

비정규 릴레이션

⬇️ 도메인이 원자값

1NF

⬇️ 부분적 함수 종속 제거

2NF

⬇️ 이행적 함수 종속 제거 : A->B이고 B->C일 때, A->C를 만족하는 관계

3NF

⬇️ 결정자이면서 후보키가 아닌 것 제거

BCNF

⬇️ 다치 종속 제거

4NF

⬇️ 조인 종속성 이용

5NF

 

 

2-16. 반정규화 (Denormalization)

반정규화

- 시스템의 성능 향상, 개발 및 운영의 편의성 등을 높이기 위해 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화의 원칙을 위배하는 행위

- 시스템의 성능이 향상되고 관리 효율성은 증가하지만 데이터의 일관성 및 정합성이 저하될 수 있다.

- 과도한 반정규화는 오히려 성능을 저하시킴

 

반정규화의 방법

방법 내용
테이블 통합 - 2개의 테이블에서 발생하는 프로세스가 동일하게 자주 처리될 경우
- 항상 2개의 테이블을 이용하여 조회할 경우
* 종류
   - 1:1 관계 테이블 통합
   - 1:N 관계 테이블 통합
   - 슈퍼 타입 / 서브 타입 테이블 통합
       - 슈퍼 타입 : 상위 개체
       - 서브 타입 : 하위 개체
테이블 분할 - 수평 분할 : 레코드를 기준으로 분할
- 수직 분할 : 속성을 기준으로 분할
중복 테이블 추가 - 여러 테이블에서 데이터를 추출하여 사용할 경우
- 다른 서버에 저장된 테이블을 이용해야하는 경우
* 방법
   - 집계 테이블의 추가 : 집계 데이터를 위한 테이블을 생성하고, 각 원본 테이블에 트리거(Trigger)를 설정하여 사용
   - 진행 테이블의 추가 : 이력 관리 등의 목적으로 추가하는 테이블
   - 특정 부분만 포함하는 테이블의 추가 : 데이터가 많은 테이블의 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블을 생성
중복 속성 추가 - 조인이 자주 발생하는 속성인 경우
- 접근 경로가 복잡한 속성인 경우
- 액세스의 조건으로 자주 사용되는 속성의 경우
- 기본키의 형태가 적절하지 않거나 여러 개의 속성으로 구성된 경우

 

 

2-17. 시스템 카탈로그

시스템 카탈로그(System Catalog)

- 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스

- 카탈로그들이 생성되면 데이터 사전에 저장되기 때문에 데이터 사전이라고도 한다.

 

메타 데이터(Meta-Data)

- 시스템 카탈로그에 저장된 정보

- 유형

   - 데이터베이스 객체 정보 : 테이블, 인덱스, 뷰 등의 구조 및 통계 정보

   - 사용자 정보 : 아이디, 패스워드, 접근 권한 등

   - 테이블의 무결성 제약 조건 정보 : 기본키, 외래키, NULL값 허용 여부 등

   - 함수, 프로시저, 트리거 등에 대한 정보

 

데이터 디렉터리

- 데이터 사전에 수록된 데이터에 접근하는 데 필요한 정보를 관리 유지하는 시스템

- 시스템 카탈로그는 사용자와 시스템 모두 접근가능하지만, 데이터 디렉터리는 시스템만 접근 가능

 

 

2-18. 데이터베이스 저장 공간 설계

데이터베이스 저장 공간 설계

객체 내용
테이블 - 데이터베이스의 가장 기본적인 객체
- row(행), column(열)로 구성
- 데이터베이스의 모든 데이터는 테이블에 저장
컬럼 - 테이블의 열을 구성하는 요소
- 데이터 타입, 길이 등으로 정의
테이블스페이스 - 테이블이 저장되는 논리적인 영역
- 한 개의 테이블스페이스에 한 개 이상의 테이블을 저장할 수 있음

 

테이블 종류

종류 내용
일반 테이블 - 대부분 DBMS에서 표준 테이블로 사용되는 테이블
- 데이터 정렬하지 않고 적절한 기억 장소에 저장한 후 임의의 방식으로 데이터를 관리하는 힙(Heap) 구조 테이블
클러스터드 인덱스 테이블 - 기본키나 인덱스키의 순서에 따라 데이터가 저장되는 테이블
- 일반적인 인덱스를 사용하는 테이블에 비해 접근 경로가 단축됨
파티셔닝 테이블 - 대용량의 테이블을 작은 논리적 단위인 파티션으로 나눈 테이블
외부 테이블 - 데이터베이스에서 일반 테이블처럼 사용할 수 있는 외부 파일
- 데이터베이스 내에 객체로 존재
임시 테이블 - 트랜잭션이나 세션별로 데이터를 저장하고 처리할 수 있는 테이블
- 임시 테이블에 저장된 데이터는 트랜잭션 종료 시 삭제됨

 

 

2-19. 트랜잭션 분석 / CRUD 분석

트랜잭션 (Transaction)

- 데이터베이스 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업 단위

- 데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위로 사용된다.

- 사용자가 시스템에 대한 서비스 요구 시, 시스템이 응답하기 위한 상태 변환 과정의 작업 단위로 사용된다.

 

트랜잭션의 특성

⭐️ 원자성(Atomicity) : 트랜잭션의 연산은 데이터베이스에 모두 반영되도록 완료(Commit)되든지 전혀 반영되지 않도록 복구(Rollback)되어야 한다.

⭐️ 일관성(Consistency) : 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성있는 데이터베이스 상태로 변환된다.

⭐️ 독립성, 격리성(Isolation) : 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우, 어느 하나의 트랜잭션이 실행 중 다른 트랜잭션의 연산에 끼어들 수 없다.

⭐️ 영속성, 지속성(Durability) : 성공적으로 완료된 트랜잭션 결과는 시스템이 고장나도 영구적으로 반영되어야 한다.

 

CRUD 분석

- 프로세스와 테이블 간 CRUD 매트릭스를 만들어 트랜잭션을 분석

- CRUD 매트릭스

   - 2차원 형태의 표로, 행에는 프로세스 열에는 테이블을 행과 열이 만나는 위치에는 프로세스가 테이블에 발생시키는 변화를 표시하여 프        로세스와 데이터 간의 관계를 분석하는 분석표

   - 트랜잭션이 테이블에 수행하는 작업을 검증

   - 기본적으로 C > D > U > R 의 우선순위를 가짐

   

트랜잭션 분석

- CRUD 매트릭스를 기반으로 테이블에 발생하는 트랜잭션 양을 분석

- 테이블에 저장되는 데이터의 양을 유추하고 이로 DB의 용량 산정 및 구조 최적화를 목적으로 한다.

- 구성요소 : 단위 프로세스, CRUD 연산, 테이블명, 컬럼명, 테이블 참조 횟수, 트랜잭션 수, 발생 주기 등

 

 

2-20. 인덱스 (Index)

인덱스

- 데이터 레코드를 빠르게 접근하기 위해 <키값, 포인터> 쌍으로 구성되는 데이터 구조

 

인덱스 종류

종류 내용
트리 기반 인덱스 인덱스를 저장하는 블록들이 트리 구조를 이룸
비트맵 인덱스 인덱스 컬럼의 데이터를 0 또는 1로 변환하여 인덱스 키로 사용
함수 기반 인덱스 컬럼의 값 대신 컬럼에 특정 함수나 수식을 적용하여 산출된 값을 사용
비트맵 조인 인덱스 다수의 조인된 객체로 구성된 인덱스
도메인 인덱스 개발자가 필요한 인덱스를 직접 만들어 사용

 

클러스터드 / 넌클러스터드 인덱스

종류 내용
클러스터드 인덱스 인덱스 키의 순서에 따라 데이터가 정렬되어 저장되는 방식
인덱스를 검색하지 않아도 원하는 데이터를 빠르게 검색 가능
넌클러스터드 인덱스 인덱스의 키 값만 정렬되어 있고 실제 데이터는 정렬되지 않은 방식
데이터 삽입, 삭제 발생 시 순서 유지를 위해 데이터를 재정렬해야 함

 

 

2-21. 뷰 / 클러스터

뷰(View)

- 사용자에게 접근이 허용된 것만 보여주기 위해 하나 이상의 기본 테이블로부터 유도된 이름을 가지는 가상 테이블

- 저장장치 내에 물리적으로 존재하지 않지만 사용자에게는 있는 것처럼 보임

- 뷰 정의 시 CREATE 문, 제거 시 DROP 문을 사용

 

뷰의 장단점

장점 단점
- 논리적 데이터 독립성을 제공
- 동일 데이터에 대해 동시에 여러 사용자의 상이한 응용이나 요구를 지원
- 사용자의 데이터 관리를 간단하게 해줌
- 접근 제어를 통해 자동 보안
- 독립적인 인덱스를 가질 수 없음
- 뷰의 정의를 변경할 수 없음
- 뷰로 구성된 내용에 대한 삽입, 삭제, 갱신 연산에 제약이 따름

 

클러스터(Cluster)

- 데이터 저장 시 데이터 액세스의 효율을 증가시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법

- 클러스터링 된 테이블은 데이터 조회 속도가 빠르지만 입력, 수정, 삭제 능력은 저하시킴

- 데이터의 분포도가 넓을수록 유리하다.

* 분포도 = (조건에 맞는 레코드 수 / 전체 릴레이션 레코드 수) * 100

   조건에 맞는 레코드 수가 적을수록 분포도가 좋음

   인덱스는 분포도가 좁은 테이블이 좋지만, 클러스터링은 넓은 테이블이 유리

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

 

 

2-22. 파티션 (Partition)

파티션

- 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것

- 데이터 처리는 테이블 단위로 이뤄지고 데이터 저장은 파티션별로 수행된다.

 

파티션의 장단점

장점 단점
- 데이터 접근 시, 액세스 범위를 줄여 쿼리 성능이 향상됨
- 파티션별로 데이터가 분산 저장되어 디스크의 성능이 향상됨
- 파티션별로 백업 및 복구를 수행하므로 속도가 빠름
- 시스템 장애 시 데이터 손상 최소화 가능
- 데이터 가용성이 향상
- 파티션 단위로 입출력 분산 가능
- 하나의 테이블을 세분화하여 관리하므로 세심한 관리가 요구됨
- 테이블간 조인에 대한 비용 증가
- 용량이 작은 테이블에서는 성능이 저하됨

 

파티션의 종류

범위 분할 - 지정한 열 값을 기준으로 분할
- 일별, 월별, 분기별 등
해시 분할 - 해시함수를 적용한 결과값에 따라 데이터를 분할
- 특정 파티션에 데이터가 집중되는 것을 보완, 고른 데이터 분산 가능
- 특정 데이터가 어디 있는지 판단 가능
- 고객번호, 주민번호 같이 데이터가 고른 컬럼에 효과적
조합 분할 - 범위 분할로 분할 후 해시 함수를 적용하여 다시 분할
- 범위 분할한 파티션이 너무 커서 관리가 어려울 때 유용함

 

 

2-23. 분산 데이터베이스 설계

데이터베이스 용량 설계

- 데이터가 저장될 공간을 정의

- 테이블에 저장될 데이터양과 인덱스, 클러스터 등의 공간을 예측하여 반영

- 데이터베이스의 용량을 정확히 산정하여 디스크의 저장공간을 효과적으로 사용하고 확장성 및 가용성을 높임

- 디스크의 입출력 부하를 분산시키고 채널의 병목 현상을 최소화

 

분산 데이터베이스 설계

- 논리적으로 하나의 시스템에 속하지만, 물리적으로는 네트워크를 통해 연결된 여러 개의 사이트에 분산된 데이터베이스를 말함

 

분산 데이터베이스의 목표

- 위치 투명성 : 액세스하려는 데이터베이스의 실제 위치를 알 필요 없이 단지 데이터베이스의 논리적인 명칭만으로 접근이 가능

- 중복 투명성 : 동일 데이터가 여러 곳에 중복되어도 사용자는 마치 하나의 데이터만 존재하는 것처럼 사용이 가능하다.

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

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

 

분산 설계 방법

방법 설명
테이블 위치 분산 데이터베이스의 테이블을 각기 다른 서버에 분산시켜 배치
분할 - 테이블의 데이터를 분할하여 분산
- 분할 규칙 : 완전성, 재구성, 상호 중첩 배제
- 분할 방법 : 수평분할, 수직분할
할당 - 동일한 분할을 여러 개의 서버에 생성하는 분산 방법
- 중복이 없는 할당 & 중복이 있는 할당

 

 

2-24. 데이터베이스 이중화 / 서버 클러스터링

데이터베이스 이중화(Database Replication)

- 시스템 오류에 대비하여 동일한 데이터베이스를 복제하여 관리하는 것

- 손쉽게 백업 서버 운영이 가능

 

데이터베이스 이중화 분류

- Eager : 트랜잭션 수행 중 데이터 변경이 발생하면 이중화된 모든 데이터베이스에 즉시 전달하여 변경내용이 즉시 적용

- Lazy : 트랜잭션 수행이 종료되면 변경 사실을 새로운 트랜잭션에 작성하여 각 데이터베이스에 전달

 

데이터베이스 이중화 구성 방법

- 활동-대기 : 한 DB가 활성 상태면 다른 DB는 대기하고 있다가 장애 발생 시 대기하던 DB가 자동으로 수행

                     구성 방법과 관리가 쉬워 기업에서 많이 사용됨

- 활동-활동 : 두 개의 DB가 서로 다른 서비스를 제공하다가 한 쪽이 문제가 생기면 나머지 다른 DB가 서비스를 제공

                     처리율이 높지만 구성 방법 및 설정이 복잡

 

클러스터링(Clustering)

- 두 대 이상의 서버를 하나의 서버처럼 운영하는 기술

- 클러스터링 종류

고가용성 클러스터링 - 하나의 서버에 장애가 발생하면 다른 서버가 받아 처리
- 일반적으로 언급되는 클러스터링
병렬 처리 클러스터링 전체 처리율을 높이기 위해 하나의 작업을 여러 서버에서 분산하여 처리

 

RTO /RPO

RTO (Recovery Time Objective, 목표 복구 시간) 비상사태 또는 업무 중단 시점으로부터 복구되어 가동될 때까지의 소요 시간
RPO (Recovery Point Objective, 목표 복구 시점) 비상사태 또는 업무 중단 시점으로부터 데이터를 복구할 수 있는 기준점

 

 

2-25. 데이터베이스 보안

데이터베이스 보안

- 데이터베이스의 일부 또는 전체에 대해 권한이 없는 사용자가 액세스하는 것을 금지하도록 사용되는 기술

 

암호화(Encryption)

- 데이터 전송 시, 송신자가 지정한 수신자 이외에는 내용을 알 수 없도록 평문을 암호문을 변환하는 것

- 암호화 과정 : 평문 -> 암호문

- 복호화 과정 : 암호문 -> 평문

- 암호화 기법

   - 개인키 암호화 방식

   - 공개키 암호화 방식

 

접근 통제

- 데이터가 저장된 객체와 이를 사용하는 주체 사이의 정보 흐름을 제한하는 것

- 3요소

   - 접근통제 정책

   - 접근통제 매커니즘

   - 접근통제 보안모델

- 접근통제 기술

 

 

2-26. 데이터베이스 백업

데이터베이스 백업

- 장애에 대비하여 데이터베이스에 저장된 데이터를 보호하고 복구하기 위한 작업

 

로그 파일

- 데이터베이스의 상태 변화를 시간의 흐름에 따라 모두 기록한 파일

- 데이터베이스 복구를 위한 가장 기본적인 자료

 

데이터베이스 복구 알고리즘

NO-UNDO / REDO - 데이터베이스 버퍼의 내용을 비동기적으로 갱신한 경우의 복구 알고리즘
- NO-UNDO : 트랜잭션 완료 전에는 변경 내용이 데이터베이스에 기록되지 않으므로 취소할 필요가 없음
- REDO : 트랜잭션 완료 후 데이터베이스 버퍼에는 기록되어 있고 저장매체에는 기록되지 않았으므로 트랜잭션 내용을 다시 실행해야함
UNDO / NO-REDO - 데이터베이스 버퍼의 내용을 동기적으로 갱신한 경우의 복구 알고리즘
- UNDO : 트랜잭션 완료 전에 시스템이 파손되었다면 변경된 내용을 취소함
- NO-REDO : 트랜잭션 완료 전에 데이터베이스 버퍼 내용을 저장 매체에 기록했으므로 트랜잭션 내용을 다시 실핼할 필요 없음
UNDO / REDO - 데이터베이스 버퍼의 내용을 동기/비동기적으로 갱신한 경우의 복구 알고리즘
- 데이터베이스 기록 전에 트랜잭션이 완료될 수 있으므로, 완료된 트랜잭션이 데이터베이스에 기록되지 못했다면 다시 실행해야 함
NO-UNDO / NO-REDO - 데이터베이스 버퍼의 내용을 동기적으로 저장 매체에 기록하지만, 데이터베이스와는 다른 영역에 기록한 경우의 복구 알고리즘
- NO-UNDO : 변경 내용은 데이터베이스와 다른 영역에 기록되어 있어 취소할 필요가 없음
- NO-REDO : 다른 영역에 이미 기록되어 있으므로 트랜잭션을 다시 실행할 필요가 없음

 

백업 종류

- 복구 수준에 따라 운영체제를 이용하는 물리 백업과 DBMS 유틸리티를 이용하는 논리백업으로 나뉨

물리 백업 - 데이터베이스 파일을 백업
- 백업 속도가 빠르고 작업이 단순함
- 단, 문제 발생 시 원인 파악 및 문제 해결이 어려움
논리 백업 - DB 내의 논리적 객체들을 백업
- 복원 시 데이터 손상을 막고 문제 발생 시 원인 파악 및 해결이 수월
- 단, 백업/복원 시간이 많이 소요됨

 

 

2-27. 스토리지(Storage)

스토리지

- 단일 디스크로 처리할 수 없는 대용량의 데이터를 저장하기 위해 서버와 저장장치를 연결하는 기술

- 스토리지 종류

DAS(Direct Attached Storage) - 서버와 저장장치를 전용 케이블로 직접 연결하는 방식
- 속도가 빠르고 설치 및 운영이 쉽다.
- 초기 구축 비용 및 유지보수 비용이 저렴하다.
- 다른 서버에서 접근할 수 없고, 파일을 공유할 수 없다.
- 확장성 및 유연성이 떨어진다.
NAS(Network Attached Storage) - 서버와 저장장치를 네트워크를 통해 연결하는 방식
- 장소에 구애받지 않고 저장장치에 쉽게 접근
- Ethernet 스위치를 통해 다른 서버에서도 스토리지에 접근 가능
- DAS에 비해 확장성 및 유연성이 우수하다.
SAN(Storage Area Network) - DAS의 빠른 처리와 NAS의 파일 공유를 혼합한 방식
- 서버와 저장장치를 연결하는 전용 네트워크를 별도로 구성하는 방식
- 파이버 채널(FC) 스위치를 이용하여 네트워크 구성
- 확장성, 유연성, 가용성이 우수하다.

 

 

2.28 논리 데이터 모델의 변환

Entity를 테이블로 변환

- 논리 데이터 모델에서 정의된 엔티티물리 데이터 모델테이블로 변환

논리적 설계 (데이터 모델링) 물리적 설계
엔티티
속성
주 식별자
외부 식별자
관계
테이블
칼럼
기본키
외래키
관계

 

슈퍼타입 / 서브타입을 테이블로 변환

변환 방법

http://tech.devgear.co.kr/files/attach/images/271/337/d2f0a50f3fbd27bf9011c8a01324b250.png

슈퍼타입 기준 테이블 변환

http://tech.devgear.co.kr/files/attach/images/271/337/b52c9767323d8f439916fe98baa95da4.png

- 서브타입슈퍼타입에 통합하여 하나의 테이블로 만듬

- 서브타입에 속성이나 관계가 적을 경우에 적용

 

서브타입 기준 테이블 변환

http://tech.devgear.co.kr/files/attach/images/271/337/518f54b17e5bc220c073fc9901f976ab.png

- 슈퍼타입 속성들을 각각의 서브타입에 추가하여 서브타입들을 개별적인 테이블로 만듬

- 서브타입에 속성이나 관계가 많을 경우 적용

 

개별타입 기준 테이블 변환

http://tech.devgear.co.kr/files/attach/images/271/337/dda612c9396d49f9a7a8cb0563c1eda3.png

- 슈퍼타입과 서브타입들을 각각의 개별적인 테이블로 변환

- 슈퍼타입과 서브타입 테이블 사이에 1:1관계가 형성

 

 

속성을 컬럼으로 변환

- 논리적 데이터 모델에서 정의한 속성물리적 데이터 모델컬럼으로 변환

사원번호
부서번호(FK)
이름
주소
전화번호
이메일

⬇️

empnum depnum name add phon email
AK2015 Z01 홍길동 서울 02-*** abc123
A003 R01 이춘식 경기 032-*** hello22
AK2018 T01 성봉호 충남 041-*** py231
일반 속성 변환 속성과 컬럼은 명칭이 반드시 일치할 필요는 없으나, 개발자와 사용자 간 의사소통을 위해 가능한 표준화된 약어를 사용하여 일치시킴
Primary UID를 기본키로 변환 논리 데이터 모델에서의 Primary UID는 물리 데이터 모델의 기본키로 만듬
Primary UID를 기본키로 변환 다른 엔티티와의 관계로 인해 생성된 Primary UID는 물리 데이터 모델의 기본키로 만듬
Secondary UID를 유니크키로 변환 논리 모델링에서 정의된 Secondary UIDAlternate Key는 물리 모델에서 유니크키로 만듬

 

관계를 외래키로 변환

- 논리 데이터 모델에서 정의된 관계기본키와 이를 참조하는 외래키로 변환

 

 

2.29 물리 데이터 모델 품질 검토

물리 데이터 모델 품질 검토

- 개발 단계로 넘어가기 전에 수행

=> 성능향상과 오류 예방

 

물리 데이터 모델 품질 기준

정확성 요구사항이나 업무 규칙, 표기법에 따라 정확하게 표현되었음
완전성 데이터 모델의 구성요소를 누락 없이 정의하고 요구사항이나 업무 영역을 누락 없이 반영하였음
준거성 데이터 표준, 표준화 규칙, 법적 요건 등을 정확하게 준수하였음
최신성 최근 이슈나 현행 시스템을 반영하고 있음
일관성 표현상의 일관성을 유지하고 있음
활용성 작성된 모델과 설명을 사용자가 충분히 이해할 수 있고, 업무 변화에 따른 데이터 구조 변경이 최소화할 수 있도록 설계되었음

 

 

2.30 자료구조

자료구조

- 자료를 기억장치 공간 내에 저장하는 방법과 자료 간의 관계, 처리 방법 등을 연구 분석하는 것

- 자료 구조의 분류

   선형 구조 

    - 배열(Array)

    - 선형 리스트(Linear list) 

        - 연속 리스트(Continuous list)

        - 연결 리스트(Linked list)

    - 스택(Stack)

    - 큐(Queue)

    - 데크(Deque)

  비선형 구조

   - 트리(Tree)

   - 그래프(Graph)

 

 

배열(Array)

- 크기와 형이 동일한 자료들이 순서대로 나열된 자료의 집합

- 반복적인 데이터 처리 작업에 적합한 구조

- 정적인 자료 구조, 기억장소의 추가가 어려움

- 데이터 삭제 시, 기억장소가 빈 공간으로 남아 메모리 낭비 발생

 

선형 리스트(Linear list) 

- 연속 리스트(Continuous list)

  - 배열과 같이 연속되는 기억장소에 저장되는 자료 구조

  - 중간에 데이터 삽입을 위해 연속된 빈 공간이 있어야 한다.

  - 삽입, 삭제 시 자료의 이동이 필요

- 연결 리스트(Linked list)

  - 자료들을 임의의 기억공간에 기억시키되, 자료 항목 순서에 따라 노드의 포인터 부분을 이용하여 서로 연결시킨 자료 구조

  - 연결을 위한 링크(포인터) 부분이 필요하여 기억 공간 이용효율이 좋지 않음

  - 접근 속도가 느리고 연결이 끊어지면 다음 노드 찾기 어려움

 

스택(Stack)

- 리스트 한쪽 끝으로만 자료의 삽입, 삭제가 이루어지는 자료구조

- 후입선출(LIFO : Last In First Out)

- 저장할 기억 공간이 없는 상태에서 데이터 삽입 : 오버플로우(Overflow)

- 삭제할 데이터가 없는 상태에서 데이터 삭제 : 언더플로우(Underflow)

 

큐(Queue)

- 리스트 한쪽에는 삽입, 다른 한쪽에서는 삭제가 이루어지는 자료구조

- 선입선출(FIFO : First In First Out)

- 시작을 표시하는 프런트(Front) 포인터, 끝을 표시하는 리어(Rear) 포인터 존재

 

그래프(Graph)

- 정점(Vertex)간선(Edge)의 두 집합으로 이루어지는 자료구조

- 사이클이 없는 그래프를 트리라고 한다

- 간선 방향성의 유무에 따라 분류

   - 방향 그래프 : 최대 간선 수 n(n-1)

   - 무방향 그래프 : 최대 간선 수 n(n-1)/2

  * n : 정점의 개수

 

 

2.31 트리(Tree)

트리

- 정점(Node, 노드)선분(Branch, 가지)을 이용하여 사이클을 이루지 않도록 구성한 그래프의 특수한 형태

- 하나의 기억공간을 노드(Node)라고 하며, 노드와 노드를 연결하는 선을 링크(Link)라고 한다.

 

 

 

2.32 이진 트리

이진 트리

- 차수(Degree)가 2 이하인 노드들로 구성된 트리

- 자식이 둘 이하인 노드들로만 구성된 트리

- 레벨 i에서 최대 노드의 수 : 2^i-1

- 단말 노드 수가 n0, 차수가 2인 노드 수가 n2라 할때, n0 = n2 + 1

 

 

레벨 3에서 최대 노드의 수 : 2^3-1 = 4이다.
단말 노드의 개수가 4이고, 차수가 2인 노드가 3개 이므로 4 = 3 + 1에 의해 성립

 

 

 

 

 

 

트리의 운행법

- 트리를 구성하는 각 노드들은 찾아가는 방법

- 운행방법

  - Preorder : Root -> Left -> Right (ABDCFG)

  - Inorder : Left -> Root -> Right (DBEAFCG)

  - Postorder : Left -> Right -> Root (DEBFGCA)

 

수식의 표기법

- 전위 표기법(PreFix)

- 중위 표기법(InFix)

- 후위 표기법(PostFix)

 

 

2.33 정렬(Sort)

삽입 정렬(Insertion Sort)

- 가장 간단한 정렬 방식

- 이미 순서화된 파일에 새로운 하나의 레코드를 순서에 맞게 삽입시켜 정렬

- 평균과 최악 수행 시간 복잡도는 O(n2)

 

예) 8,5,6,2,4 를 삽입 정렬로 정렬하시오.

5 8 6 2 4

두번째 값을 첫번째 값과 비교하여 5를 첫번재 자리에 삽입하고 8을 한칸 뒤로 이동

5 6 8 2 4

세번째 값을 첫번째, 두번째 값과 비교하여 6을 8자리에 삽입하고, 8은 한칸 뒤로 이동

2 5 6 8 4

네번째 값 2를 처음부터 비교하여 맨 처음에 삽입하고, 나머지를 한 칸씩 뒤로 이동

2 4 5 6 8

다섯번째 값 4를 처음부터 비교하여 5자리에 삽입하고, 나머지를 한 칸씩 뒤로 이동

 

선택 정렬(Selection Sort)

- n개의 레코드 중 최소값을 찾아 첫 번째 레코드 위치에 놓고, 나머지 n-1개 중 다시 최소값을 찾아 두 번째 레코드 위치에 놓는 방식을 반복하여 정렬

- 평균과 최악 수행 시간 복잡도는 O(n2)

 

예) 8,5,6,2,4 를 선택 정렬로 정렬하시오.

1회전

5 8 6 2 4
2 8 6 5 4

 

2회전

2 6 8 5 4
2 5 8 6 4
2 4 8 6 5

3회전

2 4 6 8 5
2 4 5 8 6

4회전

2 4 5 6 8

 

버블 정렬(Bubble Sort)

- 주어진 파일에서 인접한 2개의 레코드 키 값을 비교하여 그 크기에 따라 레코드 위치를 서로 교환하는 정렬 방식

- 평균과 최악 수행 시간 복잡도는 O(n2)

 

예) 8,5,6,2,4 를 버블 정렬로 정렬하시오.

1회전

5 8 6 2 4
5 6 8 2 4
5 6 2 8 4
5 6 2 4 8

2회전

5 2 6 4 8
5 2 4 6 8

3회전

2 5 4 6 8
2 4 5 6 8

4회전 

2 4 5 6 8

 

쉘 정렬 (Shell Sort)

- 입력 파일을 어떤 매개변수 값으로 서브파일을 구성하고, 각 서브파일을 삽입(Insertion) 정렬 방식으로 순서 배열하는 과정을 반복

- 삽입 정렬을 확장한 개념

- 평균 수행 시간 복잡도 : O(n^1.5)

- 최악 수행 시간 복잡도 : O(n^2)

 

퀵 정렬(Quick Sort)

- 를 기준으로 작은 값은 왼쪽, 큰 값은 오른쪽 서브 파일에 분해시키는 과정을 반복하는 정렬 방식

- 코드의 많은 자료 이동을 없애고, 하나의 파일을 부분적으로 나누어 가며 정렬

- 평균 수행 시간 복잡도 : O(nlog2n)

- 최악 수행 시간 복잡도 : O(n^2)

 

힙 정렬(Heap Sort)

- 전이진 트리를 이용한 정렬 방식

- 구성된 전이진 트리힙 트리로 변환하여 정렬

- 평균과 최악 수행 시간 복잡도 : O(nlog2n)

 

2-Way 합병 정렬(Merge Sort)

- 이미 정렬되어 있는 2개의 파일을 1개의 파일로 합병하는 정렬 방식

- 평균과 최악 수행 시간 복잡도 : O(nlog2n)

 

기수 정렬(Radix Sort) = 버킷 정렬(Bucket Sort)

- 큐(Queue)를 이용하여 자릿수(Digit)별로 정렬하는 방식

- 레코드의 키 값을 분석하여 같은 수 또는 같은 문자끼리 그 순서에 맞는 버킷에 분배하였다가 버킷 순서대로 레코드를 꺼내어 정렬

- 평균과 최악 수행 시간 복잡도 : O(dn)

 

 

 

출처 ; https://starrykss.tistory.com/1624

'자격증 > 정보처리기사' 카테고리의 다른 글

[정처기 실기] 8. SQL 응용  (1) 2023.10.05