4. 프로그래밍 언어 활용

 4.1 서버프로그램 구현

  4.1.1 서버프로그램 구현 능력단위 정의

  4.1.2 개발환경구축

  4.1.3 공통모듈구축


- 서버프로그램 구현 능력단위 정의

서버프로그램 구현이란 애플리케이션 설계를 기반으로 개발에 필요한 환경을 구성하고, 프로그래밍 언어와 도구를 활용하여 공통모듈, 업무프로그램 배치 프로그램을 구현하는 능력이다.

 

1.개발환경 구축

 

1.1 개발환경 구축의 이해

서버프로그램 구현을 위한 첫번째 시작은 개발에 필요한 환경을 구성하는 일이다. 개발환경 구성 시 구현될 요구사항의 명확한 이해가 필요하며, 이에 맞는 개발도구 및 서버의 선정이 이루어져야 한다. 또 개발에 사용되는 도구들의 사용 편의성과 성능, 라이선스 등에 대한 내용도 파악해야 한다.

 

1.2 개발을 위해 사용되는 도구의 분류와 특성

개발 환경 구성을 위한 도구들의 분류는 아래와 같이 크게 4가지로 가능하며 각각의 내용과 사용되는 도구들을 이해해야 한다. 

구현도구 Eclips ,visual studio cade

테스트도구 xUnit, Spring teset

형상관리도구 CVS, Subversion, Git

빌드도구 Ant, Maven, Gradle

 

1. 구현 도구

코드의 작성과 디버깅, 수정 등과 같은 여러가지 작업이 가능하며 구현해야 할 소프트웨어가 어떤 프로그래밍 언어로 개발되는지에 따라 선택하여 사용하며 프로그램을 개발할 때 가장 많이 사용되는 도구이다.

 

2. 빌드 도구

작성한 코드에 대한 빌드 및 배포를 수행하며, 각각의 구성 요소들과 모듈들에 대한 의존성 관리를 지원하는 도구이다.

 

3. 테스트 도구

코드의 기능 검증과 전체의 품질을 높이기 위해 사용되는 도구들로 코드의 테스트, 테스트에 대한 계획, 수행 및 분석 등의 작업이 가능하다.

 

4. 형상관리 도구

개발자들이 작성한 코드와 리소스 등 산출물에 대한 버전 관리를 위해 형상관리 도구가 사용된다. 프로젝트 진행시 필수로 포함되는 도구들이다.

 

1.3 개발환경 구축 시 구성 요소

개발환경 구성은 크게 하드웨어와 소프트웨어 환경으로 구성되며 형상관리 등 다양한 요소로 되어있다. 하드웨어와 소프트웨어 구성 시 유의점은 추후 운영할 환경도 고려하여 구성해야 한다는 것이다.

 

1. 하드웨어 환경

서버 환경 : 프로젝트 및 개발 구성에 따라 애플리케이션 서버, 데이터베이스 서버, 파일 서버 등으로 구분한다.

 

웬 서버 

HTTP를 이용한 요청/응답을 처리 하기 위한 미들웨어를 설치하는 서버이다. 주로 웹 브라우저 화면에서 요청하는 서비스를 처리하기 위해 ,HTML,CSS 이미지 등을 제공하는 웹 서버 애플리케이션의 처리를 담당한다.

 

웹애플리케이션 서버

웹 서비스를 동적으로 제공하기 위해 WAS의 형태인 Resin, Tomcat등 과 서비스에 관련된 애플레케이션이 설치되는 서버이다.

 

데이터베이스 서버

데이터의 수집, 저장을 위한 용도로 MySQL., Oracle, Ms-SQL 등 데이터베이스의 SW에 설치되어 있다.

 

파일 서버

파일 저장 하드웨어로 물리적 저장장치를 활용한 서버이다. 대용량 HDD,SDD 등 장치가 주요 요소이다.

 

클라이언트 환경 : 위의 서버환경에서 제공되는 서비스를 사용하기 위해 유저의 인터페이스를 제공하는 하드웨어 이다.

 

Client Server 화면

주로 설치를 통해 사용자와 커뮤니케이션 하는 화면들이다. Visual Basic, C#,Delphi 등으로 개발되어 사용자에게 배포된다.

 

웹브라우저 화면

웹서비스의 형태로 서버에서 웹 어플리케이션을 응답시 브라우저를 통해 사용자와 커뮤니케이션을 한다.

 

스마트폰

CS화면과 유사하지만 모바일 디바이스에 설치되어 사용자가 활용한다. 웹앱의 경우 웹브라우저와 동일한 형태로 모바일 상 웹브라우저를 통해 서비스를 받는다.

 

2. 소프트웨어 환경

개발을 위한 기본적인 소프트웨어 환경을 선택 및 구성한다. 프로젝트의 성격과 요구사항에 부합한 운영체제, 언어의 선택에 적절한 미들웨어, 그리고 데이터베이스시스템을 설치한다.

 

운영체제 

운영체제는 서버의 하드웨어를 사용자 측면에서 편리하고 유용하게 사용하기 위한 SW이다.

 

미들웨어

개발을 위한 보조 SW로서 웹서버나 JVM 같은 개발환경의 구성요소로 활용한다. 웹서비스 경우 웹서버를 설치하여 사용자 요구사항에 적합한 웹서비스를 제공한다. JAVA를 활용한 개발의 경우 JVM을 설치하여 컨테이너로의 기능을 이용한다.

 

DBMS

데이터의 저장과 활용을 위해 데이터베이스 시스템을 설치하고 고객사의 요청과 요구사항에 따라 제품을 선택한다.

 

3. 형상관리

형상관리란 소프트웨어의 개발을 위한 전체과정에서 발생하는 모든 항목의 변경 사항을 관리하기 위한 활동이다.

 

형상 식별

형상관리 대상을 정의, 식별하고 해당 항목에 추적성을 부여하기 위해 ID와 관리번호를 부여한다. 추후 변경에 관련된 이슈 발생 시 ID와 관리번호를 이용하여 추적한다. 이러한 활동은 베이스라인의 기준이 된다.

 

변경 제어

형상항목으 버전관리를 위해 형상통제위원회를 두어 변경요구, 영향도분석, 검토, 승인 등 변경절차를 통한 통제를 수행하여 베이스라인에 대한 관리와 형상에 대한 통제를 수행할 수 있도록 한다.

 

형상 상태 보고

형상의 통제와 관련된 결과를 관리하고 보고서로 작성하는 활동이다. 베이스라인의 상태에 대한 판단의 기준이 된다.

 

형상 감사

감사활동을 통해 형상 통제의 확인, 검증과 베이스라인의 무결성을 평가하는 활동을 말한다.

 

1.4 개발환경 구축 순서

프로젝트 요구사항 분석

개발환경 구성을 위한 필요 도구 설계

개발 대상에 따른 적정한 개발 언어 선정

개발 언어와 하드웨어를 고려한 구현도구 구축

빌드와 테스트 도구 구축

 

1. 개발환경 준비를 위해 프로젝트의 요구사항을 분석한다.

대상이 되는 시스템의 요구사항을 분석하여 어떠한 도구들이 필요한지 준비하는 과정이다.

시스템의 환경을 분석하여 개발환경 구축에 필요한 도구에 대해 파악한다.

 

2. 개발 환경 구성을 위한 필요도구를 설계한다.

개발을 해야할 구현도구, 빌드도구, 테스트도구, 형상관리도구 등 요구사항에 맞는 시스템을 구축하기 위한 환경을 설계한다.

 

3. 개발 대상에 따른 적절한 개발 언어를 선정한다.

적정성 : 개발하고자 하는 시스템이나 응용 프로그램의 목적에 적합한가

효율성 : 개발 대상을 효율적으로 구현이 가능한가

이식성 : 여러가지 디바이스와 운영체제에 적용 가능한가

친밀성 : 대중의 프로그래멍가 사용 가능한 언어인가.

범용성 : 다수의 시스템에서 사용중이며 많은 과거의 사례가 존재하는가

 

사용자의 요구사항과 개발 대상의 업무의 성격에 적합한 특성을 확인하고 컴파일러의 사용성을 고려하여 적합한 언어를 선정한다.

개발 대상의 업무의 성격에 적합한 특성을 확인하고 적합한 언어를 선정한다. 예로 대상업무가 웹을 이용한 고객 서비스의 경우 적합한 JAVA,JSP 및 JavaScript/HTML을 server와 client 개발언어로 선정한다.

 

4. 프로젝트의 성격과 개발자 편의성을 위한 구현도구를 선정한다

위의 선정된 개발언어에 따라서 적합한 구현도구를 선정한다. 예로 Java로 개발언어가 선정되었다면 이클립스를 주로 이용하여 구현하며 C# VB등의 경우 비쥬얼 스튜디오를 활용할 수 있다.

 

5. 프로그램의 배포 및 라이브러리 관리, 테스트를위한 빌드 테스트 도구를 선정한다.

프로젝트 팀원의 빌드 도구의 친밀도와 숙련도를 고려하여 빌드 도구와 형상관리 도구를 고려하고 통합 개발 도구와 호환이 가능한 도구를 선정한다.

테스트도구의 경우 MTP에 적합하게 계획에 따라 필요한 도구를 선정한다. 온라인 트랜잭션이 빈번한 개발 대상인 경우 테스트자동화 도구를 고려하여 품질 향상에 기여한다.

 

2. 서버 개발 프레임워크

 

2.1 프레임워크에 대한 이해

소프트웨어 프레임워크는 효율적인 정보 시스템 개발을 위한 코드 라이브러리, 애플리케이션 인터페이스, 설정 정보 등의 집합으로서 재사용이 가능하도록 소프트웨어 구성에 필요한 기본을 제공하며 정보시스템의 개발 및 운영을 지원하는 도구 및 가이드 등을 포함한다.

 

2.2 프레임워크의 특징

프레임워크는 모듈화, 재사용성, 확장성 ,제어의 역흐름이라는 대표 4가지 특징을 보유한다.

 

모듈화 : 인터페이스에 의한 캡슐화를 통해 모듈화를 강화하고 설계와 구현의 변경에 따르는 영향을 극소화하여 소프트웨어의 품질을 향상시킨다.

재사용성 : 프레임워크가 제공하는 인터페이스는 반복적으로 사요할 수 있는 컴포넌트를 정의할 수 있게하여 재사용성을 높여준다.

확장성 : 프레임워크는 다형성을 통해 애플리케이션이 프레임워크의 인터페이스를 확장할 수 있게 한다.

제어의 역흐름 : 프레임워크 코드가 전체 애플리케이션의 처리 흐름을 제어하여 특정한 이벤트가 발생할 때 다형성을 통해 애플리케이션이 확장한 메소드를 호출함으로써 제어가 프레임워크로부터 애플리케이션으로 거꾸로 흐르게 한다.

 

2.3 서버 프로그램을 구현하기 위한 서버개발 프레임워크

서버 개발 프레임워크는 대표적인 예로 Java를 이용하는 Spring 프레임워크가 있으며 Python의 diango, Javascript의 Node.js 등이 있다.

목표 대상 시스템의 하드웨어와 요구사항을 분석하여 개발 언어와 구현도구를 선정함과 유사하게 서버 개발 프레임워크를 선정한다.

 

-공통 모듈 구현

 

1. 재사용

기존의 소프트웨어 또는 소프트웨어 지식을 활용해, 새로운 소프트웨어를 구축하는 일이다.

 

1.1 재사용의 이해

 

1. 재사용의 개념

재사용가능한 소프트웨어나 소프트웨어 지식은 재사용 가능한 자산이다. 자산에는 설계, 요구명세, 검사, 아키텍처 등도 포함된다.

 

2. 코드 재사용

가장 잘 알려져 있는 재사용 가능 자산은 코드이다. 코드 재사용은 어떤 시점에 쓰여진 프로그램의 일부 또는 전부를 이후의 다른 프로그램을 만들때 사용하는 것이다. 코드의 재사용은 장황한 작업에 소비하는 시간과 에너지를 절약하는 전형적 기법이다.

 

3. 재사용 프로그래밍 기법

재사용을 빠르고 용이하게 하기 위해 프로그래밍 정식 절차의 일부로서 보다 체계적으로 실시할 수 있도록하는 연구가 많이 이루어져 왔다.

 

객체지향 프로그래밍 기법

객체 단위로 재사용이 이루어지도록 설계하여 구조화된 구현이 가능하다.

 

제네릭 프로그래밍 

데이터 형식에 의존하지 않고, 하나의 값이 여러 다른 데이터 타입들을 가질 수 있는 기술에 중점을 두어 재사용성을 높일 수 있는 프로그래밍 방식이다.

 

자동프로그래밍

프로그램이 사용자가 설정한 일련의 변수에 근거하여 어떤 종류의 프로그램을 생성하는 것이다.

 

메타프로그래밍

자기 자신 혹은 다른 컴퓨터 프로그램을 데이터로 처리함으로써 프로그램을 자성, 수정하는 프로그램을 작성하는 것을 말한다.

 

1.2 재사용의 유형

 

1. 편의점 재사용

프로젝트를 시작할 때 재사용가능한 컴포넌트가 있는지를 찾아보고 재사용한다.

편의적 재사용은 다음으로 더 세분화할 수 있다.

 

내부 재사용

팀내에서 만든 콤포넌트를 재사용한다. 어디까지나 편의상이며 계획적인 것이 아니기 때문에, 인터페이스의 조정 등에 추가적인 비용이 발생할 수 있다.

 

외부 재사용

서드파티에서 만든 콤포넌트를 구하여 사용한다. 유상인 경우, 조달비용을 자신이 직접 개발할 때 드는 비용이 20%이하로 잡는 것이 일반적이다. 또, 조달한 콤포넌트를 학습하여 활용하는데 걸리는 시간도 고려해야한다.

 

2. 계획적 재사용

컴포넌트를 차후에 재사용가능하도록 전략적으로 설계해 나간다.

 

1.3 재사용의 사례 

 

1. 소프트웨어 라이브러리

코드 재사용의 매우 일반적인 예로서 라이브러리를 사용하는 것이다.

 

2. 디자인 패턴

디자인 패턴은 비슷한 문제를 풀기 위한 범용적인 해법이다.

 

3. 프레임 워크

개발자는 일반적으로 타사 응용 프로그램 및 프레임 워크를 통해 많은 소프트웨어를 재사용한다.

프레임워크는 대개 도메인 마다 다르고 응용 프로그램 그룹에 적용 할 수 있다.

 

2. 모듈화

 

2.1 모듈의 개요

프로그램을 구성하는 구성 요소의 일부로 관련도니 데이터와 함수들이 묶여서 모듈을 형성한다. 주로 파일 단위로 구성된다.

 

2.2 모듈화의 원리

 

1. 분할과 지배

복잡한 문제를 분해, 모듈 단위로 문제 해결한다.

 

2. 정보 은폐

어렵거나 변경 가능성이 있는 모듈을 타모듈로부터 은폐한다.

 

3. 자료추상화

각 모듈 자료구조를 액세스하고 수정하는 함수내에 자료 구조의 표현 내역을 은폐한다.

 

4. 모듈의 독립성

낮은 결합도와 높은 응집도를 가진다.

 

2.3 모듈화 측정 척도

모듈화는 공통모듈의 구현을 위해 재사용성 강화를 위한 중요한 개념이다. 모듈은 내부처리요소간의 독립성을 나타내며 응집도가 높을수록 좋고 모듈간의 연관성은 루즐리커플로 구현할 수 있는 결합도가 낮을수록 좋다.

 

2.4 모듈화의 종류

 

1. 설계측면

 

모듈 

설계 시 관련이 있는 기능을 모아 한 부분에 모아놓고 라이브러리 형태로 사용된다.

 

컴포넌트

바이너리형태의 재사용 가능한 형태로 인터페이스에 의해 로직을 수행 할 수있는 모듈단위를 말한다.

소프트웨어 재사용과 관련하여 객체들의 모임, 대규모 재사용 단위이다.

 

서비스

기존 컴포넌트 보다는 루즐리 커플드 한 형태의 기능을 제공하는 모듈단위 이다.

 

2. 구현 측면

 

매크로 

프로그램 구현 시 반복되는 부분을 특정 이름을 부여하고 이름을 호출하여 실행할 수 있도록 하는 프로그래미이 기법, 단 전처리기는 매크로가 사용된 모든 곳에 코드를 대체해 놓는다.

 

함수

프로그램 구현시 커더란 프로그램의 일부코드로 특정한 작업을 수행하고 상대적으로 다른 코드에 비해 독립적인 모듈이다.

 

인라인

프로그램 구현 시 반복되는 부분을 특정 이름을 부여해 놓고 이름을 호출하여 실핼 할 수있도록 하는 프로그램 기법. 단 컴파일러는 이 inline이 사용된 모든 곳에 코드를 복사한다.

 

3. 결합도

 

3.1 결합도의 개요

모듈내부가 아닌 외부의 모듈과의 연관도이다.

소프트웨어 구조에서 모듈간의 관련성을 측정하는 척도이다.

 

3.2 결합도의 특징

서로 다른 상위 모듈에 의해 호출되어 처리 상 연관성이 없는 서로 다른 기능을 수행한다.

 

3.3 결합도 단계

자료 : 모듈들이 간단히 변수를 파라미터로 교환한다.

스탬프 : 모듈 사이에 자료구조 교환한다.

제어 : 제어용 신호를 주고 받는다.

외부 : 모듈들이 소프트웨어의 외부환경과 연관되는 사용된다.

공통 : 많은 모듈들이 전역변수를 참조할 때 발생한다.

내용 : 한 모듈이 다른 모듈의 내부자료나 제어정보를 사용한다. 

 

결합도는 낮을수록 좋다.

 

4. 응집도

 

4.1 응집도의 개요

정보은닉 개념의 확장개념으로, 하나의 모듈은 하나의 기능을 수행하는 집적성을 지칭한다.

모듈의 독립성을 나타내는 개념으로 모듈내부 구성원간의 연관도이다.

 

4.2 응집도의 특징

클래스 목적에 부합하는 같은 기능영역의 함수들로 구성되어 있다.

함수의 개수가 상대적으로 적으며 오로지 자신만이 할 수 있는 책임을 부여 받는다.

하나의 함수에 많은 기능을 부여 하지 않고 다른 함수와 협력한다.

 

4.3 응집도의 단계

우연적 : 아무 관련성 없는 작업을 한 모듈에서 모음

논리적 : 유사한 성격의 작업들을 모음

시간적 : 같은 시간대에 처리되어야 하는 것들을 모음

절차적 : 모듈진행 요소들이 서로 관계되어지고 순서대로 진행

교환적 : 동일한 입출력 자료를 이용하여 서로 다른 기능을 수행하는 기능

순차적 작업의 결과가 다른 모듈이 입력자료로 사용

기능적 : 하나의 기능만 수행하는 모듈

 

응집도는 높을수록 좋다.

모듈내부의 독립성을 보장하기 위해 단 하나의 기능만을 구현하는 것을 말한다.

 

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

정보처리기사 36일차  (0) 2021.02.18
정보처리기사 35일차  (0) 2021.02.13
정보처리기사 33일차  (0) 2021.02.11
정보처리기사 32일차  (0) 2021.02.10
정보처리기사 31일차  (0) 2021.02.10

 3.5 데이터 전환

  3.5.3 데이터 전환 수행

  3.5.4 데이터 정제


1. 데이터 전환 수행 계획

 

1.1 데이터 전환 절차

데이터 전환 수행 계획서를 만들기 위해서는 전체적인 데이터 전환 방법론을 이해해야 한다.

데이터 전환 절차는 요구사항 분석단계, 설계 단계, 구현단계, 테스트 단계, 데이터 전환으로 구분한다.

 

1.2 데이터 전환 수행 계획

데이터 전환 수행 계획 작성을 위해서는 데이터 전환 범위, 일정, 전환절차를 명확히 해야한다.

 

1. 데이터 전환 범위 선정

전환 대상의 상세 내용, 데이터 형식, 대상 건수를 파악한다.

전환 제외 대상을 기록한다.

 

2. 데이터 전환 일정 선정

팀별 업무를 분장하여 팀별 역할과 납기를 기록한다. 전환 차수의 결정은 통합 전환 계획 및 테스트 계획에 의해 결정된다.

 

3. 데이터 전환 절차

현행 시스템에서 목표 시스템으로 데이터 전환을 위한 단계를 구분하고 각 단계별 작업 내용과 사용되는 도구를 별도로 기록한다.

원천 데이터베이스의 데이터는 백업하여 스테이징 데이터베이스로 복구한 후 정비 및 변환 작업을 수행한다. 이는 원천 데이터베이스의 손상과 변형을 막기 위한 방법이다.

데이터 전환이 완료된 후 검증단계에서는 스테이징 데이터베이스가 아닌 원천 데이터베이스와 비교하여 데이터 오류를 확인해야 한다.

 

4. 데이터 전환 계획서 작성

데이터 전환을 위해 여러 단계를 거치는 전환 계획서를 작성하여 데이터 전환 시 발생할 수 있는 리스크를 사전에 예방한다.

 

2. 체크리스트

전환 프로그램의 에러, 시간의 제약, 업무 프로세스의 변경, 빈번한 데이터 요건 변경, 하드웨어 장애 등의 위험 요소에 최대한 대응하기 위해 체크리스트를 작성한다.

체크리스트에는 데이터 전환 수행자가 수행할 작업의 상세항목, 작업 내용, 예정 시작, 종료 시각, 작업 담당자를 기재한다.

 

3. 데이터 검증

데이터 검증 방법으로 추출 검증, 전송 검증, 전환 검증, 적재 검증, 통합 검증 방법이 있다.

 

3.1 추출 후 검증

현행 시스템에서 최초 원시 데이터에 대한 검증을 수행한다.

 

3.2 전송 검증

전송된 추출 파일의 코드 전환 후 검증한다.

 

3.3 전환 검증

Tool을 이용해서 데이터를 추출하여 Staging DB를 구성한 후 검증한다.

 

3.4 적재 검증

목적 테이블에 대해 데이터를 검증한다.

데이터 전환이 완료되었다 하더라도 데이터 전환 과정에서 수행한 검증 작업은 단순 매핑 결과에 대한 검증 역할 밖에 할 수 없는 한계가 있다.

목적 테이블에 대한 데이터를 검증함으로 오류 및 데이터 누락 손실 등을 찾을 수 있다.

 

3.5 통합 검증

매핑 후 검증을 의미한다.

오류 데이터를 분석하여 사전 정비 또는 전환 규칙 오류를 수정 반영한다.

 

- 데이터 정제

 

1. 데이터 정제

 

1.1 단계별 데이터 정제 방안

데이터 정제 항목을 정제 시점에 따라 전환 테스트 전, 전환 테스트 중, 최종 전환 중 3단계로 구분하여 데이터 정제작업을 수행한다.

 

2. 데이터 품질 분석

 

2.1 데이터 품질 관리의 정의

기관이나 조직 내외부의 정보시스템 및 DB 사용자의 기대를 만족시키기 위해 지속적으로 수행하는 데이터 관리 및 개선활동

 

2.2 원천 데이터 품질 분석

원천 데이터의 품질이 보장되지 않으면 전환 후의 데이터도 정확하지 않으며, 전환 후의 데이터 정합성 검증시 오류가 발생할 때 그 원인을 찾기도 어렵다.

따라서 전환 전에 원천 데이터의 품질을 검증함으로써 전환의 정확성을 보장할 수 있으며

이전에 미처 발견하지 못한 데이터의 오류도 찾아낼 수 있다.

 

2.3 목적 데이터 품질 분석

원천 데이터와 목적 데이터베이스의 속성 간 대응 관계를 1대1 대응 보다 n대m 대응 관계까 더 많기 때문에 양자 간의 대응 관계를 정확히 표현하기 위해서는 데이터 레이아웃을 정확하게 파악하고 품질 검증을 진행해야 한다.

 

1. 목적 데이터베이스의 전환 데이터 검증을 위한 고려 사항

현재 업무에서 사용하는 보고서나 통계용 정보를 사전에 조사하여 검증에 필요한 내용을 선정하고 현재의 원장을 바탕으로 검증용 정보를 도출한다.

전환 데이터의 검증은 데이터전환 팀 인원뿐만 아니라, 현업 인원도 함께 검증을 수행함으로써 검증의 정확성을 높이고 시간을 단축시키는 것이 중요하다.

 

2. 전환 데이터의 대표적인 정합성 검증 항목

과목별 좌수 및 잔액

특정 기준으로 분류된 좌수 및 잔액

보고서 항목 또는 통계 수치

계좌 및 고객을 Sampling 하여 해당 사항을 모두 검증

특수항 관계가 있는 고객을 추출하여 관련된 데이터가 정확한지 검증

 

3. 오류 데이터 측정

 

3.1 정량적 측정

데이터 품질 기준에 따라 정상 데이터와 오류 데이터를 분리하고, 그 수향을 정확히 측정하여 오류 관리 목록에 기재한다.

 

1. 정상 데이터의 건수를 정량적으로 측정한다.

전환 대상 범위의 데이터를 업무 영역별, 테이블 별로 세분화하여 정상 데이터의 수량을 정확히 측정하고 기록한다.

 

2.오류 데이터의 유형과 건수를 정량적으로 측정한다.

원천 데이터의 정합성 기준을 근거로 업무별로 오류 위치와 유행을 파악하고 그 수량을 정확히 측정하여 기록한다.

 

3.2 오류 원인 파악 및 정제여부 결정

오류 목록의 내용을 확인하고 오류 해결 방안을 참조하여 원천 데이터의 정제를 요청할 것인지 아니면 전환 프로그램을 수정할 것인지 데이터 정제 여부를 결정한다.

 

1. 발견된 데이터 오류를 분석하고 원인을 파악한다.

오류 관리 목록에 기록된 오류 내용을 확인하고 오류의 상태와 심각도를 결정한 후 오류원인을 파악한다.

 

2. 파악된 원인을 기반으로 원천데이터와 전환 프로그램의 정제 필요 여부를 결정한다.

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

정보처리기사 35일차  (0) 2021.02.13
정보처리기사 34일차  (0) 2021.02.12
정보처리기사 32일차  (0) 2021.02.10
정보처리기사 31일차  (0) 2021.02.10
정보처리기사 30일차  (0) 2021.02.08

3. 데이터베이스

 3.4 물리 데이터베이스 설계

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

 3.5 데이터 전환

  3.5.1 데이터 전환 능력 단위 정의

  3.5.2 데이터 전환 기술


1. 물리데이터 모델 품질 기준

 

1.1 물리데이터 모델 품질 검토의 필요성

물리데이터모델은 시스템 성능에 대해 직접적인 영향을 미치기 때문에 향후에 발생할 수 있는 성능 문제를 최소하하는 노력이 필요하다.

 

1.2 물리 데이터 모델 품질 기준

정확성 : 데이터 모델이 표기범에 따라 정확하게 표현되었고, 업무 영역 또는 요구사항이 정확하게 반영되었음을 의미함

완전성 : 데이터 모델의 구성 요소를 정의하는데 있어서 누락을 최소화하고, 요구사항 및 업무 영역 반영에 있어서 누락이 없음을 의미함.

준거성 : 제반 준수 요건들이 누락 없이 정확하게 준수되었음을 의미함

최신성 : 데이터 모델이 현행 시스템의 최신 상태를 반영하고 있고, 이슈사항들이 지체없이 반영되고 있음을 의미

일관성 : 여러 영역에서 공통 사용되는 데이터 요소가 전사 수준에서 한 번만 정의되고, 이를 여러 다른 영역에서 참조 활용되면서 모델 표현상의 일관성을 유지하고 있음을 의미함

활용성 : 작성된 모델과 그 설명내용이 이해관계자에게 의미를 충분하게 전달할 수 있으면서, 업무 변화시에 설계 변경이 최소화되도록 유연하게 설계되어 있음을 의미

 

2. CRUD 분석

 

2.1 CRUD 정의

기본적인 데이터 처리기능 4가지 Create, Read, Update, Delete

 

2.2 CRUD 분석의 정의

프로세스와 엔티티의 상관관계를 이용하여 구축된 데이터베이스 시스템을 검증하는 방법이다.

 

2.3 CRUD 분석 절차

 

1. 모든 엔티티 목록을 나열하고 각각의 프로세스가 해당 엔티티에 대하여 생성 조회 변경 삭제 하는가에 대한 여부를 표기한다.

 

2. CRUD 매트릭스작성 후 아래 항목들을 점검한다.

모든 엔티티 타입에 CRUD가 한번 이상 표기되었는가?

모든 엔티티 타입에 C가 한번 이상 존재하는가?

모든 엔티티 타입에 R이 한번 이상 존재하는가?

모든 단위 프로세스가 하나 이상의 엔티티 타입에 표기가 되었는가?

두 개 이상의 단위 프로세스가 하나의 엔티티 타입을 생성하는가? 이 경우 반드시 잘못되었다기 보다 로직의 검토 대상이 된다.

 

2.4 CRUD MATRIX 상관 모델링 

 

1. 모든 엔티티 타입은 CRUD가 한 번 이상 표기되었는가?

쓸모없는 엔티티타입이 도출되는 경우, 적절한 단위 프로세스가 도출되지 않는 경우, 단위 프로세스의 CRUD가 아직 충분히 정의되지 않는 경우인지를 판단하여 적절한 조치를 취한다.

 

2. 모든 엔티티타입에 C가 한번 이상 존재하는가?

CRUD MATRIX에는 C가 한번 이상 있어야 한다. 

 

3. 모든 엔티티타입에 R이 한번 이상 존재하는가?

 

4. 모든 단위 프로세스는 하나 이상의 엔티티타입에 표기가 되었는가

단위프로세스와 관련된 엔티티타입이 누락된 경우 추가한다.

 

5. 두개 이상의 단위 프로세스가 하나의 엔티티타입을 생성하는가?

관련된 프로세스를 검토하여 수정한다.

 

2.5 CRUD MATRIX를 이용함으로써 프로젝트에서 얻을 수 있는 장점

분석 단계의 데이터 모델과 프로세스 모델에 대한 작업을 검증할 수 있으며, 시스템 구축 단계에서 애플리케이션을 개발하는데 필요한 중요 산출물로 사용된다.

테스트 단계에서 개발한 애플리케이션을 테스트할 때도 사용할 수 있다

전체 업무간 인터페이스를 파악할 수 있다.

 

3. SQL 성능 튜닝

 

3.1 SQL 성능 튜닝의 정의

튜닝 대상이 되는 SQL을 이해하고, SQL이 가진 정보를 분석하여 성능을 개선하는 활동이다.

최소한의 CPU, I/O, 메모리를 사요하여 최대한 빠른 시간내에 원하는 작업을 수행하도록 SQL문을 수정한다.

 

3.2 SQL 성능 튜닝 방법

 

튜닝 대상 SQL 수집

1. 문제가 있는 SQL

SQL 실행에 필요이상의 자원을 사용하는 경우

서버의 자원을 독점하여 다른 SQL의 성능에 영향을 끼치는 경우

2. 향후 문제가 될 가능성이 있는 SQL

데이터 증가 및 사용자가 증가 할 경우, 서버의 자원을 대량으로 점유할 가능성이 있는 SQL

 

SQL 문제점 분석 및 개선사항 도축

1. 데이터가 운영 환경과 유사한 경우

수집된 SQL 수행정보가 분석을 위한 정보로 가치가 있기 때문에 이력정보를 이용함

TRACE 파일 분석이나 DBMS_XPLAN 패키지를 활용한 분석 방법 등 사용

2. 데이터가 운영환경에 비해 적거나 다른 경우

해당 SQL의 실행계획을 중심으로 튜닝대상 SQL을 판단하고 분석함

 

개선사항 적용 및 개선 효과 확인

1. 성능 튜닝을 수행하는 담당자들은 개발자들에 비해 제한된 정보만으로 SQL을 검토할 가능성이 높기 때문에, 개발자 차원에서의 검토가 충분히 이루어져야함

2. 개발자와 튜너 사이의 상호검증을 통해 SQL의 성능 최적화 필요

3. 개선 사항 적용 후에는 튜닝을 통해 목표하는 결과에 도달했는지 확인하고, 그렇지 못한 경우 추가적인 분석 및 튜닝 필요

 

3.3 SQL 튜닝 기초 지식

 

1. Where 안에서 연산자의 처리 성능을 숙지한다.

 

2. 조건절 컬럼에 함수는 사용하지 않는다

 

3. 조건절에 NOT 사용은 자제한다.

 

4. 조건절에서 범위를 다룰때는 가급적으로 BETWEEN문을 사용한다.

 

5. IN이나 EXISTS의 다음에 오는 SELECT 문의 결과내용이 많을수록 JOIN형태인 EXISTS문이 적당하다.

 

6. FROM절에 나열되는 테이블들의 순서는 기준이 되는 테이블일수록 뒤쪽에 위치시키는것이 속도에 좋다.

 

7. JOIN만 한 것이 OUTER JOIN을 한 것보다 속도가 더 빠르다. OUTER JOIN은 되도록 피하고 대신 UNION을 사용하는 것을 고려한다.

 

8. 인라인뷰를 사용하기 전에 JOIN을 사용하여 처리가능한지 확인한다. 인라인뷰를 사용하게 될 경우 SELECT문의 결과가 최소가 되도록 한다. JOIN하는 테이블이 많을 경우에 인라인뷰를 고려한다.

 

- 데이터 전환 능력 단위 정의

데이터 전환일나 원천의 데이터베이스, 파일, 문서로부터 목적 데이터베이스 구축에 필요한 데이터를 추출하고 목적 시스템의 데이터 모델에 적합하게 변환, 정제하여 목적 데이터베이스에 적재한 후 그 결과를 검증하여 운영 가능한 데이터베이스를 구축하는 능력이다.

 

- 데이터 전환 기술

 

1. 데이터 전환 개요

 

1.1 데이터 전환 개념

데이터 전환은 데이터 이행으로도 불리기도 한다. 데이터 전환은 새로운 정보 시스템을 개발하거나 기존의 시스템을 재구축한 경우 기존의 시스템에서 사용하던 데이터를 새로운 시스템으로 이행하기 위해 이전 시스템에서 데이터를 추출, 변환, 하여 새로운 시스템으로 적재하는 일련의 작업을 말한다.

 

1.2 데이터 전환 절차

데이터 전환 절차는 일반적으로 원천 데이터의 추출과 정체, 변환, 목표 시스템으로의 적재 및 검증 단계로 구성된다.

 

1.3 초기 데이터 구축

 초기 데이터 구축은 단시일에 대량의 데이터를 전환함에 있어 발생할 수 있는 위험을 최소화하고 신속하고 안정적인 이행 작업을 수행하기 위해 원천시스템에서 특정 데이터들을 사전에 추출 및 변환해서 적재할 수 있도록 데이터베이스 혹은 데이터 파일로 구축해 두는 것을 말한다.

 

1.4 초기 데이터 구축을 통한 기대효과

데이터 이관 시 업무 중단을 최소화하고 안정성을 확보할 수 있는 방안 마련

데이터 이관 정합성 검증 방안과 오류 데이터에 대한 정비 방안 마련

데이터 이관 완료 후 데이터의 품질 검증 방안 마련

암호화된 개인정보에 대한 처리 방안 마련

 

2. ETL

 

2.1 ETL의 정의

조직 내외부의 복수의 데이터 소스들로부터 분석을 위한 저장소로 데이터를 이동시키는 프로세스이다.

다양한 소스시스템으로부터 필요한 데이터를 추출하여 변환작업을 거쳐 타겟 시스템으로 전송 및 로딩하는 모든 과정을 말한다.

 

2.2 ETL프로세스

ETL의 변환 작업은 특수한 엔진에서 진행되며, 종종 변환 중인 데이터가 준비 테이블에서 임시로 보유되었다가 대상에 로드된다.

일반적으로 발생하는 데이터 변환에는 필터링, 정렬, 집계, 데이터 조인, 데이터 정리, 중복 제거 및 데이터 유효성 검사 등의 작업이 포함된다.

 

3. 파일 처리 기술

자료구조이론에서 파일 처리 기술은 많은 양의 자료를 각종 매체에 저장하는 기법을 말한다.

즉 파일을 하드 디스크에 저장할 때 기억공간을 효율적으로 사용하고, 필요한 자료의 탐색을 쉽게하기 위해 파일을 효율적으로 처리하는 기술이다.

 

3.1 순차파일

순차파일은 입력되는 데이터들을 논리적인 순서에 따라 물리적 연속 공간에 순차적으로 기록하는 방식이다.

 

3.2 색인 순차 파일

색인 순차 파일은 순차 처리와 랜덤처리가 모두 가능하도록 레코드들을 키 값 순으로 정렬시켜 기록하고, 레코드의 키 항목만을 모은 색인을 구성하여 편성하는 방식이다.

 

3.3 VSAM 파일

VSAM파일은 동적 인덱스 방법을 이용한 색인 순차 파일이다.

동적 인덱스는 인덱스 파일 또는 데이터 파일을 블록으로 구성하고 블록은 추가적인 삽입 레코드를 감안하여 빈 공간을 준비해 둔 인덱스 방법이다.

정적 인덱스는 데이터파일 또는 레코드가 삽입되어도 인덱스의 구조가 변하지 않는 인덱스 방법이다.

 

4. 직접파일

직접 파일은 파일을 구성하는 레코드를 특정 순서 없이 임의의 물리적 저장공간에 기록하는 것으로 랜덤파일, DAM파일이라고도 한다.

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

정보처리기사 34일차  (0) 2021.02.12
정보처리기사 33일차  (0) 2021.02.11
정보처리기사 31일차  (0) 2021.02.10
정보처리기사 30일차  (0) 2021.02.08
정보처리기사 29일차  (0) 2021.02.08

3. 데이터베이스

 3.4 물리 데이터베이스 설계

  3.4.3 데이터베이스 물리속성 설계

  3.4.4 데이터베이스 모델링

  3.4.5 데이터베이스 반정규화

 

1. 파티셔닝

 

1.1 파티셔닝의 정의

큰 table  이나 인덱스를 관리하기 쉬운 단위로 분리하는 방법이다.

 

1.2 파티셔닝의 장점

가용성 : 물리적인 patitioning으로 인해 전체 데이터의 훼손 가능성이 줄어들고 데이터 가용성이 향상

관리용이성 : 큰 table들을 제거하여 관리를 쉽게 함

성능 : 특정DML과 Query의 성능을 향상시킴, 주로 대용량 Data Write 환경에서 효율적이며 많은 insert가 있는 OLTP 시스템에서 Insert 작업들을 분리된 파티션들로 분산시켜 경합을 줄임

 

1.3 파티셔닝의 단점

Table 간의 join에 대한 비용이 증가한다.

테이블과 인덱스를 별도로 파티션 할 수는 없다. 테이블과 인덱스를 같이 파티셔닝 하여야 한다.

 

1.4 파티셔닝의 범위

 

1. Range partitioning

연속적인 숫자나 날짜 기준으로 파티셔닝 한다

손쉬운 관리 기법 제공에 따른 관리 시간을 단축한다

 

2. List partitioning

특정 파티션에 저장될 Data에 대한 명시적 제어 가능하다.

분포도가 비슷하며, 많은 SQL에서 해당 Column의 조건이 많이 들어오는 경우 유용하다.

Muti-Column partition key 제공하기 힘들다.

 

3. Composite partitioning

파티션의 sub-partitioning을 말한다.

큰 파티션에 대한 I/O 요청을 여러 파티션으로 분산한다.

Range partitioning 할 수 있는 Column이 있지만, Partitioning 결과 생성된 파티션이 너무 커서 효과적으로 관리할 수 없을때 유용하다.

 

4. Hash partitioning

파티션 키의 해시 값에 의한 partitioning

select시 조건과 무관하게 병령 Degree 제공

특정 데이터가 어느 해시 파티션에 있는지 판단 불가

Hash Partition은 파티션을 위한 범위가 없는 데이터에 적합

 

1.5 파티셔닝 방법

 

1.Horizontal Partitioning

장점

데이터의 개수를 기준으로 나누어 파티셔닝 한다

데이터의 개수가 작아지고 따라서 인덱스의 개수도 작아지게 된다. 자연스럽게 성능은 향상된다

 

단점

서버간의 연결과정이 많아진다

데이터를 찾는 과정이 기존보다 복잡하기 때문에 latency가 증가하게 된다

하나의 서버가 고장나게 되면 데이터의 무결성이 깨질 수 있다.

 

2. Vertical Patitinoning

테이블의 컬럼을 기준으로 나누어 파티셔닝 한다.

정규화하는 과정도 이와 비슷하다고 볼 수 있지만 Vertical Patitioning은 이미 정규화된 Data를 분리하는 방법이다.

자주 사용하는 컬럼등을 분리시켜 성능을 향상시킬 수 있다.

 

2. 클러스터링

 

2.1 클러스터 정의

어떤 정해진 컬럼 값을 기준으로 동일한 값을 가진 하나 이상의 테이블의 로우를 같은 장소에 저장하는 물리적인 기법

디스크로부터 데이터를 읽어오는 시간을 줄이기 위해서 조인이나 자주 사용하는 테이블의 데이터를 디스크의 같은 위치에 저장시키는 방법

 

2.2 클러스터의 장점

그룹된 컬럼 데이터 행들이 같은 데이터 Block에 저장되기 때문에 디스크 I/O를 줄여 준다. 

클러스터된 테이블 사이에 조인이 발생할 경우 그 처리 시간이 단축된다.

클러스터키 열을 공유하여 한번만 저장하므로 저장 영역의 사용을 줄인다.

 

2.3 테이블 클러스터링의 특징

클러스터는 데이터 조회 성능을 향상시키지만 데이터 저장, 수정, 삭제 또는 한 테이블 전체 Scan의 성능을 감소시킨다.

 

1. 클러스터 하기 좋은 테이블

주로 조회가 자주 발생하고 수정이 거의 발생하지 않는 테이블

컬럼안의 많은 중복 데이터를 가지는 테이블

자주 join되는 테이블

 

2. 클러스터 key가 되기 좋은 컬럼

데이터 값의 범위가 큰 컬럼

테이블 간의 조인에 사용되는 컬럼

 

3. 클러스터 key가 되기 나쁜 컬럼

특정 데이터 값이 적은 컬럼

자주 데이터 수정이 발생하는 컬럼

LONG,LONG RAW 컬럼은 포함할 수 없다.

 

2.4 단일테이블 클러스터링

하나의 클러스터에 하나의 테이블만 생성시킨다.

 

2.5 다중테이블 클러스터링

하나의 단위 클러스터에 여러 개의 테이블을 생성한다.

기준되는 컬럼의 값이 동일한 각각의 테이블의 로우들이 하나의 단위클러스터에 저장되므로 기준 컬럼값으로 관련 테이블을 조인할 경우 추가적인 각 테이블들의 로우들이 흩어져 저장되는 경우 발생하는 추가적인 액세스가 불필요하여 높은 성능의 조인이 가능하다.

 

3. 데이터베이스 백업

 

3.1 데이터베이스 백업의 정의

DB의 고장, 데이터의 손실 등으로 인한 피해를 최소화하기 위하여 현재의 데이터를 저장하는 활동

 

3.2 백업의 종류

 

1. 백업을 받는 대상에 따라서 분류

시스템 백업 : 운영체제와 같은 시스템 백업을 말한다.

데이터 백업 : 데이터베이스 백업과 같은 파일 시스템 백업을 말한다.

 

2. 구성 방식에 따른 분류

직접연결 백업 : 서버와 백업장비를 일대일 관계로 직접연결하여 백업

네트워크 백업 : LAN을 통해서 백업장비와 서버를 접속하는 개념

SAN 백업 : 백업받을 데이터 용량이 증가함에 따라 백업용 테이프 장치를 SAN을 통해 인식시켜서 FC를 통해서 백업장치로 직접 백업받는 방식

 

3. 백업 방식에 따른 분류

핫백업 : DB서버를 온라인 상태로 유지한 채 데이터 백업

콜드백업 : DB서버를 중지한 후 데이터 백업

물리백업 : 파일 자체를 그대로 백업

논리백업 : 각 오브젝트를 SQL문 등으로 저장

 

3.3 데이터 백업시 대상 파일

 

Data file : 데이터를 저장한 파일

Control file : 데이터베이스 구조나 정보에 대한 상태를 저장한 바이너리 파일

Redo log file : 데이터 변경 처리사항을 저장한 파일

 

여기서 Redo log file은 데이터베이스 백업시 사용되는 파일이다.

핫백업이 진행되면 수많은 Redo log가 작성되어 디스크 용량을 차지하지만 이 파일을 사용하여 백업 이후 발생한 데이터의 변경 사항을 유연하게 처리할 수 있게 된다. 반대로 콜드 백업시에는 Redo log가 작성되지 않는다.

 

3.4 백업방법

 

1. phpMyAdmin

관리 패널에서 버튼 클릭만으로 콜드 백업 가능한 툴(Mysql)

 

4. 테이블 저장 사이징

데이터 예상치, 보관주기 및 각 컬럼사이즈 및 테이블 스토리지 옵션 등에 따라서 테이블의 크기를 예측해야 스토리지 용량산정이 가능하다.

 

4.1 사전 정보

테이블 크기 산정에 필요한 사전 정보로 Row의 데이터 길이와 항목별 크기 정보가 필요하다.

 

1. Row의 데이터 길이

테이블 크기를 산정하기 위해서는 컬럼의 데이터 타입별 실제 소비 크기와 저장되는 길이를 산정해야 한다. 이 정보는 테이블 크기를 산정하기 위한 항목별 크기 산정방법에 사용된다.

크기산정 테이블은 5개의 컬럼으로 구성되었다. 데이터 타입별 크게 산정은 DB의 종류에 따라 다를 수 있으므로 가정치로 수치를 조정한다.

 

4.2 테이블 크기 산정방법

한 Row 저장에 필요한 공간, 한블록의 데이터 공간, 한블록에 들어갈 수 있는 Row 개수, 총 데이터 Row 개수를 차례로 구하면서 필요한 총 데이터 공간을 산정한다.

 

5. 데이터 지역화

데이터베이스의 저장 데이터를 효율적으로 이용할 수 있도록 저장하는 방법이다.

물리적 데이터베이스의 설계에서 데이터 지역화를 고려한 보조 기억 장치의 설계는 중요하다

물리적 데이터베이스 설계, 보조 기억 장치의 역할, 디스크상의 파일의 배치를 지역화 관점에서 검토한다.

 

5.1 물리적 데이터베이스 설계

논리적인 설계에 데이터 구조를 보조 기억 장치상의 파일로 사상한다.

하나의 파일에 여러 릴레이션이 저장될 수 있다.

예상 빈도를 포함하여 데이터베이스 질의와 트랜잭션들을 분석한다.

데이터에 대한 효율적인 접근을 제공하기 위하여 저장 구조와 접근 방법들을 다룬다.

질의를 효율적으로 지원하기 위해서 인덱스 구조를 적절히 사용한다.

 

5.2 보조 기억 장치의 역할

각 파일은 고정된 크기의 블록들로 나누어져서 저장된다. 즉 ,여러 개의 블록들에 파일의 데이터가 분산되어 저장된다.

디스크는 데이터베이스를 장기간 보관하는 주된 보조 기억 장치이다.

 

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

 

1. 물리 E-R 다이어그램

 

1.1 논리 데이터모델의 물리 데이터 모델로 변환

엔티티는 테이블, 속성은 컬럼 등으로 변환한다.

 

1.2 슈퍼 타입 기존 엔티티 통합

슈퍼 타입 엔티티를 중심으로 서브 타입 엔티티와 단일 테이블로 통합한다.

 

1.3 서브 타입 기준 엔티티 통합

슈퍼 타입 속성들을 각각의 서브 타입에 추가하여 서브 타입마다 하나의 테이블로 변환한다.

 

1.4 개별 타입 기준 변환

 

1.슈퍼타입과 서브타입을 각각 테이블로 변환한다.

슈퍼타입과 서브 타입 각각의 테이블 사이에는 1대1 관계가 형성된다.

 

2. 개별 타입 기준 테이블 변환을 사용하는 경우

전체 데이터에 대한 처리가 자주 발생하는 경우 사용한다.

서브 타입 처리가 대부분 독립적으로 발생하는 경우 사용한다.

통합하는 테이블의 컬럼 수가 지나치게 많은 경우 사용한다.

서브 타입 컬럼 수가 다수인 경우 사용한다.

 

1.5 속성 및 컬럼 변환

 

1. 일반 속성 변환

 

2. Primary UID 기본 키 변환

논리 모델링에서의 Primary UID는 물리 모델링에서 기본 키로 생성된다 DDL에서는 오브젝트가생성되어 기본 키 제약 조건의 속성을 갖는다.

 

3. Primary UID 기본 키 변환

Primary UID의 속성 중에는 해당 엔티티에서 생성된 속성도 존재하지만 다른 엔티티와의 관계로 인해 생성되는 UID 속성도 존재할 수 있다. 이러한 관계 속성 UID의 변환은 일반적인 속성 UID 변환과는 차이가 있따.

 

4. Secondary UID 유니크 키 변환

논리 모델링에서 정의된 Secondary UID 및 Alternate key들은 해당 엔티티와 상대 앤티티의 선택적 관계를 갖는데 중요한 역할을 한다. 이러한 Secondary UID 들은 물리 모델에서는 유니크 키로 생성된다.

 

1.6 관계 변환

 

1. 1대M 변환

논리 데이터 모델의 관계에서 가장 보편적 형태의 관계이며 M측의 관계 컬럼에 선택사항이 결정되게 된다.

 

2. 변환

논리 데이터 모델에서 1대1 관계는 일반적이지 않은 형태의 관계로 1대1 관계를 물리 모델링에서 변환하는 과정은 관계의 기수성으로 인해 다른 방법이 적용된다.

 

3. 1대M 순환 관계 변환

일반적으로 데이터 계층 구조의 표현에 주로 사용하는 관계의 형태로 특성상 최상위관계속성은 항상 Optional의 형태를 보여야 한다. 그러나 경우에 따라 최상위 관계에 특정 값을 설정하는 경우도 있다.

 

4. 배타적 관꼐 변환

실제 데이터 환경에서는 빈번하게 등장하는 논리 데이터 모델의 배타적 관계 모델은 물리 모델링에서 생성하는 방법이 일반적인 관계 변환 방법과는 차이가 있다.

 

외래키 분리 

관계별로 관계 컬럼을 생성하는 방법으로 실제 외래 키의 제약 조건이 생성 가능하다는 장점이 있으나 키 컬럼들이 각각 Optional 의 형태여야 한다 또한 체크 제약 조건의 추가적 생성이 필요하다.

 

외래키 결합

관계들을 하나의 관계 컬럼으로 통합 생성하는 방법으로 실제 외래 키 제약 조건의 생성은 불가능 하고 다수의 관계를 선별하여 구분하기 위한별도의 컬럼이 필요하다.

 

1.7 관리 목적의 컬럼의 추가

논리모델링에서는 필요가 없으나 관리 또는 데이터베이스를 이용하는 프로그래밍의 수행 속도를 향상을 위해 추가되는 테이블인 ㅏ컬럼으로 관리상 필요한 데이터를 등록한 일자, 시스템 번호 등을 추가한다.

 

1.8 데이터 타입 선택

데이터 형식을 설정하는 것은 논리 모델링에서 정의된 논리적인 데이터 타입을 물리적인 DBMS 특성과 성능의 고려를 통해 최적 데이터 타입을 선택하는 작업이다.

주요 타입은 문자타입, 숫자타입, 날짜타입으로 구분할 수 있다

 

1.9 데이터 표준화

명명규칙 및 표준 용어 사전을 활용하여 각 객체의 데이터 표준화를 수행한다.

표준화 적용 대상은 데이터베이스, 스토리지 그룹, 테이블 스페이스, 테이블, 컬럼, 인덱스, 뷰이다.

 

2. 컬럼 속성

 

2.1 컬럼 속성 정의

정보를 나타내는 최소의 단위로써 앤티티의 성질, 분류, 수량, 상태, 특성 등을 나타내는 세부항목을 말한다.

 

2.2 속성의 유형

기본속성 : 해당 엔티티가 원래 가지고 있는 속성

실제속성 : 원래 업무에는 조냊하지 않지만시스템의 효율성을 위해 임의로 추가되는 속성

파생속성 : 다른 속성으로부터 계산이나 변형되어 생성되는 속성

               데이터 중복성 및 무결성 확보를 위해 가급적 적게 정의

 

2.3 속성 정의시 고려 사항

 

1. 앤티티가 관리할 특성들인가?

주문자 성명이란 속성은 주문 앤티티에 별도로 있어야 할까?

고객 엔티티와 관계만을 맺으면 될까를 확인해야 한다.

 

2. 의미적으로 독립된 최소단위인가?

속성은 멀티 파트가 되어서는 안된다. 멀티 파트라는 의미는 속성이 여러 개의 부분들로 이루어져 있는 경우와 하나의 의미를 가지는 여러 개의 속성이 존재하는 경우이다.

 

3. 하나의 값만을 가지고 있는가?

속성의 111워칙 : 엔티티 타입내에서 하나의 속성은 한시점에 한 개의 값만을 가져야 한다. 하나의 속성이 시간에 따라 여러 개의 값을 가지면 그 값을 해당업무에서 관리해야 할 필요가 있으면 새로운 엔티티를 생성한다.

 

- 데이터베이스 반정규화

 

1. 반정규화

 

1.1 반정규화의 정의

정규화된 엔티티, 속성, 관계를 시스템의 성능 향상, 개발과 운영일 단순화하기 위해 데이터 모델을 통합하는 프로세스 이다.

즉 데이터의 정합성과 무결성을 우선으로 할지 데이터베이스 구성의 단순화와 성능을 우선으로 할지를 결정한다.

 

1.2 반정규화 절차

 

1. 반정규화 대상 조사

 

범위 처리 빈도수 조사 : 자주 사용되는 테이블에 접근하는 프로세스 수가 많고, 항상 일정한 범위만을 조회하는 경우

대량의 범위 처리 조사 : 대량이 데이터 범위를 자주 처리하는 경우

통계성 프로세스 조사 : 별도의 통계 테이블 고려

테이블 조인 개수 : 지나치게 많은 조인이 걸려 데이터 조회 작업이 어려운 경우

 

2. 다른 방법 유도 검토

뷰테이블 : 지나치겜 낳은 조인이 걸려 데이터 조회 작업이 어려운 경우

클러스터링 또는 인덱스 적용 : 대량의 데이터는 PK의 성격에 따라 부분적인 테이블로 분리할 수 있다.

어플리케이션 : 로직을 변경함으로써 성능을 향상시킬 수 있다.

 

3. 반정규화 적용

테이블 반정규화

속성의 반정규화

관계의 반정규화

 

1.3 반정규화 방법

반정규화 방법은 반정규화 대상에 따라 테이블 반정규화, 컬럼 반정규화, 관계 반정규화로 나눈다.

 

1. 테이블 반정규화

테이블 반정규화 방법은 테이블 병합과 분할의 방법이 있다.

 

테이블 병합

조인되는 경우가 많아서 테이블을 합치는 것이 성능에 유리할 경우 병합

 

테이블 분할

테이블에서 특정 속성들만 집중적으로 접근할 경우 테이블을 분할

 

테이블 추가

중복테이블 추가 : 다른업무이거나 서버가 다른 경우 동일한 테이블 구조를 중복하여 우너격조인을 제거하여 성능 향상

통계테이블 추가 : SUM, AVG등을 미리 수행하여 자동계산해둠으로써 조회시 성능 향상

이력테이블 추가 : 마스터 테이블에 존재하는 레코드를 중복하여 이력테이블에 존재하는 방법

부분테이블 추가 : 하나의 테이블의 전체 컬럼 중 자주 이용하는 집중화된 컬럼들이 있을때  디스크의 I/O를 줄이기 위해 해당 컬럼 들을 모아 놓은 별도의 반정규화 된 테이블

 

2. 컬럼 반정규화

 

중복컬럼 추가

조인에 의한 성능저하를 예방하기 위해 즉 조인을 감소시키기위해 중복된 컬럼을 추가한다.

 

파생컬럼 추가

트랜잭션이 처리되는 시점에 계싼에 의해 발생되는 성능저하를 예방하기 위해 미리 값을 계산하여 컬럼에 보관

 

이력 테이블 컬럼 추가

대량의 데이터를 처리할 때 불특정 날 조회나 최근 값을 조회할 때 나타날 수 있는 성능저하를 예방하기위해 이력테이블에 가능성 컬럼을 추가함

 

PK에 의한 컬럼 추가

복합의미를 갖는 PK을 단일 속성으로 구성하였을 경우 발생됨 단일 PK안에서 특정 값을 별도로 조회하는 경우 성능저하가 발생될 수 있음. 이때 이미 PK안에 데이터가 존재하지만 성능향상을 위해 일반속성으로 포함하는 방법이 PK에 의한 컬럼추가이다.

 

응용시스템 오동작을 위한 컬럼 추가

업무적으로는 의미가 없지만 사용자가 데이터를 처리하다가 잘못 처리하여 원래 값으로 복구하기 원하는 경우 이전 데이터를 임시적으로 중복하여 보관하는 기법

 

3. 관계 반정규화

데이터를 처리하기 위한 여러 경로를 거쳐 조인이 가능하지만 이 때 발생할 수 있는 성능 저하를 예방하기 위해 중복 관계를 추가하는 방법

테이블과 컬럼의 반정규화는 데이터 무결성에 영향을 미치게 되나 관계의 반정규화는 데이터 무결성을 깨뜨릴 위험을 갖지 않고서도 데이터처리의 성능을 향상시킬 수 있음

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

정보처리기사 33일차  (0) 2021.02.11
정보처리기사 32일차  (0) 2021.02.10
정보처리기사 30일차  (0) 2021.02.08
정보처리기사 29일차  (0) 2021.02.08
정보처리기사 28일차  (0) 2021.02.06

3. 데이터베이스

 3.4 물리 데이터베이스 설계

 3.4.1 물리 데이터베이스 설계 능력 단위 정의

 3.4.2 물리요소 조차 분석

 3.4.3 데이터베이스 물리속성 설계


- 물리 데이터베이스 설계 능력 단위 정의

물리 데이터베이스 설계란 논리 데이터베이스 구조, 처리요구 조건, 데이터베이스, 하드웨어, 운영체제 특성을 기반으로 물리 데이터베이스의 저장 형식을 분석, 설계, 접근 경로를 물리적으로 설계하는 능력이다.

 

- 물리요소 조사 분석

 

1. 스토리지

 

1.1 스토리지 시스템의 정의

대용량 데이터를 저장하기 위하여 구성된 시스템

 

1.2 스토리지 시스템의 종류

 

1. DAS

서버와 저장 장치를 전용 컨트롤러와 케이블을 이용하여 연결하는 방식

 

2. NAS

서버와 저장 장치를 network로 연결하는 방식이다.

 

3. SAN

DAS의 빠른 처리와 NAS의 스토리지 공유 장점을 합친 방식

 

2. 분산 데이터베이스

 

2.1 분산 데이터베이스의 정의

하나의 데이터베이스 관리 시스템이 여러 CPU에 연결된 저장장치들을 제어하는 형태의 데이터베이스이다.

논리적으로 같은 시스템에 속하지만, 컴퓨터 네트워크를 통해 물리적으로 분산되어 있는 데이터들의 모임이다.

데이터베이스를 연결하는 빠른 네트워크 환경을 이용하여 데이터베이스를 여러 지역 노드로 위치시켜 사용성/성능 등을 극대화시킨 데이터베이스이다.

 

2.2 분산 데이터베이스의 목표

분할 투명성 : 하나의 논리적 Relation이 여러 단편으로 분할되어 각 단편의 사본이 여러 사이트에 저장

위치 투명성 : 사용하려는 데이터의 저장 장소 명시 불필요. 위치정보가 System Catlog에 유지되어야 함

지역사상 투명성 : 지역DBMS와 물리적 DB사이의 Mapping 보장. 각 지역시스템 이름과 무관한 이름 사용 가능

중복 투명성 : DB 객체가 여러 site에 중복되어 있는지 알 필요가 없는 성질

장애 투명성 : 구성요소의 장애에 무관한 Transaction의 원자성 유지

병행 투명성 : 다수 Transaction 동시 수행시 결과의 일관성 유지, Time Stamp, 분산 2단계 Locking을 이용 구현

 

2.3 분산 데이터베이스의 장단점

장점 

지역 자치정, 점증적 시스템 용량 확장

신뢰성과 가용성

효용성과 융통성

빠른 응답 속도와 통신비용 절감

데이터의 가용성과 신뢰성 증가

시스템 규모의 적절한 조절

각 지역 사용자의 요구 수용 증대

 

단점

소프트웨어 개발 비용

오류의 잠재성 증대

처리 이용의 증대

설계, 관리의 복잡성과 비용

불규칙한 응답속도

통제의 어려움

데이터 무결성에 대한 위협

 

2.4 분산 데이터베이스의 적용 기법

데이터베이스의 분산의 종류에는 테이블 위치 분산과 테이블 분할 분산, 테이블 복제 분산, 테이블 요약 분산 전략이 있다.

가장 많이 사용하는 방식은 테이블의 복제 분할 분산의 방법이고 이방법은 검색 성능 저하가 많은 데이터베이스에서 가장 유용하게 적용할 수 있는 기술적인 방법이 된다.

 

1. 테이블 위치 분산

테이블 위치 분산은 테이블의 구조는 변하지 않는다 또한 테이블이 다른 데이터베이스에 중복되어 생성되지도 않는다. 다만 설계된 테이블의 위치를 각각 다르게 위치시키는 것이다.

 

2. 테이블 분할 분산

단순히 위치만 다른 곳에 두는 것이 아니라 각각의 테이블을 쪼개어 분산하는 방법이다.

수평 분할

지사에 따라 테이블을 특정 컬럼의 값을 기준으로 로우를 분리한다. 컬럼은 분리되지 않는다. 모든 데이터가 각 지사별로 분리되어 있는 형태를 가지고 있다.

수직 분할

지사에 따라 테이블 컬럼을 기준으로 컬럼을 분리한다. 로우 단위로는 분리되지 않는다 모든 데이터가 각 지사별로 분리되어 있는 형태를 가지고 있다.

 

3. 테이블 복제 분산

테이블 복제 분산은 동일한 테이블을 다른 지역이나 서버에서 동시에 생성하여 관리하는 유형이다.

 

4. 테이블 요약 분산

지역간에 도는 서버 간에 데이터가 비슷하지만 서로 다른 유형으로 존재하는 경우가 있다.

 

2.5 데이터베이스 분산 구성의 가치

통합된 데이터베이스에서 제공할 수 없는 빠른 성능을 제공한다는 것

원거리 또는 다른 서버에 접속하여 처리하므로 인해 발생되는 네트워크 부하 및 트랜잭션 집중에 따른 성능 저하의 원인을 분산된 데이터베이스 환경을 구축하므로 빠른 성능 제공 가능

 

2.6 NoSQL

 

1.NoSQL

NoSQL은 수평적 확장이 가능하며 다수 서버들에 데이터 복제 및 분산 저장이 가능한 데이터베이스이다.

 

2. NoSQL의 데이터 저장 구조

 

key/value store

가장 기본적인 패턴으로 대부분의 NoSQL은 다른 데이터모델을 지원 하더라도 기본적으로 key/value의 개념을 지원함

 

ordered key/value stre

key/value store 의 확장된 형태로 key/value store와 저장 방식은 동일하나, 데이터가 내부적으로 key 순서로 sorting되어 저장됨

 

document key/value store

key/value store의 확장된 형태로, key에 해당하는 value 필드에 데이터를 저장하는 구조는 같으나 저장되는 value의 데이터 타입이 document 타입을 사용

 

3, 모델별 주요 NoSQL 제품

 

key/value store 모델

키기반의 get, put, delete 기능을 제공하며 메모리 기반에서 성능을 우선하는 시스템과 빅데이터를 저장 처리할 수 있는 방식으로 구분함

 

column family data store 모델

테이블 기반, 조인 미지원, 컬럼 기반으로 구글의 BigTable의 영향을 받음

 

document store 모델

JSON, XML 형태의 구조적 문서 저장에 용이하며 조인은 미지원

 

graph datadase 모델

그래프로 데이터를 표현하는 DB로서, 시맨틱 웹과 온톨로지 분야에서 활용되고 발전된 특화된 데이터베이스

 

3. 데이터베이스 이중화 구성

 

3.1 이중와의 정의

물리적으로 떨어져 있는 여러 개의 데이터베이스에 대하여 로컬 데이터베이스의 변경된 내용을 원격데이터베이스에 복제하고 관리하는 것이다.

 

3.2 이중화 목적

데이터베이스의 무정지 서비스를 가능하게 한다.

 

3.3 이중화의 형태 

DB 서버가 2대 있지만 이 2대가 동시에 동작하는 것을 허락할지에 따라 Active-Active 와 Active-Standby로 나뉜다.

 

3.4 Active-Standy 의 종류

Hot Standby : Standby 쪽 장비 기동 후 즉시 사용이 가능하고 failover 소요시간은 필요하다.

Warm Standby : Standby 쪽 장비 기동 후 이용하기 위하여 어느정도 설정 및 준비가 필요하다.

Cold Standby : Standby 측을 평소 정지시켜두며 필요에 따라 직접 켜서 구성한다.

Failover 소요시간은 Hot < Warm < Cold 순이다. 

 

3.5 이중화의 활용 

 

1. 장애

장비에 장애가 발생하여 1대가 죽을시, 준비된 장비를 서비스에 투입함으로써 짧은 시간내에 서비스복구가 가능하다.

 

2. 웹서비스의 배포

두대의 서버가 LB에 의하여 Active-Active로 운영되고 있는 경우, 한대를 LB에서 제거 한 뒤 배포 및 미들웨어 재기동 후 LB에 붙이고 다시 나머지 한대도 똑같이 작업하는 경우 서비스의 다운타임 없이 온라인 배포가 가능하다.

 

3. 장비의 점검

서버 혹은 네트워크장비를 운영시 OS나 Software Stack등을 보안이나 기능 추가 등의 이유로 업데이터 및 설정 변경 시 이중화를 이용하면 서비스의 다운타임 없이 점검이 가능하다.

 

4. 데이터베이스 암호화

 

4.1 데이터베이스 암호화 개요

 

1. 데이터베이스 보안과 데이터 암호화

데이터베이스 보안은 데이터베이스의 일부분 또는 전체에 대해 권한이 없는 사용자가 액세스하는 것을 금지하기 위해 사용되는 접근 통제 기술과 기밀 데이터에 접근하더라도 비밀성을 보장할 수 있도록 데이터를 암호화한다.

 

2 데이터 암호화 개념

외부로부터의 공격 또는 내부자의 불법행위로 인한 데이터 유출을 방지하기 위해 DB내에 저장된 데이터를 해독 불가능한 형식의 암호문으로 저장하는 행위이다.

 

4.2 DB 암호화 방식

디스크 전체를 암호화하거나 암호화 대상이 되는 기밀정보를 담고 있는 컬럼 레벨로 암호화 하는 경우가 있다.

컬럼 레벨 암호화의 경우 기존 Legacy 애플리케이션의 수정이 필요 없는 plug-in 방식과 애플리케이션의 수정이 필요한 API 방식이 널리 사용되고 있다.

 

1. 디스크 전체 암호화

DB 파일을 보호하고 비인가 사용자에 의한 불법적인 파일 열람을 제한하는 것이다. 인가된 서버만이 정상적인 암호화된 데이터를 해독하고 열람할 수 있게 하는것으로 DB암호화 중 가장 편한 방법이다.

하지만 DB파일을 암호화하는 것은 인가된 DB호스트 서버에 접속하는 다양한 시스템들과 사용자들을 식별하지 못하므로 이를 위해 컬럼 레벨의 암호화가 요구된다.

 

2. 컬럼 암호화

개인정보나 기업의 민감함 정보를 담고있는 특정 테이블의 컬럼만을 암호화하는 것

DB 서버에 접속하는 사용자들을 구분하고 정의된 암복호화 정책에 따라 데이터를 제공하므로 DB 암호화 솔루션 중에 현장에서 가장 널리 쓰이는 솔루션이다.

컬럼 암호화 종류는 Plug-In 방식과 API 호출방식이 있다.

 

5. 접근통제

 

5.1 DB 접근통제개요

데이터베이스에 저장된 데이터에 대해 사용자별 접근권한에 따라 접근을 제한하기 위한 기술이다.

 

1. 접근 통제 개념

데이터베이스의 보안을 구현하는 방법으로 접근 제어 방벙을 사용한다.

접근 통제는 보안 정책에 따라 접근 객체에 대한 접근 주체의 접근 권한 확인 및 이를 기반으로 한 접근 제어를 통해 자우너에 대한 비인가된 사용을 방지하는 기능을 말한다.

 

2. 접근 통제 정책

접근 통제 정책에는 크게 다음과 같은 3가지 유형이 있다.

 

DAC 

시스템 객체에 대한 접근을 사용자 개인 또는 그룹의 식별자를 기반으로 제한하는 방법

MAC

정보시스템 내에서 어떤 주체가 특정 객체에 접근하려 할때 양쪽은 보안 레이블에 기초하여 높은 보아 수준을 요구하는 정보가 낮은 보안 수준의 주체에게 노출되지 않도록 접근을 제한하는 통제 방법

RBAC

사용자가 주어진 역할에 대한 접근 권한을 부여받는 방식

사용자가 바뀌어도 역할에는 변함 없음

 

3. 접근 통제와 DCL 관계

접근 통제 정책 간운데 DBMS에서 채택한 접근 통제 정책은 DAC이다.

접근 통제 용도로 SQL에서 사용하는 명령어가 DCL이다.

 

5.2 DB접근 통제 구성방법

DB 접근제어를 구축하는 방법은 에이전트 방법, 게이트웨이 방법, 스니핑 방법으로 나눌수 있다.

DB 접근제어는 하나의 단일 방식으로 구성하기도 하지만 각 방식마다 장점을 취하고 단점을 보완하기 위하여 여러 방식을 혼합한 하이브리드 방식을 많이 사용한다. 일반적인 하이브리드 구성방식은 에이전트+스니핑 , 게이트웨이 + 스니핑,

게이트웨이+에이전트+스니핑 등이 있다.

 

1. 게이트웨이 방식

DBMS에 접속하기 위한 통로를 별도로 설치한 후 DB사용자가 해당 통로를 통해서만 접근하도록 하는 방식

게이트웨이를 거치도록 하는 기술에 따라 프록시 게이트웨이 방식과 인라인 게이트웨이 방식으로 구분된다.

 

프록시 게이트웨이 방식

별도의 서버를 설치한 후에 독립적인 IP 포트를 부여하고 DB로그인 시 해당 IP 및 포트로 로그인 하도록 한다.

 

인라인 게이트웨이 방식

별도의 장치에 의해 모든 패킷이 자동으로 게이트웨이를 거치는 방식

애플리케이션 서버에서 오는 패킷도 게이트웨이를 거치게 되어 속도 저하가 발생하고, 장애 발생 시 업무 시스템에 대한 영향이 있을 수 있다.

 

2. 스니핑 방식

DB 사용자와 DBMS 서버간에 주고받는 패킷을 복사하여 DB접근 제어 서버에 전달하는 방식이다.

스니핑 방식은 DBMS 서버의 패킷흐름에 전혀 영향을 주지 않아 성능 저하 등의 문제가 발생하지 않는다.

 

3. 에이전트 방식

DB서버에 접근제어를 설치하는 방식

 

4. 하이브리드 방식

별도의 구성방식이 아니라, 스니핑, 게이트웨이, 에이전트를 모두 혹은 이부를 사용하여 혼합한 방식이다.

 

 

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

정보처리기사 32일차  (0) 2021.02.10
정보처리기사 31일차  (0) 2021.02.10
정보처리기사 29일차  (0) 2021.02.08
정보처리기사 28일차  (0) 2021.02.06
정보처리기사 27일차  (0) 2021.02.05

3. 데이터베이스

 3.3 논리 데이터베이스 설계

  3.3.3 데이터모델링 및 설계


1. 데이터 모델링 과정

 

1.1 데이터모델링과 데이터베이스 설계 개념

 

1. 데이터베이스 설계

한 조직체의 운영과 목적을 지원하기 위해 데이터베이스를 생성하는 과정이다.

데이터모델링을 핵심 기법으로 사용하여 사용자 요구사항을 분석하고, 사용자가 요구하는 정보를 제공할 수 있도록 데이터베이스 구조와 접근방법 등을 정의한다.

 

2. 데이터 모델링

사용자 요구사항을 분석하고 필요한 데이터 요소를 도출하여 적절한 데이터 구조를 정의하는데 데이터베이스 설계 과정의 핵심 기법

 

2.2 데이터베이스 설계 과정

 

1. 바람직한 데이터베이스 설계 과정

시간의 흐름에 따른 데이터의 모든 측면을 나타내야 함

데이터 항목의 중복을 최소화해야 함

데이터베이스에 대한 효율적인 접근을 제공해야 함

데이터베이스의 무결성을 제공해야 함

데이터 구조를 이해하기 쉬워야 함

 

2. 데이터베이스 설계 순서

데이터베이스 설계는 데이터베이스를 사용하는 모든 사용자와 응용프로그램과 관련된 요구사항을 분석하여 저장할 데이터를 도출하고 도출된 데이터와 정보를 컴퓨터로 처리할 수 있도록 개념적 설계, 논리적 설계, 정규화, 물리적 설계, 데이터베이스 구축 및 데이터 적재 과정으로 구성된다.

개념적 설계는 목표 DBMS에 종속되지 않으며, 논리적 설계는 목표 DBMS가 채택한 논리모델에 따라 설계가 진행되어야 하며, 물리적 설계는 목표 DBMS가 지원하는 저장 구조에 맞게 설계를 진행해야 한다.

 

2. 개념 데이터 모델링

 

2.1 ER스키마 작성 순서

숙련된 설계자는 모델링 과정에서 개체타입과 속성, 식별자를 한번에 도출할 수도 있지만 일반적으로 다음과 같은 절차를 따라 개념 모델링을 수행한다.

요구사항 분석 -> 개체 타입 식별 -> 속성 식별 -> 식별자식별  -> 관계타입/관계속성식별 -> 관계 카디널리티 식별  ->ER스키마 작성/검토

 

2.2 개체타입 정의

 

1. 개체

업무의 관심 대상이 되는 정보를 갖고 있거나, 그에 대한 정보를 관리할 필요가 있는 유형, 무형의 사물을 의미한다.

현실세계를 관찰하여 컴퓨터로 관리해야 할 정보, 혹은 데이터를 개체 타입 또는 관계 타입으로 도출한다.

 

2. 개체 도출 방법

요구사항 분석 대상 문서에서 명사를 찾아 표시한다.

표시한 명사에 대해 독립적으로 존재하는 개체인지 개체의 속성인지를 구별한다.

개체 후보 들 중에서 중복된 명사나 유사한 의미의 명사는 하나로 통일한다.

개체 후보들 중에서 데이터베이스로 관리할 필요가 없는 것은 제외한다.

개체 정의서를 작성한다.

 

3. 식별자 정의

주식별자는 개체타입에 소속된 인스턴스들을 구분하는 기준이 되는 속성을 말한다.

주식별자는 현재 시점에서 뿐만 아니라 미래의 어떤시점에서도 중복된 값이 존재하지 않고, 최소한의 속성 집합으로도 유일 성을 보장할 수 있도록 구성한다.

 

4. 관계 정의

 

1. 관계 도출

두개 혹은 그 이상의 개체들 간의 의미있는 연결이나 개체와 개체가 존재의 형태나 행위로 서로에게 영향을 주는 형태 및 규칙을 도출한다. 일반적으로 요구사항에 나타난 동사를 기반으로 관계 후보를 도출한다.

 

2. 관계의 카디널리티 정의

관계에 참여하는 두 개의 개체가 관계에 참여하는 인스턴스의 수를 표현한다.

 

3. 관계의 참여도 정의

관계가 있는 두 개체의 인스턴스들이 항상 관계에 참여하는지 , 아니면 경우에 따라 관계에 참여 하는지를 정의한다.

 

3. 논리적 데이터 모델링

 

3.1 개념 vs 논리 스키마 사상

개념설계 단계에서 작성한 ER 스키마를 관계 데이터 모델의 릴레이션으로 사상한다.

ER 스키마의 개체 타입과 관계 타입은 관계형 데이터베이스의 릴레이션으로 사상된다.

 

3.2 개념 vs 논리 스키마 사상 규칙

단일 값 속성을 갖는 강한 개체 타입은 릴레이션과 해당 릴레이션의 속성으로 변환한다.

약한 개체 타입은 릴레이션으로 변환하고 소유 개체 타입의 기본키를 새로 생성한 릴레이션의 외래키로 포함 시킨 후 외래키와 부분키의 조합으로 키본키를 정의한다.

 

4. 데이터베이스 정규화

 

4.1 정규화 개념

정규화는 관계형 데이터베이스 설계 시 중복을 최소화하도록 데이터를 구조화하는 프로세스이다. 

데이터베이스 정규화의 목표는 이상이 있는 관계를 재구성하여 작고 잘 조직된 관꼐를 생성하는 것에 있다.

제대로 조직되지 않은 테이블들과 관계들을 작고 잘 조직된 테이블과 관계들로 나누는 것을 포함한다.

 

4.2 정규화의 목적

하나의 테이블에서의 데이터의 삽입, 삭제, 변경이 정의된 관계들로 인하여 데이터베이스의 나머지 부분들로 전파되게 하는 것이다.

어떤 관계라도 데이터베이스 내에서 표현이 가능하도록 만드는 것이다.

관계에서 바람직하지 않은 삽입, 삭제, 갱신 이상이 발생하지 않도록 한다.

새로운 형태의 데이터가 삽입될 때 관곌르 재구성할 필요성을 줄인다.

보다 간단 한 관계 연산에 기초하여 검색을 보다 효율적으로 한다.

 

4.3 이상현상의 개념

정규화를 거치지 않으면 데이터베이스의 데이터들이 불필요하게 중복되어 릴레이션 조작 시 문제가 발생하는데 이것을 이상 현상이라고 한다.

 

4.4 정규화의 원칙

낮은 차수의 정규화를 만족한 상태로 높은 차수의 정규화를 진행한다.

 

4.5 제1정규형

릴레이션 R의 모든 속성 값이 원자값을 가지는 릴레이션을 말한다.

 

4.6 제2정규형

릴레이션 R이 제1정규형이고 기본키가 아닌 속성이 키본키에 완전함수 종속일 때 제2정규형이라고 한다.

 

4.7 제3정규형

릴레이션 R이 제2정규형이고 기본키가 아닌 속성이 키본키에 비이행적으로 종속할때 제3정규형이라고 한다.

 

4.8 BCNF 정규형

릴레이션 R에서 함수 종속성 x->y가 성립할때 모든 결정자 X가 후보키이면 BCNF 정규형이라고 한다.

 

4.9 제4정규형

릴레이션 R에서 MVD A -> B가 존재할 떄 R의 모든 애트리뷰트들이 A에 함수종속이면 R은 4정규형이다.

 

4.10 제5정규형

릴레이션 R에 존재하는 모든 조인 종속이 이 R의 후보키를 통해 성립되면 제5정규형이다.

 

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

정보처리기사 31일차  (0) 2021.02.10
정보처리기사 30일차  (0) 2021.02.08
정보처리기사 28일차  (0) 2021.02.06
정보처리기사 27일차  (0) 2021.02.05
정보처리기사 26일차  (0) 2021.02.05

3. 데이터베이스

 3.3 논리 데이터베이스 설계

  3.3.1 논리 데이터베이스 설계 능력 단위 정의

  3.3.2 데이터 모델


- 논리 데이터베이스 설계

논리 데이터베이스 설계란 개념 데이터모델을 상세화하여 비즈니스의 논리적인 데이터집합, 관리항목 및 관계 등 데이터 구조 및 규칙을 논리 E-R다이어그램을 통해서 명확하게 표현하는 능력이다.

 

-데이터 모델

 

1. 데이터 모델 개념

 

1.1 데이터모델의 정의

데이터 모델은 현실세계의 정보들을 컴퓨ㅓ에 표현하기 위해서 단순화, 추상화하여 체계적으로 표현한 개념적 모형이다.

데이터베이스 내에 존재하는 데이터를 정의하고 데이터들 간의 관계를 규정하고 데이터의 의미와 데이터에 대한 제약 조건을 나타내는 개념적인 도구이다.

데이터베이스의 구조와 연산 , 제약조건으로 구성된다.

 

1.2 데이터 모델의 종류

 

1. 개념적 데이터 모델

현실 세계에 대한 인간의 이해를 돕기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정이다.

사용자가 데이터를 인식하는 방식에 가까운 개념을 제공하며 개체 기반 또는 객체기반 데이터 모델이라고도 한다.

현실 세계에 존재하는 개체를 인간이 이해할 수 있는 정보 구조로 표현하기 때문에 정보 모델이라고도 한다.

개념적 모델 : 높은 수준의 추상화 단계에서 실세계를 표현하기 위한 도구

논리적 모델 ; 컴퓨터에 의해 수행될 수 있도록 데이터를 기술하기 위한 도구

대표적인 개념적 모델로는 E-R모델이 있다. E-R 모델은 속성들로 기술된 개체 타입과 이 개체 타입들 간의 관계를 이용하여 현실 세계를 표현한다.

 

1.2 논리적 데이터 모델

논리적 데이터 모델은 개념적 모델링 가ㅗ정에서 얻은 개념적 구조를 컴퓨터가 이해하고 처리할 수 있는 컴퓨터 세계의 환경에 맞도록 변환하는 과정이다.

논리적 데이터 모델은 필드로 기술된 데이터 타입과 이 데이터 타입들 간의 관계를 이용하여 현실 세계를 표현한다.

단순히 데이터 모델이라고 하면 논리적 데이터 모델을 의미한다.

특정 DBMS는 특정 논리적 데이터 모델 하나만 선정하여 사용한다.

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

 

1.3 계층 데이터모델

데이터베이스의 논리적 구조가 트리 형태임

루트 역할을 하는개체가 존재하고 사이클이 존재하지않음

개체 간의 상하 관계가 성림

두 개체 사이에 하나의 관계만 정의할 수 있음

다대다 관계를 직접 표현할 수 없음

개념적 구조를 모델링 하기 어려워 구조가 복잡해질 수 있음

데이터의 삽입 삭제 수정 검색이 쉽지 않음

 

1.4 네트워크 데이터 모델

데이터베이스의 논리적 구조가 네트워크, 즉  그래프 형태임

개체 간에는 다대다 관계만 허용됨

두 개체 사이에 여러 관계를 정의할 수 있어 이름으로 구별함

다대다 관계를 직접 표현할 수 없음

구조가 복잡하고 데이터의 삽입 삭제 수정 검색이 쉽지 않다.

 

1.5 물리적 데이터 모델

논리적 데이터 모델에서 레코드의 상세 스펙 등을 기술한 모델로 실제 컴퓨터에 데이터가 저장되는 방법을 정의한다.

DBMS 설계 및 관리 메뉴얼에 따라 정의된다.

 

2. 개체-관계 모델

 

2.1 개체-관계 모델 정의

E-R 모델은 개념적 데이터 모델의 가장 대표적인 것으로, 1970년 피터 첸에 의해 개발되었다.

E-R 모델은 개체 타입과 이들 간의 관계 타입을 이용하여 현실 세계를 개념적으로 표현하는 방법이다.

ER 모델은 개체, 속성, 관계 등에 대하여 용이하게 표현할 수 있는 E-R도형을 정의하고 있다.

E-R 모델에서는 데이터를 개체, 관계, 속성으로 묘사하며, 1:1, 1:N, N:M 등의 관계유형을 제한없이 나타낼 수 있다.

최초에는 Entity, Relationship, Attribute와 같은 개념들로 구성되었으나 후에 일반화 계층 같은 복잡한 개념들이 첨가되어 확장된 모델로 발전했다.

 

2.2 E-R다이어그램 기호

E-R 모델의 기본 아이디어를 시각적으로 표현하기 위한 그림이다.

 

1. 개체

개체는 데이터베이스에 표현하려는 것으로 사람이 생각하는 개념이나 정보 단위 같은 현실 세계의 대상체이다.

개체는 실세계에 독립적으로 존재하는 유형, 무형의 정보로서 서로 연관된 몇 개의 속성으로 구성된다.

파일 시스템의 레코드에 대응하는 것으로 어떤 정보를 제공하는 역할을 수행한다.

독립적으로 존재하거나 그 자체로서도 구별 가능하다.

 

2. 개체 타입

개체 타입은 동일한 속성들을 가진 개체들의 틀을 의미한다. 개체 집합은 동일한 애트리뷰트들을 가진 개체들의 모임이다. E-R 다이어그램에서 개체 타입은 직사강형으로 나타낸다.

 

3. 속성

하나의 개체는 연관된 속성들의 집합으로 설명된다. 예를 들어 사우너 개체는 사원번호와 이름, 직책, 급여 등의 속성을 갖는다. 

개체는 독립적인 의미를 갖는데 반해 속성은 독립적인 의미를 갖지 않는다.

속성은 데이터의 가장 작은 논리적 단위로서 파일 구조상의 데이터 항목 또는 데이터 필드에 해당한다.

속성은 E-R 다이어그램에서 타우너형으로 나타내고 개체 타입과 실선으로 연결한다.

속성 중에서 개체를 고유하게 식별할 수 있는 속성 또는 속성들을 집합을 주식별자 또는 기본키라고한다. E-R 다이어그램에서 기본키에 속하는 속성은 밑줄을 그어서 표시한다.

 

4. 도메인 

도메인은 속성이 가질 수 있는 모든 가능한 값들의 집합을 말한다. 여러 속성들이 동일한 도메인을 공유할 수 있다 이를 통해 데이터베이스는 속성 값을 표준화해서 관리할 수 있다.

 

5. 관계

관계는 개체들 사이에 존재하는 연관이나 연력로서 두 개 이상의 개체 타입들 사이의 사상으로 생각할 수 있다.

관계 집합은 동질의 관계들의 집합을 말하며, 관계 타입은 동질의 관계들의 틀이다.

E-R 다이어그램에서 관계는 다이아몬드로 표기하며, 관계 타입이 서로 연관 시키는 개체타입들을 관계 타입에 실선으로 연결한다.

관계의 특징을 나타내는 속성을 가질 수 있으나, 키 속성은 갖지 않는다.

관계로 연결된 개체 타입들의 개수를 관계의 차수라고 하며, 실세계에서 가장 흔한 관계는 두 개의 개체 타입을 연결하는  2진 관계이다.

관계에 참여하는 개체의 어커런스 개수를 관계의 대응 카디널리티 라고 한다.

카디널리티는 한 개체가 관계에 참여 할 수 있는 관계의 수를 나타낸다.

 

3. 관계 데이터 모델

 

3.1 관계 데이터 모델 개념

관계 모델은 E.F. CODD가 1972년 제안한 데이터 모델로써 오늘날 대부분의 데이터베이스 관리시스템에서 지원하는 데이터 모델임

관계 모델은 실세계 데이터를 행과 열로된 표 형태로 저장하고 한 테이블의 필드 값을 이용하여 다른 테이블에 관련된 데이터를 찾는 식으로 검색하는 데이터 모델

 

3.2 관계 데이터 모델의 구성

데이터베이스는 테이블들의 집합으로 표현되며, 테이블은 튜플들의 집합으로 표현되고, 튜플은 애트리뷰트들로 구성됨.

각 학생은 레코드로 표시되고, 레코드의 각 필드는 단일값을 가진다.

각 테이블에는 모든 레코드에서 서로 다른 값을 가지는 필드가 있어야함

 

3.3 릴레이션의 특징

한 릴레이션에 포함된 튜플들은 모두 상이하다.

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

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

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

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

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

속성은 더 이상 쪼갤 수 없는 원자값만을 저장한다.

 

3.4 키

 

1. 키의 정의

데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 튜플들을 서로 구분할 수 있는 기준이 되는 속성들을 말한다.

 

2. 키의 특징

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

최소성 : 속성의 집합인 키가릴레이션의 모든 튜플을 유일하게 식별하기 위해 꼭 필요한 속성들로 구성된 것을 의미

 

3. 키의 종류

후보키 = 기본키+대체키

기본키 = 후보키-대체키

슈퍼키 > 후보키 > 대체키 > 기본키

 

4 후보키

후보키는 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합, 즉 기본키로 사용할 수 있는 속성들을 말한다

하나의 릴레이션내에서는 중복된 튜플들이 잇을 수 없으므로 모든 릴레이션에는 반드시 하나 이상의 후보키가 존재한다.

후보키는 릴레이션에 있는 모든 튜플에 대해서 유일성과 최소성을 만족시켜야한다.

 

5 대체키

후보키가 둘 이상일때 기본키를 제외한 나머지 후보키들을 말한다.

보조키라고도 한다.

 

6 슈퍼키

슈퍼키는 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키로서 릴레이션을 구성하는 모든 튜플들 중 슈퍼키로 구성된 속성의 집합과 동일한 값을 나타나지 않는다.

슈퍼키는 릴레이션을 구성하는 모든 튜플에 대해 유일성을 만족시키지만 ,  최소성은 만족시키지 못한다.

 

7 외래키

관계를 맺고 있는 릴레이션 R1,R2에서 릴레이션이 R1이 참조하고 있는 릴레이션R2의 기본키와 같은 R1릴레이션의 속성을 외래키라고 한다.

외래키는 참조되는 릴레이션의 기본키와 대응되어 릴레이션 간에 참조관계를 표현하는데 중요한 도구이다.

 

3.5 무결성과 제약조건

 

1. 데이터 무결성 

데이터베이스에 저장된 데이터의 일관성과 정확성을 지키는 것을 말하며, 데이터가 무결성을 가지도록 하는 행위를 무결성 강화라고 함

 

도메인 무결성

열의 값에관련된 무결성으로, 이를 강화시키는 방법에는 데이터 형식, NULL/NOT NULL, 기본값, 체크/규칙 등이 있다.

 

엔티티 무결성

테이블의 모든 행들이 유일하게 식별되는 무결성으로, 대부분의 경우 기본 키에 의해 강화된다. 테이블 무결성이라고도 한다.

 

참조 무결성

서로 관계를 맺은 두 테이블 사이의 무결성으로, 외래 키에 의해 강화된다. 자식 테이블의 외래 키는 반드시 부모테이블의 기본 키 값으로 존재하는 값을 가져야 하며, 외래 키가 참조하는 기본 키 값은 변경 또는 삭제가 금지된다.

 

2. 제약조건

제약 조건이란 데이터베이스에 저장되는 데이터의 정확성을 보장하기 위해 키를 이용하여 입력되는 데이터에 제한을 주는 것을 말한다.

 

1. 도메인 제약조건

각 필드의 값은 반드시 그 필드의 도메인에 속하는 원자값 이어야 한다.

 

2. 엔티티 제약조건

테이블마다 튜플을 서로 구분할 수 있는 필드가 존재하며, 이 필드를 Primary key라고 한다

기본 키 값은 널 값이 될 수 없다는 조건을 엔티티 무결성 제약조건이라 한다.

 

3. 참조 무결성 제약조건

한 테이블의 필드 값은 다른 테이블의 기본 키 값을 참조할때 두 테이블 사이에 참조 무결성 제약조건이 있다고 한다.

 

3.6 관계 데이터 언어

관계 데이터베이스의 릴레이션을 조작하기 위한 기본연산에는 관계대수와 관계해석이 있다.

이 연산은 사용자의 입장에서 볼 때 데이터를 처리하는 데이터 언어가 되며 관계대수는 절차적 언어이며 관계해석은 비절차적 언어이다.

 

1. 관계대수 정의

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

릴레이션을 처리하기 위해 연산자와 연산규칙을 제공하는 언어로 피연산자가 릴레이션이고 결과도 릴레이션이다.

 

2. 관계대수 연산자의 종류

 

순수 관계 연산자

관계 데이터베이스에 적용할 수 있도록 특별히 개발한 관계 연산자

 

일반 집합 연산자

수학적 집합 이론에서 사용하는 연산자로서 릴레이션 연산에도 그대로 적용 가능하다.

일반 집합 연산자 중 합집합, 교집합, 차집합은 합병 조건이 가능해야 함

합병 조건 : 합병하려는 두 릴레이션 간에 애트리뷰트 수가 같고, 각 애트리뷰트가 취할 수 있는 도메인의 범위가 같아야 함

 

관계 대수의 한계

관계 대수는 산술 연산을 할 수 없음

집단 함수를 지원하지 않음

정렬을 나타낼 수 없음

데이터베이스를 수정할 수 없음

프로젝션 연산의 결과에 중복된 튜플을 나타내는 것이 필요할 때가 있는데 이를 명시하지 못함

 

3, 관계해석의 정의

코드박사가 제안한 것으로 수학의 술어해석에 기반을 두고있다.

원하는 정보가 무엇이라는 것만 정의하는 비절차적 특징을 갖는다. SQL문과 같은 질의어를 사용하며 튜플 관계해석과 도메인 관계해석으로 구성된다.

원하는 데이터만 명시하고 질의를 어떻게 수행할 것인가는 명시하지 않는 선언적인 언어이다.

 

4. 관계해석의 특징

비절차적 언어이다.

튜플 관계 해석과 도메인 관계 해석이 있다.

기본적으로 관계해석과 관계대수는 관꼐 데이터베이스를 처리하는 기능과 능력면에서 동등함

수학의 Predicate calculus에 기반을 두고 있음

관계해석으로 질의어를 표현

원하는 릴레이션을 정의하는 방법을 제공, 즉 원하는 정보가 무엇이라는 것만 정의하는 비절차적인 언어

연산들의 절차를 사용하여 데이터를 가져옴

기본적인 연산자로 union intersection difference를 사용함

전체관계를 조작하는데 사용되는 연산들의 집합

 

 

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

정보처리기사 30일차  (0) 2021.02.08
정보처리기사 29일차  (0) 2021.02.08
정보처리기사 27일차  (0) 2021.02.05
정보처리기사 26일차  (0) 2021.02.05
정보처리기사 25일차  (0) 2021.02.03

3. 데이터베이스

 3.2 SQL 응용

  3.2.1 SQL 응용 능력 단위 정의

  3.2.2 응용 SQL 작성 

  3.2.3 절차형 SQL 작성


- SQL 응용 능력 단위 정의

SQL응용이란 관계형 데이터베이스에서 SQL을 사용하여 응용시스템의 요구기능에 적합한 데이터를 정의하고 조작하며 제어하는 능력이다.

 

- 응용 SQL 작성

 

1, 집계성 SQL

 

1.1 집계성 SQL 개요

총합 평균 등의 데이터 분석을 위해 복수 개의 행을 기준으로 데이터를 분석하는 SQL 시스템을 말한다.

집계 함수, 그룹 함수, 윈도우 함수로 구성된다.

 

1.2 집계 함수

 

1. 개요 

GRUOP BY 절과 함께 사용되어 복수 행에 대한 개수, 합계,평균,최소,최대값 등을 계산하는 SQL 함수를 말한다.

 

2. 집계 함수 특징

한 개의 애트리뷰트에 적용되어 단일 값을 반환한다.

SELECT 절과 HAVING절에만 나타날 수 있다.

COUNT(*)를 제외한 모든 집계 함수는 널값을 제거한 후 계산한다.

COUNT(*)는 결과 릴레이션의 모든 행들의 총 개수를 반환한다.

COUNT(애트리뷰트)는 널값이 아닌 값들의 개수를 반환한다.

DISTINCT가 집단 함수 앞에 사용되면 집단 함수가 적용되기 전에 중복을 제거한다.

 

3. 그룹화 방법

GROUP BY절을 이용하여 분석할 데이터 행을 분류할 기준을 정의한다.

GROUP BY절에 사용된 애트리뷰트에 동일한 값을 갖는 튜플들이 각각 하나의 그룹으로 묶여서 각 그룹별로 하나의 결과를 생성한다.

GROUP BY 절을 사용할 경우, SELECT 절에는 집단함수, 그룹화에 사용된 애트리뷰트들만 나타날 수 있다.

 

2. 그룹함수

 

2.1 개요

소그룹의 소계, 총계와 같이 레벨별로 집계 결과를 조회하기 위해 사용한다.

ROLLUP(), CUBE(), GROUPING SETS() 함수가 대표적이다.

 

2.2 ROLLUP() 함수

소계 등 중간 집계값을 산출하기 위해 사용한다.

컬럼의 수보다 하나 더 큰 레벨 만큼의 중간 집계값을 생성한다.

ROLLUP의 지정 컬럼은 계층별로 구성되기 때문에 순서가 바뀌면 수행 결과가 바뀐다.

 

2.3 CUBE() 함수

결합 가능한 모든 값에 대해 다차원 집계를 생성하는 그룹 함수이다.

CUBE는 내부적으로 대상 컬럼의 순서를 변경하여 또 한 번의 쿼리를 수행하고 총계는 양쪽 쿼리에서 모두 수행 후 한쪽에서 제거한다.

ROLLUP에 비해 계산이 많다.

 

2.4 GROUPING SETS() 함수

집계 대상 컬럼들에 대한 개별 집계를 구한다. ROLLUP이나 CUBE와는 달리 컬럼 간 순서와 무관한 결과를 생성한다.

GROUP BY 한 SQL 들을 UNION ALL 해서 보여주는 결과와 같다.

 

3. 윈도우 함수

 

3.1 개요

행과 행간의 관계를 쉽게 정의하기 위해 만든 함수로 분석 함수 또는 순위 함수라고도 한다.

일반적으로 집계함수나 순위함수 등을 이용해 그룹을 나눠 분석을 수행한다.

 

-절차형 SQL 작성

 

1. 절차형 SQL 기본

 

1.절차형 SQL 개요

 

1.1 절차형 SQL 개념

SQL문의 연속적인 실행이나 조건에 따른 분기, 반복 등이 제어를 활용하여 다양한 기능을 수행하는 데이터베이스 저장 모듈이다.

절차형 SQL은 반복 또는 자주 수행하는 DB작업을 효율적으로 수행할 수 있으며,잘 정의된 절차형 SQL은 소프트웨어 개발 생산성을 높일 수 있다.

 

1.2 절차형 SQL 특징

DBMS 엔진에서 직접 실행되며 BEGIN/END의 Block화된 구조를 갖는다.

조건문, 반복문 등 단일 SQL 문장으로 실행하기 어려운 연속적인 작업처리가 가능하다.

작업에 필요한 데이터를 DBMS 내부에서 직접 처리하기 때문에 In/Out Packet이 적다.

타절차형 언어에 비해 작업의 효율성은 낮은 편이며, DBMS 벤더별로 약간의 문법 차이가 존재하므로 이식시 수정 및 재컴파일이 필요하다.

 

1.3 절차형 SQL 구성

절차형 SQL 종류마다 약간의 차이가 있다.

기본 구성 요소

DECLARE : 대상이 되는 프로시저, 사용자 정의함수 등을 정의

BEGIN : 프로시저, 사용자 정의함수가 실행되는 시작점

END : 프로시저, 사용자 정의함수가 실행되는 종료점

 

2. 절차형 SQL 제어문

 

2.1 절차형 SQL 제어문 종류

절차형 SQL 제어문은 Oracle PL/SQL을 이용하여 설명한다.

 

조건제어 : IF-THEN-ELSE

IF문은 조건에 만족할 경우와 만족하지 않을 경우 각각에 대해 실행할 문장을 선택

할수 있다. 선택 제어문이라고도 한다.

 

반복제어 : LOOP,FOR-LOOP,WHILE-LOOP

LOOP문은 종료조건을 만족하지 않을 경우 무조건 LOOP 안의 문장들을 반복수행한다.

FOR-LOOP는 지정된 횟수만큼 LOOP 안의 문장들을 반복수행한다.

WHILE-LOOP는 WHILE문에 명시된 조건을 만족하는 동안 LOOP 안의 문장들을 반복수행한다.

 

순차제어 : GOTO, NULL

GOTO : 제어가 건너뛰는 곳을 지정하는 레이블과 함께 쓰임

NULL : 실행을 하지 않음을 나타냄

 

2.2 절차형 SQL의 SELECT문

 

반드시 하나의 행만을 추출해야 오류없이 정상적으로 수행하며, 만일 추출되는 데이터행이 없거나 하나 이상일 경우에는 예외가 발생한다.

TOO_MANY_ROWS : 하나 이상의 데이터 행 추출 시

NO_DATA_FOUND : 어떤 데이터도 추출하지 못할 때

다수 개의 데이터 행을 하나씩 추출할 때는 명시적 커서를 사용해야 한다. 

 

2.3 절차형 SQL의 커서

SQL 처리 결과가 저장된 작업 영역에 이름을 지정하고 저장된 정보를 접근할 수 있게 하는 용도로 사용한다.

SQL 명령을 실행시키면 서버는 명령을 parse 하고 실행하기 위한 메모리 영역을 open하는데 이 영역을 cursor라고 한다.

 

커서의 종류

명시적 커서 : 프로그래머가 선언하고 명령하며 블럭의 실행 가능한 부분에서 특정 명령을 통해 조작하는 커서이다.

묵시적 커서 : SQL 문이 실행되는 순간 자동으로 열렸다가 닫힌다. 오라클은 모든 DML과 PL/SQL SELECT 문에 묵시적으로 커서를 생성한다.

 

2. 프로시저 및 호출문 작성

 

2.1 프로시저 개요

 

프로시저 개념

매겨변수를 받을 수 있고 반복해서 사용할 수 있는 이름이 있는 SQL 블록으로 연속실행 또는 구현이 복잡한 트랙잭션을 수행하는 SQL 블록을 데이터베이스에 저장하기 위해 구성한다.

프로시저 호출을 통해 실행되며, 일련의 SQL작업을 포함하는 데이터 조작어를 수행한다.

일일 마감 작업 또는 일련의 배치 작업 등을 프로시저를 활용하여 관리하고 주기적으로 수행하기도 한다.

 

프로시저 구성

DECLARE : 프로시저의 명칭, 변수와 인수, 데이터 타입을 정의하는 선언부이다.

BEGIN/END : 프로시저의 시작과 종료를 표현하는 필수 요소이며 프로시저 내부에서 Block을 구분하는데 사용하기도 한다.

CONTROL : 순차실행, 주건분기, 반복수행 등 SQL 문장의 수행 순서를 조장하는데 사용한다.

SQL : DQL,DML을 주로 사용하고 경우에따라 DDL 문을 사용하기도 한다.

EXCEPTION :  BEGIN~END 절에서 실행되는 SQL 문이 실행 될 때 예외 또는 오류가 발생하는 경우 예외 처리 방법을 정의한다.

TRANSACTION : 프로시저에서 수행된 DML 수행 내역의 DBMS의 적용 또는 취소 여부를 결정하는 처리부이다.

 

2.2 프로시저 작성

프로시저 정의 문법

CREATE 명령어로 DBMS 내에 프로시저 생성이 가능하다.

OR REPLACE 명령은 기존 프로시저 존재 시에 현재 컴파일하는 내용으로 덮어쓴다는 의미이다. 동명의 프로시저가 존재할때 CREATE 명령문만 사용되면 컴파일시에는 에러가 발생한다.

PARAMETER는 외부에서 프로시저 호출 시 변수를 입력 또는 출력할 수 있다.

MODE는 변수의 입력 또는 출력을 구분하며 다음과 같이 사용한다.

IN : 운영 체제에서 프로시저로 전달되는 MODE

OUT : 프로시저에서 처리된 결과가 운영체제로 전달되는 MODE

INOUT : IN과 OUT의 두가지 기능을 동시에 수행하는 MODE

 

3. 사용자 정의 함수 및 호출쿼리 작성

 

3.1 사용자 정의 함수 개요

함수개념 

매개변수를 받을 수 있고 데이터와 관련된 복잡한 계산 등을 수행하며 해당 동작의 결과를 반환하는 사용자 정의함수를 DBMS에 정의할 수 있다

함수구성

기본사항은 프로시저와 동일하지만, 결과값을 반환하는 부분이 상이하다.

 

4. 트리거

 

4.1 트리거 개요

트리거 개념

데이터베이스에 특정한 변경이 가해졌을 때 발생할 때마다 DBMS가 이에 대응해서 자동적으로 호출하는 일종의 프로시저를 말한다.

프로시저와 함수는 그 실행이 외부적인 실행 명령에 의해 이루어지는데 반해, 트리거의 실행은 트리거링 사건에 의해 내부적으로 이루어진다.

트리거를 이벤트-조건-동작 규칙이라고도 부른다. 여기서 E는 Event, C는 Condition, A는 Action을 의미한다.

 

트리거 구성

트리거를 가동하는 사건과 수행조건, 수행할 동작으로 구성된다.

 

트리거 용도

테이블 생성시 참조 무결성과 데이터 무결성 그 밖의 다른 제약 조건으로 정의할 수 없는 복잡한 요구 사항에 대한 제약조건을 생성하는데 사용한다.

테이블 정의 시 표현할 수 없는 기업의 비즈니스 규칙들을 시행하는 역할을 한다.

테이블의 데이터에 생기는 작업을 감시할 수 있다. 즉, 보안 통제용으로 트리거를 활용할 수 있다.

 

5. 오류처리

 

5.1 데이터베이스 오류 처리의 개념

절차형 SQL 프로그램의 구문 오류 또는 프로그램 실행 상황에 따라 발생하는 오류를 처리하기 위해 예외사항을 정의하고, 예외 상황이 발생했을 때 미리 정의된 처리 루틴으로 분기하도록 정의하는 과정이다.

 

 

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

정보처리기사 29일차  (0) 2021.02.08
정보처리기사 28일차  (0) 2021.02.06
정보처리기사 26일차  (0) 2021.02.05
정보처리기사 25일차  (0) 2021.02.03
정보처리기사 24일차  (0) 2021.02.03

3. 데이터베이스

 3.1 SQL 활용

 3.1.3 고급 SQL 작성


1. VIEW

 

1.1 뷰의 개념

뷰는 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 테이블로 부터 유도된 이름을 가지는 사상 테이블을 말한다.

기본테이블처럼 행과 열로 구성되지만 다른 테이블에 있는 데이터를 보여줄뿐이지 데이터를 직접 담고 있지는 않다.

 

1.2 뷰의 특징

저장 장치내에 물리적으로 존재하지 않는다.

데이터 보정 등 임시적인 작업을 위한 용도로 사용한다.

기본 테이브로가 같은 형태의 구조로 조작이 거의 비슷하다.

삽입 내용 갱신에 제약이 따른다.

논리적 독립성을 제공한다.

독자적인 인덱스를 가질 수 없다.

Create를 이용하여 뷰를 생성한다.

필요한 데이터만 골라 뷰를 이용하여 처리한다.

 

1.3 뷰 사용

뷰를 사용하는 주된 이유는 다음과 같은 단순한 질의어를 사용할 수 있기 때문이다.

SELECT * FROM <View Name>;

즉 FROM 절에 있는 하나의 뷰를 통해 뷰를 구성하는 복수의 테이블 을 대체하는 단순성에 그 의의가 있다.

 

1.4 뷰 생성

뷰 생성 명령의 일반 형태를 다음과 같다.

CREATE VIEW <뷰이름><컬럼목록>AS<뷰를 통해 보여줄 데이터 조회용 쿼리문>

 

 

1.5 뷰 삭제 및 변경

뷰 정의 자체를 변경하는 것은 불가능하다. 일단 뷰를 정의하면 뷰의 물리적 내용은 뷰의 이름과 데이터를 조회하기 위한 쿼리문뿐이다. 이때 뷰의 이름이나 쿼리문을 변경하는 수단은 제공되지 않는다.

이 경우 뷰의 삭제와 재생성을 통해 뷰에 대한 정의 변경이 가능하다.

 

2. 인덱스

 

2.1 인덱스 개념

인덱스는 데이터를 빠르게 찾을 수 있는 수단으로서, 테이블에 대한 조회 속도를 높여주는 자료구조이다.

테이블에서 자주 사용되는 컬럼 값을 빠르게 검색할 수 있도록 색인을 만들어 놓은 것이다.

과다한 사용은 성능이 떨어진다.

필요없는 인덱스가 많아지면 DB에 차지되는 공간이 많아져 table scan보다 속도가 느려질 수 있다.

 

2.2 인덱스의 구조와 장점

인덱스 구성을 위해 가장 많이 사용하는 검색 트리는 b-tree 구조이다.

인덱스는 데이터베이스의 성능향상을 위한 DB튜닝 수단으로 가장 일반적인 방법이다.

인덱스 사용의 장점

sql 문을 변경하지 않아도 성능을 개선한다.

테이블의 데이터에 영향을 주지 않는다.

일정한 효과를 기대할 수 있다.

 

2.3 인덱스의 사용

인덱스는 테이블의 특정 레코드 위치를 알려주는 용도로 사용한다 이러한 인덱스는 자동으로 생성되지 않는다.

 

2.4 인덱스 종류

순서 인덱스 : 데이터가 정렬된 순서로 인덱스 생성관리 b-tree알고리즘 이용, 오름차순, 내림차순 지정

해시 인덱스 : 해시함수에 의하여 직접 제이터에 키값으로 접근하는 인덱스

비트맵 인덱스 : 각 컬러멩 적은 개수의 값이 저장된 경우 선택

함수기반 인덱스 : 함수 기반으로 사전에 인덱스 설정하면 인덱스 가능 및 속도향상

단일 인덱스 : 하나의 컬럼으로만 인덱스를 지정하는 방식

결합 인덱스 : 복수개의 컬럼을 이용하여 인덱스 지정하는 방식

클러스터드 인덱스 : 저장된 데이터의 물리적 순서에 따라 인덱스가 생성

 

1. 해시 인덱스

데이터의 신속산 검색을 위해 키 값에 해시함수를 적용하여 주소 값을 빠르게 계산하고 레코드가 저장된 위치를 직접 접근하는 방법이다. <키캆, 주소>의 쌍으로 저장하므로 특정 키 값에 대한 검색 방법 중에서 가장 빠르다.

 

2. 인덱스 조작

DB사용자가 인덱스에 대해 조작할 수 있는 방법으로는 생성, 삭제, 변경 조작이 있다. 참고로 인덱스 조작 명령은 SQL 표준화에 포함되지 않아 DBMS 공급사마다 사용법이 약간씩 다르다.

 

3. 집합연산

 

3.1 집합연산 개념

테이블에 집합 개념으로 보고, 두 테이블 연산에 집합 연산자를 사용하는 방식이다.

집합 연산자는 여러 질의 결과를 하나로 결합하는 방식을 사용한다. 즉, 집합 연산자는 2개 이상의 질의 결과를 하나의 결과로 만들어 준다.

 

3.2 집합 연산 유형

테이블 집합의 개념으로 보고 두 테이블 사이에 가능한 집합 연산은 다음과 같은 종류가 있다.

UNION : 여러 SQL문의 결과에 대한 합집합(중복 행 제거)

UNION ALL : 여러 SQL문의 결과에 대한 합집합(중복행 제거하지 않음) 

INTERSECTION : 여러 SQL문의 결과에 대한 교집함(중복행 제거함)

EXCEOT (MINUS) : 앞의 SQL문의 결과와 뒤의 SQL결과 사이의 차집합(중복행 제거)

 

집합 연산을 적용하려면 두 테이블이 합집합 호환성을 가져야 한다. 즉, 집합 연산에 참여하는 두테이블의 컬럼의 개수와 데이터 타입이 일치해야 한다.

 

3.3 UNION

UNION은 합집합을 의미한다. 예를 들어, 두 개의 데이터 집합이 있으면 각 집합 원소를 모두 포함한 결과가 반환된다.

 

3.4 UNION ALL

UNION ALL은 UNION과 비슷하나, 중복된 항복도 모두 조회된다.

 

3.5 INTERSECTION

교집합을 의미하고 공통된 항복만 추출해 낸다.

 

3.6 MINUS

차집합을 의미한다. 즉 한 데이터 집합을 기준으로 다른 데이터 집합과 공통된 항목을 제외한 결과만 추출해 낸다.

 

4. 조인

 

4.1 조인 개요

조인은 두 개 이상의 테이블로부터 연관된 데이터를 결합해서 검색하는 방법을 의미한다.

SELECT 문의 FROM 절에 두개 이상의 테이블을 결거하고 WHERE 절에 조인 조건을 명시하는 방법이 기본적이다.

조인 조건은 두 테이블 사이에 속하는 컬ㄹ럼 값들을 비교 연산자로 연결한 형태이며, 조인 조건을 생략한 경우 또는 조인 조건을 잘 못 작성하기 되면 카티션 프로덕트 연산이 수행되어 원하지 않는 결과를 얻게 된다.

조인 질의에 사용된 두테이블의 컬럼 이름이 동일하다면 반드시 컬럼 이름 앞에 테이블 이름을 명시해야 한다.

 

4.2 조인 유형

조인은 크게 논리적 조인과 물리적 조인으로 구분한다.

논리적 조인 : 사용자의 SQL문에 표현되는 테이블 결합 방식

  • 내부조인 : 두 테이블에 존재하는 공통 데이터를 갖는 컬럼을 이용하는 방식
  • 외부조인 : 특정 테이블의 모든 데이터를 기준으로 다른 테이블의 정보를 추출
  • 셀프조인 : 한 테이블 내에서 조인을 수행

물리적 조인 : 데이터베이스의 옵티마이저에 의해 내부적으로 발생하는 테이블 결합 방식

 

4.3 논리적 조인

논리적 조인은 내부 조인과 외부조인, 셀프 조인으로 구분한다.

내부조인은 조인 조건에 만족하는 데이터를 결과로 산출하는 조인을 말한다.

셀프 조인은 조인에 참여하는 테이블이 1개인 경우를 말한다.

외부 조인은 조인 조건에 만족하지 않는 결과도 같이 보고 싶을 때 사용한다.

 

5. 서브쿼리

 

5.1 서브쿼리 개념

서브쿼리는 다른 SQL문 안에 포함되어 사용된 또 다른 SQL문을 의미한다.

서브쿼리는 WHERE 절 뿐만 아니라 INSERT, DELETE, UPDATE 문에도 사용될 수 있다.

메인쿼리와 서브쿼리 관계는 주종관계로서, 서브쿼리에 사용되는 컬럼 정보는 메인쿼리의 컬럼 정보를 사용할 수 있으나 역으로는 성립하지 않는다

 

5.2 서브쿼리 유형

서브쿼리는 동작하는 방식이나 반환되는 데이터의 형태에 따라 분류한다. 

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

정보처리기사 28일차  (0) 2021.02.06
정보처리기사 27일차  (0) 2021.02.05
정보처리기사 25일차  (0) 2021.02.03
정보처리기사 24일차  (0) 2021.02.03
정보처리기사 23일차  (0) 2021.02.02

3. 데이터베이스

 3.1 SQL 활용

 3.1.1 SQL 활용 능력 단위 정의

 3.1.2 기본 SQL 작성


- SQL 활용 능력 단위 정의

SQL 활용이란 관계형 데이터베이스에서 SQL을 사용하여 목적에 적합한 데이터를 정의하고, 조작하며, 제어하는 능력이다.

 

- 기본 SQL 작성

 

1. 데이터베이스 기본

 

1.1 정보시스템과 데이터베이스

 

1. 정보시스템

정보시스템은 조직에서 필요한 데이터를 수집 및 가공, 저장하여 업무 운영 및 의사결정에 필요한 정보를 제공하는 시설과 장비를 의미한다.

데이터는 현실 세계에서 관찰과 측정을 통해 수집한 가공되지 않은 단순한 사실이나 결과값을 의미하는 반면, 정보는 의사결정에 활용하기 위해 데이터를 유용한 형태로 가공/처리해서 얻은 결과를 말한다.

정보시스템의 데이터 처리 형태는 일괄처리, 온라인 실시간처리, 분산 처리로 구분된다.

 

일괄처리 : 일정 시간 또는 일정량의 데이터를 모아서 한번에 처리하는 방식

온라인 실시간 처리 : 사용자가 데이터 처리를 요구할 경우 즉시 처리하여 결과를 산출하는 방식

분산처리 : 지리적으로 분산된 여러 대의 컴퓨터를 네트워크로 연결하여 논리적으로 하나의 시스템을 사용하는 것처럼 운영하는 방식

 

2. 데이터베이스

데이터베이스느 조직에서 업무 운영과 의사결정에 필요한 데이터들을 여러 사용자들이 공동으로 사용할 수 있도록 구조적으로 통합하여 컴퓨터로 저장한 데이터들의 모음을 말한다.

데이터베이스는 저장된 데이터와 저장된 데이터의 구조와 제약사항 등에 대한 메타데이터를 포함한다.

 

1.2 데이터베이스 시스템

 

1. 데이터베이스 시스템 정의

데이터베이스 시스템은 데이터베이스를 이용하여 데이터를 저장하고 관리해서 필요한 정보를 생성하는 컴퓨터 시스템을 말한다.

데이터베이스 시스템은 기존 파일시스템의 문제점인 데이터의 종속성과 중복성을 개선하기 위해 개발되었다.

파일시스템은 응용프로그램과 데이터 간의 상호의존 관계가 긴밀하여 파일에 저장된 파일데이터의 구조가 변경되면 응용프로그램을 수정해야 하는 데이터 종속성이 존재한다.

파일시스템에서는 같은 내용의 데이터가 여러 파일에 중복되어 저장되므로 데이터의 일관성이나 무결성 유지와 데이터 보안이 어렵다

 

2. 데이터베이스 시스템의 구성요소

데이터베이스 시스템은 데이터베이스 스키마와 메타데이터라고 불리는 시스템카탈로그와 데이터베이스관리시스템 데이터 베이스 사용자, 데이터베이스 언어, 데이터베이스 컴퓨터 등으로 구성된다.

 

3. 시스템 카탈로그

데이터 사전 또는 시스템 테이블이라고도 하며, 데이터베이스의 객체와 구조들에 관한 모든 데이터를 포함하는 시스템 테이블을 의미한다.

시스테 카탈로그는 사용자 릴레이션처럼 SELECT 문을 사용하여 내용을 검색할 수 있지만 어떤 사용자도 직접 갱신할 수 없다. 즉 DELETE, UPDATE, INSERT문을 사용하여 시스템 카탈로그를 변경할 수 없다.

DBMS는 시스템 카탈로그에 릴레이션, 애트리뷰트, 인덱스 사용자 권한 등 각 스키마 객체 유형별로 별도의 정보 테이블을 유지한다.

 

1.3 데이터베이스 사용자

 

1. 데이터베이스 관리자

데이터베이스를 정의하고 제어하는 사람 또는 그룹을 의미하며, 데이터베이스 관리 시스템과 컴퓨터 시스템에 대한 지식을 보유해야 한다.

데이터베이스를 설계하고 관리, 운용 및 통제하는 역할을 담당하며, 데이터베이스 시스템을 감시하고 성능을 분석한다.

 

2. 데이터 설계자

조직 또는 기업의 전사 데이터 구조를 체계적으로 정의하는 사람 또는 그룹을 의미한다.

데이터 설계 원칙과 데이터 표준 정의, 데이터 관리체계 수립 등 데이터 모델링과 데이터 구조 관리를 수행한다.

 

3. 응용 프로그래머

프로그래밍 언어를 이용하여 데이터베이스에 접근하여 데이터를 검색하거나 조작하는 사람을 의미한다.

프로그래밍 언어와 데이터베이스 언어, 데이터베이스 관리 시스템에 대한 지식이 있어야한다.

 

4. 일반 사용자

데이터를 검색하거나 조작하기 위해 데이터베이스 질의어를 이용하여 데이터베이스 관리 시스템에 접근하는 사람을 의미한다.

 

1.4 데이터베이스 관리 시스템의 개념과 기능

 

1. DBMS 개념

데이터베이스 관리 시스템은 데이터베이스를 통합 관리하느 소프트웨어 패키지를 의미한다 즉 사용자가 새로운 데이터베이스를 생성하고, 데이터베이스의 구조를 명시할 수 있게하고, 데이터를 효율적으로 질의하고 수정할 수 있도록 하며 시스템의 고장이나 권한이 없는 사용자로부터 데이터를 안전하게 보호하며 동시에 여러 사용자가 데이터베이스에 접근하는 것을 제어하는 소프트웨어 패키지이다.

-데이터 베이스를 정의하고, 질의어를 지원하고, 리포트를 생성하는 등의 작업을 수행하는 소프트웨어 

-데이터베이스에 대한 효율적 접근과 질의 기능 제공, 프로그램과 데이터 간의 독립성을 보장

 

2. DBMS 필수기능

정의기능 : 데이터베이스에 저장된 데이터의 타입과 구조, 제약조건 등을 명시하는 기능 제공

조작기능 : 데이터를 검색하고 삽입, 삭제, 갱신 등 데이터 처리 기능 제공

제어기능 : 데이터의 정확성과 안전성을 유지하기 위한 무결성 관리와 병행제어, 접근제어 등의 기능 제공

 

3. DBMS 도입 시 장단점

장점 :

데이터 중복 최소화

데이터 공용

무결성

일관성

표준화

보안

 

단점:

운영비 증대

복잡화

복잡한 백업과 회복

시스템 취약성

 

4. DBMS 구성요소

데이터정의어 컴파일러

질의어 처리기

데이터베이스 처리기

트랜잭션 관리자

저장 데이터 관리자

 

5. ANSI/SPARC 3단계 스키마 구조와 데이터 독립성

 

1. ANSI/SPARC 3단계 스키마 구조

미국 국립 표준화 기관 ANSI/SPARC 에서 1978년에 제정했으며 대부분의 상용 DBMS에서 활용하는 아키텍처로 외부 단계와 개념적 단계, 물리적 단계로 구성된다.

 

외부 스키마 : 각 사용자나 응용프로그래머가 접근하는 데이터베이스

하나의 데이터베이스에 여러 개의 외부 스키마 존재

서브 스키마라고도 함

 

개념 스키마 : 범 기관적 입장에서 데이터베이스

모든 응용시스템과 사용자가 필요로 하는 데이터를 통합한 데이터베이스

모든 개체, 관계, 제약조건, 접근 권한, 보안 무결성 규칙포함

하나만 존재하고 스키마 라고 함

 

내부 스키마 : 저장 장치 측명에서의 데이터베이스 저장 구조

내부 레코드 형식 index 유무, 내부 레코드 순서 등

물리적 스키마라고도 함

 

데이터를 사용자 관점, 통합 모델 관점, 저장장치의 3가지 관점에서 아키텍처와 상호 연관 관계를 정의한 3단계 스키마 구조로 데이터의 독립성을 보장한다.

 

2. 데이터 독립성

데이터베이스의 논리적/물리적 구조를 변경하더라도 응용프로그램이 영향을 받지 않는 특성을 말한다.

데이터 독립성을 보장하기 위해서는 데이터베이스 스키마 간의 사상이 필요하다. 스키마 간 사상 정보는 시스템 카탈로그에 저장된다.

 

1.6 스키마와 인스턴스

 

1. 스키마

스키마는 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 의미하며 메타데이터 또는 내포라고도 한다.

스키마는 실세계의 특정 부분을 표현하며 특정 데이터 모델을 사용하여 만들어진다. 즉 하나의 조직에서 관심 있는 데이터의 구조를 기술한 언어적이고 그래픽적인 표현으로 시간 독립적인 고정된 집합체이다.

데이터 모델은 데이터베이스의 구조를 기술하는데 사용되는 개념들의 집합과 연산자, 제약조건들을 포함한 것으로 다양한 데이터 모델이 존재한다.

스키마는 데이터의 구조를 나타내는 데이터 사전의 시스템 카탈로그에 저장된다.

 

2. 인스턴스

인스턴스는 스키마에 의해 정의된 특정 시점의 데이터들의 모임을 말하며, 시간에 따라 동적으로 변화한다.

인스턴스는 특정 시점의 데이터베이스 상태를 나타내며 외연이라고도 한다.

 

1.7 관계형 데이터베이스 기초

현재 가장 많이 사용되는 데이터베이스 모델로 데이터가 테이블 형태로 표현되며, 사용자가 데이터를 쉽게 다룰 수 있도록 해주는 질의어를 제공한다.

테이블 형태로 표현된 데이터는 단순해서 누구나 쉽게 이해할 수 있으며 SQL은 자연어에 가까운 문법을 가지고 있어서 배우기 쉽고, 데이터를 어떻게 가져올 것인가 대신에 어떤 데이터를 원하는지만 기술해주면 되기 때문에 사용자나 개발자의 입장에서는 데이터를 다루는 작업이 매우 단순해진다

SQL 명령이나 문법은 표준화되어 있으므로 대부분의 명령어는 모든 관계형 데이터베이스 제품에서 공통으로 사용할 수 있다.

 

1. 관계형 데이터베이스 주요 용어

릴레이션 : 2차원의 테이블

레코드 : 릴레이션의 각 행

튜플 : 레코드를 좀더 공식적으로 부르는 용어

애트리뷰트(속성) : 릴레이션에서 이름을 가진 하나의 열

도메인 : 한 속성에 나타날 수 있는 값들의 집합

차수 : 한 릴레이션에 들어 있는 속성의 수 

카디날리티 : 릴레이션의 튜플 수 시간이 지남에 따라 계속해서 변한다.

널 값 : 알려지지 않음 또는 적용할 수 없음을 나타내기 위해 사용되는 개념

릴레이션 스키마 : 릴레이션의 이름과 렐레이션의 애트리뷰트들의 집합을 말하며 릴레이션을 위한 틀

릴레이션 인스턴스 : 특정 시점에 릴레이션에 들어 있는 튜플들의 집합 시간의 흐름에 따라 변한다.

 

2. 관계형 데이터 모델 개념

2차원 테이블을 구성하여 테이블 내에 있는 속성 간의 관계를 설정하거나 테이블 간의 관계를 정의하는 DB 구조를 말한다.

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

테이블 간의 관계를 자유롭게 표현한다.

과거 계층형, 네트워크형 데이터 모델이 있엇지만 관계형 데이터 모델의 구조가 기존 데이터 모델보다 좀더 유연하여 실세계를 현실감 있게 반영할 수 있었기 때문에 많은 데이터베이스시스템에 구현되었다.

 

2. 기본 SQL

 

2.1 SQL개요 

 

1. SQL 특징

 

비절차적 언어

사용자는 자신이 우너하는 바만 명시하며, 원하는 것을 처리하는 방법은 명시하지 않는다

 

대화식 인터페이스 또는 호스트 언어에 내장된 형태로 사용할 수 있다.

대화식 SQL : 사용자가 명령문을 명령창에 입력하고 실행 절차를 확인하는 방식

내포식 SQL :  프로그래밍 언어에 SQL 문을 내포해서 응용프로그램이 실행될 때 SQL 문이 작동하는 방식

 

2. SQL 종류 

 

SQL 명령문은 사용 목적과 영향에 따라 데이터 정의어 , 제이터 조작어, 데이터 제어어로 구분한다.

데이터를 검색하는 SELECT 명령문은 데이터 질의어로 분류하거나 데이터 조작어에 포함하기도 한다.

상용관계 DBMS마다 지원하는 SQL기능에 다소 차이가 있으니 SQL 기능과 문법을 확인할 후 사용한다.

 

3. SQL 문법

전제조건

SQL은 자연어에 가까운 문법을 가지고 있어서 배우기 쉽다.

데이터를 어떻게 가져올 것인가 대신에 어떤 데이터를 원하는지만 기술해주면 되기 때문에 데이터를 다루는 작업이 매우 단순해진다.

 

SQL 명령어나 문법은 표준화되어 있으므로 대부분의 명령어는 모든 관계형 데이터베이스 제품에서 공통으로 사용할 수 있다.

 

기본규칙

SQL 명령어와 테이블명, 컬럼명과 같은 객체 이름은 대소문자를 구분하지 않으나 데이터베이스에 저장된 데이터 값은 대소문자를 구분한다.

SQL 명령문은 세미콜론으로 종료해야 한다.

 

2.2 데이터 검색

 

1. SELECT 문 형식

관계대수의 셀렉션, 프로젝션, 조인, 카티션 곱 등을 결합한 데이터 조회 명령이다.

 

2. SELECT 문을 이용한 데이터 검색

테이블에 저장된 모든 데이터를 검색하고자 할 때는 컬럼명 없이 아크테리스크 (*) 기호를 이용한다.

테이블에 저장된 데이터 중 특정 컬럼을 조회하고자 할 때는 해당 컬럼 이름을 SELECT 절 뒤에 기술한다.

SELECT 명령을 통해 검색한 결과는 중복이 포함된 상태로 출력된다. 중복을 제거한 겨로가를 검색하고자 할 때는 DISTINCT 기워드를 SELECT 뒤, 컬럼명 앞에 기술한다.

특정 조건을 만족하는 튜플을 검색하고자 할때는 WHERE 절을 사용한다. WHERE 절이 생략되면 테이블에 저장된 순서대로 모든 행을 출력한다.

와일드카드 문자를 이요하여 특정 조건을 만족하는 문자열을 포함하는 데이터를 검색한다.

-% : 문자가 없거나 하나 이상의 어떤 문자

-_ : 하나의 어떤 문자

두개 이상의 조건식을 연결하고자 할 경우 AND, OR ,NOT 연산자를 이용한다.

수치 데이터 또는 날짜 데이터에 대해 범위 검색을 하고자 할 때는 BETWEEN ~ AND 명령을 사용할 수 있다.

BETWEEN A AND B : 특정 컬럼의 값이 A 이상 B 이하에 포함되는 데이터를 검색한다.

특정 컬럼의 값이 검색하고자 하는 값 리스트에 해당하는지 검사한 후 리스트에 해당하는 데이터들을 검색하고자 할 때는 IN 연산자를 사용한다.

산술연산자를 이용해 검색결과에 연산을 수행한 결과를 확인할 수 있다. 산술 연산식을 기술하는 방식과 연관 우선순위는 일반적인 연산자 서술양식과 같다.

데이터베이스에서 아직 정해지지 않았거나, 적용할 수 없어 비워둔 값을 표기할 때는 NULL을 사용한다.

검색 결과를 정렬하고자 할 때는 ORDER BY 절을 사용한다.

SELECT한 결과는 기본적으로 튜플이 삽입된 순서대로 조회된다. 검색 결과로 출력되는 레코드들을 특정 기준에 맞춰 정렬하고자 할 겨우 ORDER BY 절을 사용한다.

ORDER BY 절에 정렬 기준이되는 컬럼과 정렬방벙 명시한다.

오름차순 : ASC 내림차순 : DESC

 

2.3 데이터 조작

 

1. INSERT 문

테이블에 새로운 레코드를 한번에 하나씩 삽입하고자 하면 기본 INSERT 문을 사용한다.

INTO 절에 컬럼명을 생략할 경우 테이블 생성 시 정의한 순서대로 값을 입력한다.

테이블에 새로운 레코드들을 한 번에 여러 개씩 삽입하고자 하면 INSERT 문에 서브쿼리를 이용한다.

VALUES 절 대신에 SELECT 절을 기술한다.

이때 SELECT 절의 컬럼의 "개수와 타입"이 INSERT INTO 절의 컬럼 "개수의 타입"과 일치해야 한다.

 

2. DELETE 문

한 테이블로부터 한개 이상의 레코드들을 삭제할 때 사용한다.

 

3. UPDATE 문

한 테이블에 들어 있는 레코드들의 컬럼 값을 수정할 떄 사용한다.

 

2.4 데이터 권한 제어 

 

1. DCL 기본 개념

데이터베이스의 규정이나 기법을 정의하고 제어하는 언어를 말한다.

사용자 권한을 부여하거나 취소하는 명령어나 트랜잭션을 제어하는 명령어를 포함한다.

-트랜잭션 제어 명령을 이요해 데이터베이스의 무결성과 보안, 회복, 도잇성 제어를 수행할 수 있다.

 

2. DCL 종류

DCL 명령어의 종류는 다음과 같다

 

COMMIT : 수행된 겨로가를 실제 물리적 디스크로 저장

ROLLBACK : 명령수행 실패를 의미한며 수행된 결과를 원복시킨다.

SAVEPOINT : 저장된 지점, 지정된 저장점부터 현재 까지 일부만 ROLLBACK 기능

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

REVOKE : 데이터베이스 사용자에게 부여된 사용권한 취소

 

3. 사용자 권한 제어 개요

데이터베이스 사용자의 권한을 제어하는 DCL 명령어는 GRANT와 REVOKE가 있다.

 

4. 권한 허가

데이터베이스의 서로 다른 객체들에 대해서 다양한 권한들이 존재한다. 객체의 생성자는 객체에 대한 모든 권한을 갖늗다.

생성자는 자신이 소유한 임의의 객체에 대한 특정 권한을 GRANT문은 사용하여 다른 사용자나 역할에게 허가할 수 있다.

 

5. 권한 취소

권한을 취소하면, 권한을 취소당한 사용자가 WITH GRANT OPTION을 통해서 다른 사용자에게허가했던 권한들도 연쇄적으로 취소된다.

기본적으로 권한을 허가했던 사람만 그 권한을 취소할 수 있다.

 

6. 역할

여러 사용자들에 대한 권한 관리를 단순화하기 위해 역할을 사용한다

역할은 사용자에게 허가할 수 있는 연관된 권한들의 그룹을 말하며, 각 사용자는 여러 역할에 속할 수 있으며 여러 사용자가 같은 역할을 가질 수 있다.

같은 권한들의 집합을 여러 사용자에게 허가하느 대신에 이 권한들을 역할에게 허가하고 역할을 각 사용자에게 허가하는 것이 편리하다.

 

7. 객체 권한과 시스템 권한

시스템 권한은 사용자가 데이터베이스에서 특정 작업을 수핼할 수 있도록 하는 권한이다.

 

객체권한은 사용자가 특정 객체에 대해 특정 연산을 수행할 수 있도록 한다. 객체의 소유자는 객체에 대한 모든 권한을 보유하며 자신의 객체에 대한 권한을 다른 사용자나 역할에게 허가할 수 있다.

 

3. 데이터베이스 객체관리

 

3.1 데이터 정의어

 

1. DDL 대상

데이터베이스 객체를 정의하는 언어를 DDL이라한다. DBMS가 관리하는 테이블과 뷰, 인덱스 등을 데이터베이스 객체라 한다.

 

2. 객체 유형

DDL을 통해 정의할 수 있는 대상, 객체 유형은 다음과 같다.

스키마 : DBMS 특성과 구현 환경을 감안한 데이터 구조

도메인 : 속성의 데이터 타입과 크기, 제약조건 등을 지정한 정보

테이블 : 데이터의 저장 공간

뷰 : 하나 이상의 물리 테이블에서 유도되는 가상의 논리 테이블

인덱스 : 검색을 빠르게 하기 위한 데이터 구조

 

3. DDL 조작 방법

객체를 생성, 변경, 제거하기 위해 다음과 같은 명령어를 사용한다.

 

생성 : CREATE

변경 : ALTER

삭제 : DROP(객체 삭제), TRUNCATE(객체 내용 삭제)

 

4. DDL문 특징

데이터베이스 스키마를 컴퓨터가 이해할 수 있도록 기술하는 데 사용한다.

주로 데이터베이스 관리자나 데이터베이스 설계자가 사용한다.

데이터베이스의 메타데이터로 dd에 저장한다.

데이터베이스 스키마를 컴퓨터가 이해할 수 있도록 기술하는데 사용한다.

논리적 데이터 구조를 정의한다.

물리적 데이터 구조를 정의 한다.

명령 실행 후 기본적으로 Auto Commit된다.

 

3.2 테이블 관리

 

1. 테이블의 개념

데이터를 저장하는 객체로서 관계형 데이터베이스 기본 단위이다.

 

2. 테이블의 특징

어느 특정한 주제와 목적으로 만들어진다.

반드시 하나 이상의 컬럼을 가진다.

등록된 자료들이 있으며, 이자료들은 삭제하지 않는 한 지속해서 유지된다.

 

3. 테이블의 구조

관계형 데이터베이스에서는 모든 데이터를 컬럼과 행의 2차원 구조로 나타낸다. 새로 방향을 컬럼, 가로방향을 행 이라고 하고 컬럼과 행이 겹치는 하나의 공간을 필드라고 한다.

 

3.3 데이터 사전

 

1. 데이터 사전 개념

데이터 사전 또는 시스템 테이블이라고도 부른다.

데이터베이스의 객체를 포함하는 시스템 데이터베이스이다.

데이터사전에 저장된 정보를 메타데이터라고 한다.

데이터사전은 관계 DBMS마다 표준화되어 있지 않아서 관계 DBMS 마다 서로 다른 형태로 시스템 카탈로그 기능을 제공한다.

사용자가 SQL 문으로 내용 검색이 가능하다.

데이터베이스 관리 시스템에 의해 생성 및 유지된다

기본 테이블, 뷰, 인덱스 등이 변경되면 자동으로 데이터사전은 갱신된다.

위치 투명성 및 중복 투며성을 제공하는 데 필요한 모든 제어 정보도 포함하고 있다.

 

4. 트랜잭션 관리

 

4.1 트랜잭션 개요

 

1. 트랜잭션 개념

데이터베이스의상태를 변화시키기 위해서 수행하는 작업의 단위를 뜻한다.

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

하나의 트랜잭션은 Commit 또는 Rollback 된다.

 

2. 트랜잭션 특징

데이터의 무결성을 보장하기 위해 DBMS의 트랜잭션이 가져야 할 특성

 

원자성 : 한가지라도 실패할 경우 전체가 취소되어 무결성 보장

일관성 : 트랜잭션이 실행 성공 후 항상 모순없이 일관성 있는 DB상태 보존

고립성 : 트랜잭션 실행 중 생성하는 연산의 중간 결과를 다른 트랜잭션 접근 불가

영속성 : 성공이 완료된 트랜잭션의 결과는 영구적으로 데이터베이스에 저장됨 

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

정보처리기사 27일차  (0) 2021.02.05
정보처리기사 26일차  (0) 2021.02.05
정보처리기사 24일차  (0) 2021.02.03
정보처리기사 23일차  (0) 2021.02.02
정보처리기사 22일차  (0) 2021.02.02

+ Recent posts