데이터 전환, 검증
데이터 전환 - ETL(Extraction, Transformation, Load)
- 운영 중인 기존 정보 시스템에 축적된 데이터를 추출, 변환, 적재하여 새로 개발할 정보시스템으로 전환하는 것
- 데이터 전환 계획서 :데이터 전환이 필요한 대상을 분석하여 데이터 전환 작업에 필요한 모든 계획을 기록하는 문서
데이터 검증-데이터 전환과정이 정상적으로 수행되었는지 여부 확인 과정
- 검증 방법 : 로그, 기본항목, 응용 프로그램, 응용 데이터, 값 검증
- 검증 단계 : 추출, 전환, DB 적재, DB 적재 후, 전환 완료 후
오류 데이터 측정 및 정제
- 고품질 데이터를 운영 & 관리하기 위해 수행
- 데이터 품질 분석 -> 오류데이터 측정 -> 오류 데이터 정제
- 상태 : Open, Assigned, Fixed, Closed, Deferred, Classified
- 데이터 정제 요청서 : 데이터 정제와 관련된 전반적인 내용을 문서로 작성한 것
- 데이터 정제 보고서 : 정재된 원천 데이터가 정상적으로 정제되었는지 확인한 결과를 문서로 작성한 것
데이터베이스
데이터 저장소
- 데이터를 논리적인 구조로 조직화하거나, 물리적인 공간에 구축한 것.
- 논리 데이터저장소 : 데이터 및 데이터 간의 연관성, 제약 조건을 식별하여 논리적인 구조로 조직화한 것
- 물리 데이터저장소 : 논리 데이터저장소를 소프트웨어가 운영될 환경의 물리적 특성을 고려하여 실제 저장장치에 저장한 것
데이터베이스(Database)
- 공동으로 사용될 데이터를 중복을 배재하여 통합하고 저장장치에 저장하여 항상 사용할 수 있도록 운영하는 운영데이터
- 데이터베이스는 다음과 같이 구분하여 정의할 수 있다.
- 통합된 데이터(Integrated Data) : 자료의 중복을 배제한 데이터의 모임
- 저장된 데이터(Stroed Data) : 컴퓨터가 접근할 수 있는 저장 매체에 저장된 자료
- 운영 데이터(Operational Data) : 조직의 고유한 업무를 수행하는 데 반드시 필요한 자료
- 공용 데이터(Shared Data) : 여러 응용 시스템들이 공동으로 소유하고 유지하는 자료
DBMS(DataBase Management System; 데이터베이스 관리 시스템)
- 사용자의 요구에 따라 정보를 생성해주고, DB를 관리해주는 소프트웨어
- 기존의 파일 시스템이 갖는 데이터의 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템
- 필수기능3가지
- 정의(Definition)기능 : 데이터의형,구조,이용방식 등을 정의&명시
- 조작(Manipulation)기능 : 데이터 검색, 삽입 등 인터페이스 제공
- 제어(Control)기능 : 데이터 무결성, 보안, 권한, 병행 제어 제공
데이터 독립성
- 데이터 종속성과 대비되는 말로, 논리적 독립성과 물리적 독립성이 있다.
- 논리적 독립성 : 응용 프로그램과 데이터베이스를 독립 -> 논리적 구족 바뀌어도 영향x
- 물리적 독립성 : 응용 프로그램과 물리기억장치를 독립 -> 디스크 추가/변경 영향 x
Schema
- 데이터베이스의 구조와 제약 조건에 관한 전반적인 명세를 기술한 것
- 외부스키마 : 사용자나 개발자 각자 필요로 하는 DB의 논리적 구조를 정의한 것
- 개념스키마 : DB의 전체적인 논리구조, 모든 개발자, 사용자가 필요로하는 데이터를 종합한 조직 전체의 DB, 하나만 존재
- 내부스키마 : 물리적 저장장치 입장에서 본 DB구조
DB설계
- 설계시 고려 사항
- 무결성 : 삽입,삭제,갱신 등의 연산 후에도 데이터베이스에 저장된 데이터가 정해진 제약 조건을 항상 만족
- 일관성 : 데이터베이스에 저장된 데이터들 사이나, 특정 질의에 대한 응답이 처음부터 끝까지 변함없이 일정해야 함
- 회복 : 시스템에 장애가 발생했을 때 장애 발생 직전의 상태로 복구할 수 있어야함
- 보안 : 불법적인 데이터의 노출 또는 변경이나 손실로부터 보호할 수 있어야함
- 효율성 : 응답시간의 단축, 시스템의 생산성, 저장공간의 최적화 등이 가능해야 함
- 데이터베이스 확장 : 데이터베이스 운영에 영향을 주지 않으면서 지속적으로 데이터를 추가할 수 있어야함
- 설계 순서
- 요구 조건 분석 : 요구조건 명세서 작성
- 개념적설계(정보모델링,개념화) : 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개념 스키마 모델링
- 트랜잭션 모델링
- 요구 조건 명세를 DBMS 독립적인 E-R 다이어그램으로 작성
- 논리적설계(데이터모델링) : 현실 세계에서 발생하는 자료를 목표 DBMS에 맞는 논리적구조로 변환(mapping)하는 과정
- 논리 스키마 설계
- 트랜잭션 인터페이스 설계
- 물리적 설계 : 논리적 구조로 표현된 데이터를 실제 물리적 구조의 데이터로 변환하는 과정
- 구현 : 목표 DBMS의 DDL로 DB를 생성 , 트랜잭션 작성
데이터 모델
- 현실 세계의 정보들을 컴퓨터에 표현하기 위해 단순화, 추상화하여 체계적으로 표현한 개념적 모형
- 데이터 모델 구성 요소
- 개체 : DB에 표현하려는 것, 개념이나 정보 단위 같은 현실 세계의 대상체(교수번호 ,성명)
- 속성 : DB를 구성하는 가장 작은 논리적 단위(속성의 수 = 차수)
- 개체 구성 방식에 따른 분류: 기본키 속성, 외래키 속성, 일반 속성
- 관계 : 개체와 개체사이의 논리적인 연결, 개채 간 관계, 속성 간 관계가 있다.
- 종류
- 개념적 데이터모델
- 논리적 데이터모델
- 물리적 데이터모델
- 표시할 요소
- 구조
- 연산
- 제약조건
개념적 데이터 모델
- 이해를 돕기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 속성들로 기술된 개체 타입과 이 개체 타입들 간의 관계를 이용하여 현실 세계를 표현
- E-R모델이 대표적 모델
- 개체와 개체 간의 관계를 기본 요소를 이용하여 현실 세계의 무질서한 데이터를 개념적인 논리 데이터로 표현하기 위한 방법
- 1976년 피터첸(Peter Chen)에 의해 제안되고 기본적인 구성요소가 정립
- 개념적 데이터 모델의 가장 대표적인 것
- 개체 타입(Entity Type)과 관계 타입(Relationship Type)을 이용해 현실세계를 개념적으로 표현
- 데이터를 개체(Entity), 관계(Relationship), 속성(Attribute)로 묘사한다.
- E-R 다이어그램으로 표현, 1:1 1:N N:M 등의 관계 유형을 제한없이 나타낼 수 있음.
논리적 데이터 모델
- 개념적 모델링 과정에서 얻은 개념적 구조를 컴퓨터 세계 환경에 맞도록 변환하는 과정
- 필드로 기술된 데이터 타입과 이 데이터 타입 간 관계로 현실 세계표현한다.
- 단순히 데이터 모델이라고 하면 보통 논리적 데이터 모델을 의미한다.
- 관계 모델, 계층 모델, 네트워크 모델로 구분
데이터 모델에 표시할 요소
- 구조(Structure) : 논리적으로 표현된 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질 표현
- 연산(Operation) : 실제 데이터를 처리하는 작업에 대한 명세
- 제약조건(Constrainit) : 실제 데이터의 논리적인 제약 조건
데이터모델의 구성요소
개채(Entity)
- 데이터베이스에 표현하려는 것으로, 사람이 생각하는 개념이나 정보 단위 같은 현실 세계의 대상체
- 속성 : 개체가 가지고 있는 특성(교수번호,성명,전공,소속)
- 개체 타입 : 속성으로만 기술된 개체의 정의
- 개체 인스턴스 : 개체를 구성하고 있는 각 속성들이 값을 가져 하나의 개체에 나타내는 것으로, 개체 어커런스(Occurrence)라고도 한다.
- 개채 세트 : 개체 인스턴스의 집합
속성(Attribute)
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 파일 구조상의 데이터 항목 또는 데이터 필드에 해당한다.
- 개체를 구성하는 항목으로 개체의 특성을 기술한다.
- 속성의 수를 디그리(Degree) 또는 차수라고 한다.
- 속성의 개체 구성 방식에 따른 분류
- 기본키속성(Primary key Attribute) : 개체를 유일하게 식별할 수 있는 속성
- 외래키속성(Foreign Key Attribute) : 다른 개체와의 관계에서 포함된 속성
- 일반속성 : 개체에 포함되어 있고 기본키, 외래키에 포함되지 않은 속성
- 속성은 속성의 특성과 개채 구성 방식에 따라 분류한다.
- 기본속성(Basic Attribute) : 업무 분석을 통해 정의한속성
- 설계속성(Design Attribute) : 설계 과정에서 도출해내는 속성
- 파생속성(Derived Attribute) : 계산이나 변형 등의 영향을 받아 발생하는 속성
관계(Relationship)
- 개체와 개체 사이의 논리적인 연결
- 개체 간의 관계와 속성 간의 관계가 있다.
- 관계의 형태
- 일대일(1:1) : 개체 집합 A의 각 원소가 개체 집합 B의 원소 한개와 대응하는 관계
- 일대다(1:N) : 개체 집합 A의 각 원소는 개체 집합 B의 원소 여러개와 대응하고 있지만, 개체집합B의 각 원소는 개체집합 A의 원소 한개와 대응하는 관계
- 다대다(N:M) : 개체 집합 A의 각 원소는 개체 집합 B의 원소 여러개와 대응하고, 개체집합 B의 각 원소도 개체집합 A의 원소 여러개와 대응하는 관계
- 관계의 종류
- 종속(Dependent) 관계 : 주&종 관계를 표현, 식별,비식별 관계
- 중복(Rebundant) 관계 : 2번 이상의 종속 관계 발생
- 재귀(Recursive)관계 : 자신과 관계
- 배타(Exculsive)관계 : 속성이나 구분자를 기준으로 개체의 특성을 분할하는 관계, 배타 AND,OR 관계로 구분
식별자(Identifier)
- 하나의 개채 내에서 각각의 인스턴스를 유일하게 구분할 수 있는 구분자
- 모든 개체는 1개이상의 식별자를 반드시 가져야 한다.
- 식별자의 분류
- 대표성 여부
- 주 식별자(Primary Identifier) : 개체를 대표하는 유일한 식별자
- 보조식별자(Alterante Identifier) : 주식별자를 대신하여 개체를 식별할 수 있는 속성
- 스스로 생성 여부
- 내부 식별자(Internal Identifier) : 개체 내에서 스스로 만들어지는 식별자
- 외부 식별자(Foreign Identifier) : 다른 개체와의 관계(Relationship)에 의해 외부 개체의 식별자를 가져와 사용하는 식별자
- 단일 속성 여부
- 단일 식별자(Single Identifier) : 주 식별자가 한 가지 속성으로만 구성된 식별자
- 복합 식별자(Composit Identifier) : 주 식별자가 두 개 이상의 속성으로 구성된 식별자
- 대체 여부
- 원조 식별자(Original Identifier) : 업무에 의해 만들어지는 가공되지 않은 원래의 식별자로, 본질식별자라고도 함.
- 대리 식별자(Surrogate Identifier) : 주 식별자의 속성이 2개이상인 경우 속성들을 하나의 속성으로 묶어 사용하는 식별자로, 인조 식별자라고도 함.
- 대표성 여부
후보 식별자
- 개체에서 각 인스턴스를 유일하게 식별할 수 있는 속성 또는 속성 집합
- 하나의 개체이는 한 개 이상의 후보 식별자가 존재할 수 있으며, 이 중 개체의 대표성을 나타내는 식별자를 주 식별자로, 나머지는 보조식별자로 지정한다.
주 식별자의 특징
- 유일성 : 개채 내의 모든 인스턴스들은 주 식별자에 의해 유일하게 구분되어야 함.
- 최소성 : 유일성을 만족시키기 위해 필요한 최소한의 속성으로만 구성되어야 함.
- 불변성 : 주 식별자가 특정 개체에 한번 지정되면, 그 식별자는 변하지 않아야 함.
- 존재성 : 주 식별자가 지정되면 식별자 속성에 반드시 데이터 값이 존재해야 함.
관계형 데이터베이스의 구조/ 관계형 데이터 모델
관계형 데이터베이스
- 2차원적 표(Table)를 이용해서 데이터 상호 관계를 정의하는 데이터베이스
- 장점: 간결하고 보기 편리하며, 다른 DB로의 변환이 용이
- 단점 : 성능이 다소 떨어짐
- 구조
- 릴레이션
- 릴레이션은 데이터들을 표의 형태로 표현한 것, 릴레이션 스키마(구조)와 릴레이션 인스턴스(실제 값)으로 구성됨.
튜플(Tuple)
- 릴레이션을 구성하는 각각의 행
- 파일 구조에서 레코드와 같은 의미
- 속성의 모임
- 튜플의 수를 카디널리티(Cardinality) OR 기수, 대응수라 부름
속성(Attribute)
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 파일 구조상의 데이터 항목 또는 데이터 필드에 해당
- 속성은 개체의 특성을 기술
- 속성의 수를 디그리(Degree) 또는 차수라고 함.
도메인(Domain)
- 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자(Atomic)값들의 집합
- 실제 애트리뷰트 값이 나타날 때 그 값의 합법 여부를 시스템이 검사하는데에도 이용된다.
- ex) '성별' 애트리뷰트의 도메인은 남,여 로 그외의값 입력x
관계형 데이터 모델(Relational Data Model)
- 2차원적인 표(Table)를 이용해서 데이터 상호 관계를 정의하는 DB구조
- 가장 널리 사용되는 데이터 모델
- 파일 구조처럼 구성한 테이블들을 하나의 DB로 묶어서 테이블 내에 있는 속성들 간의 관계(Relationship)를 설정하거나 테이블 관계를 설정하여 이용한다.
- 기본키(Primary key)와 이를 참조하는 외래키(Foreign Key)로 데이터 간의 관계를 표현한다.
관계형 데이터베이스의 제약조건 - 키(key)
- 키
- 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정려할 때 기준이 되는 속성
- 종류
- 후보키(Candidate Key) : 속성 중 튜플을 유일하게 식별하기 위해 사용되는 속성들의 부분집합
- 유일성(Unique) : 하나의 키값으로 하나의 튜플만을 유일하게 식별
- 최소성(Minimality) : 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소한의 속성으로 구성
- 기본키(Primary key) : 후보키 중 에서도 특별히 선정된 Main Key, Null 값을 가질수 없다, 중복된 값 가질수없다.
- 대체키(Alternate Key) : 후보가 둘 이상일때 기본키를 제외한 나머지 후보키. 보조키라고도 부름
- 슈퍼키(Super key) : 속성들의 집합으로 구성된 키 . 유일성 O, 최소성 X
- 외래키(Foreign Key) : 다른 릴레이션의 기본키를 참조하는 속성
- 후보키(Candidate Key) : 속성 중 튜플을 유일하게 식별하기 위해 사용되는 속성들의 부분집합
관계형 데이터베이스의 제약조건 - 무결성(Integrity)
- 무결성
- DB에 저장된 데이터 값과 그것이 포현하는 현실 세계의 실제값이 일치하는 정확성
- 종류
- 개체 무결성 : 기본키를 구성하는 어떤 속성도 Null 이나 중복 x
- 참조 무결성 : 외래키 값은 Null 이거나 참조 릴레이션의 기본키 값과 동일해야 함, 즉 릴레이션은 참조할수 없는 외래키 값을 가질 수 없다는 규정
- 도메인 무결성 : 주어진 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정
- 사용자 정의 무결성 : 속성 값들이 사용자가 정의한 제약조건에 만족되어야 한다는 규정
- NULL 무결성 : 릴레이션의 특정 속성값이 NULL이 될수없도록 하는 규정
- 고유 무결성 : 릴레이션의 특정 속성에 대해 각 튜플이 갖는 속성값들이 서로 달라야 한다는 규정
- 키 무결성 : 하나의 릴레이션에는 적어도 하나의 키가 존재해야 한다는 규정
- 관계 무결성 : 릴레이션에 어느 한 튜플의 삽입 가능 여부 또는 한 릴레이션과 다른 릴레이션의 튜플들 사이의 관계에 대한 적절성 여부를 지정한 규정
- 데이터 무결성 강화
- 데이터 무결성은 데이터 품질에 직접적인 영향을 미치므로 데이터 특성에 맞는 적절한 무결성을 정의하고 강화해야 한다.
- 데이터 무결성은 애플리케이션, 데이터베이스 트리거, 제약 조건을 이용하여 강화할 수 있다.
- 애플리케이션
- 데이터 생성,수정,삭제 시 무결성 조건을 검증하는 코드를 프로그램 내애 추가함.
- 데이터베이스 트리거
- 트리거 이벤트에 무결성 조건을 실행하는 절차형 SQL을 추가함
- 제약 조건
- 데이터베이스에 제약 조건을 설정하여 무결성을 유지함
- 애플리케이션
관계 대수 및 관계해석
관계대수
- 관계형 데이터베이스에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어
- 순수관계연산자와 일반집합연사자가 있다.
- 순수관계 연산자
- Select(σ) : 릴레이션에 존재하는 튜플 중에서 선택 조건을 만족하는 튜플의 부분집합을 구하여 새로운 릴레이션을 만드는 연산, 수평연산이라고 함
- Project(π) : 주어진 릴레이션에서 속성리스트(Attribute List)에 제시된 속성 값만을 추출하여 새로운 릴레이션을 만드는 연산 , 중복제거, 수직 연산자라고 함
- Join( ▷◁) : 공통 속성을 중심으로 2개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만드는 연산, 교차곱(Cartesian Product)을 수행한 다음 Select를 수행하는 것과 같음
- Division(÷) : 포함하는 릴레이션이 포함된 릴레이션의 속성을 제외한 속성만을 구하는 연산, X ⊃ Y 인 2개의 릴레이션 R(X)와 S(Y)가 있을 때, R의 속성이 S의 속성값을 모두 가진 튜플에서 S가 가진 속성을 제외한 속성만을 구하는 연산
- 일반 집합 연산자
- 수학적 집합 이론에서 사용하는 연산자
- 합집합(UNION, U)
- 두 릴레이션에 존재하는 튜플의 합집합을 구하되, 결과로 생성된 릴레이션에서 중복되는 튜플은 제거되는 연산
- 카디널리티 : |R∪S| ≤ |R| + |S| , 합집합의 카디널리티는 두 릴레이션 카디널리티 합보다 크지않다.
- 교집합(INTERSECTION, ∩)
- 두 릴레이션에 존재하는 튜플의 교집합을 구하는 연산
- 카디널리티 : |R∩S| ≤ Min{|R|, |S|} , 교집합의 카디널리티는 두 릴레이션 중 카디널리티가 적은 릴레이션의 카디널리티 보다 크지 않다.
- 차집합(DIFFERENCE, -)
- 두 릴레이션에 존재하는 튜플의 차집합을 구하는 연산
- 카디널리티 : |R-S| ≤ |R| , 차집합의 카디널리티는 릴레이션 R의 카디널리티보다 크지 않다.
- 교차곱(CARTESIAN PRODUCT, X)
- 두 릴레이션에 존재하는 튜플들의 결합된 정보를 구하는 연산
- 카디널리티 : |R×S| = |R|×|S|, 카티시언 카디널리티는 두 릴레이션 카디널리티를 곱한 것과 같다.
관계해석
- 관계 데이터의 연산을 표현한는 방법
- 원하는 정보가 무엇이라는 것만을 정의하는 비절차적 특성을 지님
- 관계 대수와 관계 해석은 관계형 DB를 처리하는 기능과 능력면에서 동등하며, 관계대수로 표현한 식은 관계해석으로 표현 할 수 있음
이상/함수적 종속
이상(Anomaly)
- 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고, 이 중복(Redundancy)으로 인해 테이블 조작 시 문제가 발생하는 현상
- 이상의 종류(테이블 조작 중 발생)
- 삽입이상(Insertion Anomaly) : 테이블에 데이터를 삽입할 때 의도와는 상관없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 삭제이상(Deletion Anomaly) : 테이블에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는, 즉 연쇄 삭제가 발생하는 현상
- 갱신이상(Update Anomaly) : 테이블에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보에 불일치성(Inconsistency)이 생기는 현상
함수적 종속(Functional Dependency)
- 어떤 테이블 R에서 X와Y를 각각 R의 속성 집합의 부분집합이라 하자.
- 속성 X의 값 각각에 대해 시간에 관계없이 항상 속성 Y의 값이 오직 하나만 연관되어 있을 때 Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다고 하고, X->Y로 표기한다.
- 함수적 종속은 데이터의 의미를 표현하는 것으로, 현실 세계를 표현하는 제약조건이 되는 동시에 데이터베이스에서 항상 유지 되어야 할 조건이다.
- 완전 함수적 종속
- 어떤 테이블 R에서 속성 Y가 다른 속성 집합X 전체에 대해 함수적 종속이면서 속성 집합X의 어떠한 진부분집합Z에도 함수적 종속이 아닐때 속성 Y는 속성 집합X에 완전 함수 종속이라고한다.
- 어떤 속성이 기본키에 대해 완전시 종속적일때를말한다.
- 수강테이블에서 학번, 과목번호가 기본키인데, 성적은 학번과 과목번호가 같을 경우에는 항상 같은 성적이 나오므로(즉, 성적은 학번과 과목번호에 의해서만 결정되므로) 성적은 기본키(학번,과목번호)에 완전 함수적종속
- 부분 함수적 종속
- 어떤 테이블 R에서 속성 Y가 다른 속성 집합X 전체에 대해 함수적 종속이면서 속성 집합X의 임의의 진부분 집합에 대해 함수적 종속일때 속성 Y는 속성 집합X에 부분함수적종속이라고 한다.
- 학년은 과목번호에 관계없이 학번이 같으면 항상 같은 학년이 나오므로(즉 기본키의 일부인 학번에 의해서 결정)학년은 부분 함수적 종속이라고 한다.
정규화(Normalization)
- 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해하는 과정
- 무손실 분해
- 테이블 R의 프로젝션(특정 테이블에서 일부 속성들만 추출하여 만든 테이블)인 R1,R2가 NATURAL JOIN을 통해 원래의 테이블 R로 정보 손실 없이 복귀되는 경우, R은 R1과 R2로 무손실 분해되었다고 한다.
- 무손실 분해
- 정규화의 목적
- 가능한 중복을 제거하여 삽입, 삭제, 갱신 이상의 발생 가능성을 줄이는 것
- 도부이결다조
- 제 1정규형(1NF; First Normal Form) : 테이블에 속한 모든 속성의 도메인이 원자값으로 구성된 정규형
- 제 2정규형(2NF; Second Normal Form) : 테이블이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형(부분함수적 종속x)
- 제 3정규형(3NF; Third Normal Form) : 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수적 종속을 만족하지 않는 정규형
- BCNF(Boyce-Codd Normal Form) : 모든 결정자가 후보키(Candidate Key)인 정규형
- 제 4정규형(4NF; Fourth Normal Form) : 다중 값 종속(mvd; multi valued dependency) a->b가 존재할 경우 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형
- 제 5정규형(5NF; Fifth Normal Form) : 모든 조인 종속이 후보키를 통해서만 성립되는 정규형
반정규화(Denormalization)
- 시스템 성능 향상 등의 목적으로 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리 하여 정규화 원칙을 위배하는 행위
- 테이블 통합 : 2개의 테이블이 조인(Join)되어 사용되는 경우가 많을 경우 성능 향상을 위해 아예 하나의 테이블로 만들어 사용하는것
- 고려하는경우
- 테이블 간 발생하는 프로세스가 동일하게 자주 처리되는 경우
- 항상 두 개의 테이블을 이용하여 조회를 수행하는 경우
- 종류
- 1:1 관계 테이블 통합
- 1:N 관계 테이블 통합
- 슈퍼타입(상위개체)/서브타입(하위개체) 테이블 통합
- 고려하는경우
- 테이블 분할 : 테이블을 수직 or 수평으로 분할
- 수직 분할 : 하나의 테이블에 속성이 너무 많을경우 속성을 기준으로 테이블을 분할
- 종류 : 갱신 위주의 속성분할, 자주 조회되는 속성분할, 크기가 큰 속성분할, 보안을 적용해야 하는 속성분할
- 수평 분할 : 레코드를 기준으로 테이블을 분할하는 것, 레코드별로 상요 빈도의 차이가 큰 경우 사용 빈도에 따라 테이블을 분할함.
- 수직 분할 : 하나의 테이블에 속성이 너무 많을경우 속성을 기준으로 테이블을 분할
- 중복 테이블추가 : 작업의 효율성을 향상시키기 위해 테이블을 추가하는 것
- 추가하는경우
- 여러 테이블에서 데이터를 추출해서 사용해야 할 경우
- 다른 서버에 저장된 테이블을 이용해야 하는 경우
- 추가 방법
- 집계 테이블의 추가 : 집계 데이터를 위한 테이블 생성 , 원본 테이블에 트리거(Trigger)를 설정하여 사용
- 진행 테이블의 추가 : 이력 관리 등의 목적으로 추가하는 테이블
- 특정 부분만을 포함하는 테이블의 추가 : 데이터가 많은 테이블의 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블을 생성
- 추가하는경우
- 중복 속성 추가 : 조인해서 데이터를 처리할 때 데이터를 조회하는 경로를 단축하기 위해 자주 사용되는 속성을 하나 더추가하는 것
- 추가하는경우
- 조인이 자주 발생하는 경우
- 접근 경로가 복잡한 경우
- 액세스 조건으로 자주 사용되는 속성인 경우
- 기본키 형태가 적절치 않거나 여러개 속성으로 구성된경우
- 추가하는경우
시스템 카탈로그(System Catalog)
- 시스템 그 자체에 관련이 있는 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
- 카탈로그들이 생성되면 데이터사전(Data Dictionary)에 저장되기 때문에 좁은 의미로는 카탈로그를 데이터 사전이라고 한다.
메타 데이터(Meta-Data)
- 시스템 카탈로그에 저장된 정보
- 메타 데이터 유형
- 데이터베이스 객체 정보
- 사용자 정보
- 테이블의 무결성 제약 조건 정보
데이터 디렉터리(Data Directory)
- 데이터 사전에 수록된 데이터에 접근하는 데 필요한 정보를 관리 유지하는 시스템
- 시스템 카탈로그는 사용자와 시스템 모두 접근할 수 있지만, 데이터 디렉터리는 시스템만 접근할 수 있다.
데이터베이스 저장 공간 설계
- 데이터베이스에 데이터를 저장하려면 테이블이나 컬럼 등 실제 데이터가 저장되는 공간을 확보해야 한다.
- 테이블(Table)
- 데이터베이스의 가장 기본적인 객체
- 로우(row,행)와 컬럼(Column,열)로 구성되어 있음
- 데이터베이스의 모든 데이터는 테이블에 저장됨
- 컬럼(Column)
- 테이블의 열을 구성하는 요소
- 데이터타입(Data Type), 길이(Length) 등으로 정의됨
- 테이블스페이스(TableSpace)
- 테이블이 저장되는 논리적인 영역
- 한 개의 테이블스페이스에 한개이상의 테이블을 저장할 수 있음
테이블 종류
- 일반테이블 : 대부분의 DBMS에서 표준 테이블로 사용되는 테이블 형태, 힙구조테이블이라고도한다.
- 클러스터드인덱스테이블(Clustered Index Table) : 기본키(Primary key)나 인덱스키의 순서에 따라 데이터가 저장되는 테이블, 일반적인 인덱스를 사용하는 테이블에 비해 접근 경로 단축
- 파티셔닝 테이블(Partitioning Table) : 대용량의 테이블을 작은 논리적 단위인 파티션(Partition)으로 나눈 테이블
- 외부 테이블(External Table) : 데이터베이스에서 일반 테이블처럼 이용할 수 있는 외부 파일, 데이터베이스 내에 객체로 존재함
- 임시 테이블(Temporay Table) : 트랜잭션이나 세션별로 데이터를 저장하고 처리할 수 있는 테이블, 임시 테이블에 저장된 데이터는 트랜잭션이 종료되면 삭제됨.
트랜잭션 분석 / CRUD 분석
트랜잭션(Transaction)
- 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들
- 특성
- Atomicity(원자성) : 트랜잭션 연산은 모두 반영되도록 완료(Commit)되든지 아니면 전혀 반영되지 않도로 복구(Rollback)되어야함
- Consistency(일관성) : 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환됨
- Isolation(독립성) : 둘이상의 트랜잭션이 동시에 병행실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어들 수 없음
- Durability(영속성) : 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 함.
CRUD분석
- 프로세스와 테이블 간에 CRUD 매트릭스를 만들어서 트랜잭션을 분석하는 것
- CRUD 매트릭스
- 2차원 형태의 표로서, 행(Row)에는 프로세스를, 열(Column)에는 테이블을, 행과 열이 만나는 위치에는 프로세스가 테이블에 발생시키는 변화를 표시하여 프로세스와 데이터 간의 관계를 분석하는 분석표
트랜잭션 분석
- CRUD 매트릭스를 기반으로 테이블에 발생하는 트랜잭션 양을 분석하여 테이블에 저장되는 데이터의 양을 유추하고 이를 근거로 DB의 용량 산정 및 구조의 최적화를 목적으로 한다.
- 트랜잭션 분석서
- 단위 프로세스와 CRUD 매트릭스를 이용하여 작성
인덱스
- 인덱스(Index) : 데이터 레코드를 빠르게 접근하기 위해 <키값, 포인터> 쌍으로 구성되는 데이터 구조
- 삽입,수정이 많은 경우에는 인덱스를 최소화하는게 더욱효율적
- 종류
- 트리기반인덱스 : 인덱스를 저장하는 블록들이 트리구조를 이루고 있는 것
- 비트맵인덱스 : 인덱스 컬럼의 데이터를 Bit값인 0 또는 1로 변환하여 인덱스 키로 사용하는 방법
- 함수기반인덱스 : 컬럼의 값 대신 컬럼에 특정함수(Function)나 수식(Expression)을 적용하여 산출된 값을 사용하는 것
- 비트맵 조인 인덱스 : 다수의 조인된 객체로 구성된 인덱스
- 도메인 인덱스 : 개발자가 필요한 인덱스를 직접 만들어 사용하는 것
- 클러스터드 인덱스(Clustered Index) : 인덱스 키의 순서에 따라 데이터가 정렬되어 저장되는 방식, 검색속도빠름
- 넌클러스터드 인덱스(Non-Clustered Index) : 인덱스의 키 값만 정렬되어 있고 실제 데이터는 정렬되지 않는 방식, 삽입,삭제 발생 시 순서 유지를 위해 데이터 재정렬 필요
- 종류
뷰/클러스터
뷰(View)
- 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된, 이름을 가지는 가상테이블, 물리적으로 존재 x 사용자에게 있는 것처럼 간주
- 장점
- 논리적 데이터 독립성을 제공
- 동일 데이터에 대해 동시에 여러 사용자의 상이한 응용이나 요구를 지원함
- 사용자 데이터 간편하게 관리
- 접근 제어를 통한 자동 보완
- 단점
- 독립적인 인덱스 x
- 뷰 정의 변경 불가
- 삽입,갱신,삭제 연산에 제약
클러스터(Cluster)
- 클러스터는 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장방법
- 조회 속도 up, 삽입 삭제 성능 down
- 클러스터는 데이터의 분포도가 넓을수록 유리
- 분포도, 선택성(Selectivity)
- (조건에 맞는 레코드 수 / 전체 릴레이션 레코드 수) * 100
- 전체 레코드 중 조건에 맞는 레코드의 숫자가 적은 경우 분포도가 좋다고 한다.
- 인덱스는 분포도가 좁은 테이블이 좋지만, 클러스터링은 분포도가 넓은 테이블에 유리
- 분포도, 선택성(Selectivity)
- 데이터 분포도가 넓은 테이블을 클러스터링 하면 저장 공간을 절약
- 처리범위가 넓은 경우 단일 테이블 클러스터링. 조인이 많이 발생하는 경우 다중 테이블 클러스링을 사용
파티션
- 파티션(Partition) : 대용량 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것, 데이터 처리는 테이블 단위, 데이터 저장은 파티션 단위
- 장점
- 액세스 범위가 줄어 쿼리 성능 향상
- 데이터 분산으로 디스크 성능 향상
- 장애 시 데이터 손상 정도 최소화
- 데이터 가용성 향상
- 입출력 분산
- 단점
- 세심한 관리 필요
- 조인 비용 증가
- 작은 용량 테이블 파티셔닝은 오히려 성능 저하 야기
- 종류
- 범위(Range)분할 : 지정한 열 기준으로 분할
- 해시(Hash)분할 : 해시 함수 적용 결과 기준. 고르게 분산(주민번호,고객번호 등)할때 유용
- 조합(Composite)분할 : 범위 분할 후 해시분할
분산 데이터베이스 설계
데이터베이스 용량 설계
- 데이터가 저장될 공간을 정의하는 것
- 데이터베이스 용량을 설계할 때는 테이블에 저장될 데이터 양과 인덱스, 클러스터 등이 차지하는 공간 등을 예측하여 반영해야 한다.
- 데이터베이스 용량 설계의 목적
- 데이터베이스의 용량을 정확히 산정하여 디스크의 저장 공간을 효과적으로 사용하고 확장성 및 가용성을 높인다
- 디스크의 특성을 고려하여 설계함으로써 디스크의 입출력 부하를 분산시키고 채널의 병목 현상을 최소화시킨다.
분산 데이터베이스 설계
- 논리적으로 하나의 시스템에 속하지만, 물리적으로는 네트워크를 통해 연결된 여러개의 사이트(Site)에 분산된 데이터베이스를 말한다.
- 목표
- 위치 투명성(Location Transparency) : 액세스하려는 db의 실제 위치와 상관없이 논리적 명칭만으로 액세스
- 중복 투명성(Replication Transparency) : 동일 데이터가 여러 곳에 중복되어 있더라도 마치 하나의 데이터처럼 사용
- 병행 투명성(Concurrency Transparency) : 분산 DB에 다수 트랜잭션이 동시에 실현되더라도 결과에 영향 X
- 장애 투명성(Failure Transparency) : 장애 발생 시에도 정확한 트랜잭션 처리
- 방법
- 테이블 위치 분산 : 테이블을 각기 다른 서버에 분산시켜 배치하는 방법
- 분할(Fragmentation) : 테이블 내 데이터를 분산
- 규칙 : 완전성(Completeness), 재구성(Reconstruction), 상호중첩배제(Disjointness)
- 수평 분할 : 특정 속성의 값을 기준으로 행(Row) 단위로 분할
- 수직 분할 : 데이터컬럼(속성) 단위로 분할
- 할당(Allocation) : 동일한 분할을 여러개의 서버에 생성, 중복이 있는할당, 중복이없는할당 으로 나뉨
데이터베이스 이중화/ 서버 클러스터링
데이터베이스 이중화(Database Replication)
- 동일한 db를 복제하여 관리하는 것 db 부하를 줄이고 손쉽게 백업 서버 운영이 가능, 즉시 문제 해결 가능
- 여러개의 데이터베이스를 동시에 관리하므로 사용자가 수행하는 작업은 데이터베이스 이중화 시스템에 연결된 다른 데이터베이스에도 동일하게 적용
- 분류
- Eager기법 : 트랜잭션 중 db 변경 발생 시 , 즉시 변경 사항 적용
- Lazy기법 : 트랜잭션 중 db변경 발생 시, 이후에 새로운 트랜잭션을 생성하여 변경 사항 적용
- 구성 방법
- 활동-대기(Active-Standby) : 현 db가 활성 상태로 서비스하고 있으면 다른 db는 대기하고 있다가 활성 db에 장애가 발생하면 대기 상태에 있던 db가 자동으로 모든 서비스를 대신 수행함, 구성방법과관리가 쉬워 많은 기업이용
- 활동-활동(Active-Active) : 두개의 db가 서로 다른 서비스를 제공하다가 둘 중 한쪽 db에 문제가 발생하면 나머지 다른 db가 서비스를 제공함, 처리율이 높지만 구성방법 및 설정이 복잡함
클러스터링(Clustering)
- 두 대 이상의 서버를 하나의 서버처럼 운영하는 기술
- 서버 이중화 및 공유 스토리지를 사용하여 서버의 고가용성을 제공
- 공유 스토리지(NAS; Network Attached Stroage) : 데이터 저장소를 네트워크로 연결하여 파일 및 데이터를 공유하는 것으로, 다수의 사용자 또는 서버가 데이터를 안전하고 편리하게 공유할 수 있다.
- 고가용성(HA; High Availability) : 시스템을 오랜 시간동안 계속해서 정상적으로 운영이 가능한 성질
- 클러스터링 종류
- 고가용성 클러스터링 : 하나의 서버에 장애가 발생하면 다른 노드(서버)가 받아 처리하여 서비스 중단을 방지하는 방식, 일반적인 클러스터링
- 병럴 처리 클러스터링 : 전체 처리율을 높이기 위해 하나의 작업을 여러개의 서버에서 분산하여 처리하는 방식
RTO/PRO
- RTO(Recovery Time Objective, 목표 복구 시간) : 비상사태 또는 업무 중단 시점으로부터 복구되어 가동될 때까지의 소요시간
- RPO(Recovery Poin Objective, 목표 복구 지점) : 비상사태 또는 업무 중단 시점으로부터 데이터를 복구할 수 있는 기준점
데이터베이스 보안
데이터베이스 보안
- 데이터베이스의 일부 또는 전체에 대해서 권한이 없는 사용자가 액세스하는 것을 금지하기 위해 사용되는 기술
암호화 (Encryption)
- 데이터를 보낼 때 송신자가 지정한 수신자 이외에는 그 내용을 알 수없도록 평문을 암호문으로 변환하는 것
- 암호화(Encryption)과정 : 암호화되지 않은 평문을 암호문으로 바꾸는 과정
- 복호화(Decryption)과정 : 암호문을 원래의 평문으로 바꾸는 과정
- 암호화 기법
- 개인키 암호화 방식(Private Key Encryption)
- 공개키 암호화 방식(Public Key Encryption)
- 암호화 기법
접근 통제
- 데이터가 저장된 객체와 이를 사용하려는 주체 사이의 정보 흐름을 제한하는 것
- 접근 통제 3요소 : 정책, 매커니즘, 보안 모델
- 접근 통제 기술
- 임의 접근 통제(DAC; Discretionary Access Control) : 주체의 신원에 따라 접근 권한을 부여하는 방식, 데이터 소유자가 통제 권한 지정
- 강제 접근 통제(MAC; Mandatory Access Control) : 주체의 인가등급과 객체의 보안등급을 비교하여 접근 권한을 부여, 시스템이 통제 권한 지정
- 역할기반 접근 통제(RBAC; Role Based Access Control) : 주체의 역할에 따라 접근 권한 부여, 중앙관리지가 통제 권한 지정, 임의 접근통제와 강제 접근통제의 단점을 보완, 다중프로그래밍에 최적화
- 접근 통제 정책
- 육하원칙에 따라 허용 여부 결정
- 접근 통제 정책 종류
- 신분기반정책 : 주체의 신원에 근거
- IBP(Individual-Based Policy) : 최소 권한 정책, 단일 주체에게 하나의 객체에 대한 허가를 부여함
- GBP(Group-Based Policy) : 복수 주체에 하나의 객체에 대한 허가를 부여함.
- 규칙기반정책 : 주체가 갖는 권한에 근거하여 객체의 접근을 제한하는 방법
- MLP(Multi-Level Policy) : 사용자나 객체별로 지정된 기밀 분류에 따른 정책
- CBP(Compartment-Based Policy) : 집단별로 지정된 기밀 허가에 따른 정책
- 역할기반정책 : GBP의 변형된 정책으로, 주체의 신분이 아니라 주체가 맡은 역할에 근거하여 객체의 접근을 제한하는 방법
- 신분기반정책 : 주체의 신원에 근거
- 접근통제 매커니즘
- 정의된 접근통제 정책을 구현하는 기술적인 방법
- 접근통제목록(Access Control List) : 객체를 기준으로 특정 객체에 대해 어떤 주체가 어떤 행위를 할 수 있는지를 기록한 목록
- 능력 리스트(Capability List) : 주체를 기준으로 주체에게 허가된 자원 및 권한을 기록한 목록
- 보안등급
- 패스워드
- 암호화
- 정의된 접근통제 정책을 구현하는 기술적인 방법
- 접근 통제 보안 모델
- 보안 정책을 구현하기 위한 정형화된 모델
- 접근통제 보안 모델의 종류
- 기밀성 모델 : 군사적인 목적으로 개발된 최초의 수학적 모델
- 무결성 모델 : 기밀성 모델에서 발생하는 불법적인 정보변경을 방지하기 위해 무결성을 기반으로 개발된 모델
- 접근통제 모델 : 접근통제 매커니즘을 보안 모델로 발전시킨것, 대표적으로 접근통제행렬(Access Control Matrix)
- 접근통제행렬 : 임의적인 접근통제를 관리하기 위한 모델로, 행은 주체, 열은 객체 즉 행과 열로 주체와 객체의 권한 유형을 나타냄
- 접근 통제 조건
- 접근통제 매커니즘의 취약점을 보안하기 위해 접근통제 정책에 부가하여 적용할 수 있는 조건
- 값 종속 통제(Value-Dependent Control) : 일반적으로 객채에 저장된 값에 상관없이 접근통제를 동일하게 허용하지만, 값 종속 통제는 객체에 저장된 값에 따라 다르게 접근통제를 허용해야 하는 경우 사용
- 다중 사용자 통제(Multi-User Control) : 지정된 객체에 다수의 사용자가 동시에 접근을 요구하는 경우에 사용
- 컨텍스트 기반 통제(Context-Based Control) : 특정시간,네트워크주소,접근경로,인증 수준등에 근거하여 접근을 제어하는 방법
감사추적
- 사용자나 애플리케이션이 데이터베이스에 접근하여 수행한 모든 활동을 기록하는 기능
데이터베이스 백업
- 전상 장비의 장애에 대비하여 데이터베이스에 저장된 데이터를 보호하고 복구하기 위한 작업
- 로그파일
- 데이터베이스의 처리내용이나 이용상황 등 상태변화를 시간의 흐름에 따라 모두 기록한 파일
- 백업 종류
- 복구 수준에 따라서 운영체제를 이용하는 물리백업과 DBMS 유틸리티를 이용하는 논리백업으로 나뉜다.
- 물리백업 : 데이터베이스 파일을 백업하는 방법, 빠르고 단순, 원인파악 및 해결 어렵다
- 논리 백업 : db내의 논리적 객체들을 백업하는 방법, 원인파악 및 해결 수월, 시간많이소요
- 복구 수준에 따라서 운영체제를 이용하는 물리백업과 DBMS 유틸리티를 이용하는 논리백업으로 나뉜다.
스토리지
- 스토리지(Stroage) : 단일 디스크로 처리할 수 없는 대용량의 데이터를 저장하기 위해 서버와 저장장치를 연결하는 기술
- 종류
- DAS(Direct Attached Storage) :서버와 저장장치를 전용 케이블로 직접 연결, 외장하드가 여기 해당
- 장점 : 비용 저렴
- 단점 : 다른서버접근X, 확장성 + 유연성이 떨어짐
- NAS(Network Attached Storage) : 서버와 저장장치를 네트워크를 통해 연결하는 방식, Nas Storage가 내장된 저장장치를 직접 관리
- Ethernet 스위치를 통해 다른 서버에서 접근가능
- 확장성+유연성 좋음
- SAN(Storage Area Network) : 서버와 저장장치를 연결하는 전용 네트워크를 별도로 구성하는 방식
- 파이버 채널 스위치를 이용하여 빠른 속도로 다른 서버와 파일 공유
- 확장성, 유연성, 가용성이 뛰어남
- DAS(Direct Attached Storage) :서버와 저장장치를 전용 케이블로 직접 연결, 외장하드가 여기 해당
자료구조
자료구조
- 자료를 기억장치의 공간 내에 저장하는 방법과 자료간의 관계, 처리 방법 등을 연구 분석하는 것
- 선형구조(Linear Structure)
- 배열(Array) : 크기와 형(type)이 동일한 자료들이 순서대로 나열된 자료의 집합
- 연속리스트(Contiguous List) : 배열과 같이 연속되는 기억장소에 저장되는 자료구조
- 연결리스트(Linked List) : 자료들을 임의이 기억공간에 기억시키되, 노드의 포인터부분을 이용하여 서로 연결시킨 자료구조
- 스택(Stack) : 리스트의 한쪽 끝으로만 자료의 삽입, 삭제가 이루어지는 자료구조(LIFO;Last In First Out 후입선출) , 오버플로(Overflow), 언더플로(Underflow)
- 큐(Queue) : 리스트의 한쪽에는 삽입 작업, 다른 한쪽에서는 삭제 작업이 이루어지는 자료구조(FIFO; First In First Out 선입선출)
- 비선형구조(Non-Linear Structure)
- 그래프(Graph) : 정점(Vertex)와 간선(Edge)의 두집합으로 이루어지는 자료구조
- 사이클이 없는 그래프를 트리
- 간선의 방향성에 따라 방향그래프, 무방향 그래프
- 방향그래프의 최대 간선수 : n(n-1)
- 무방향 .. : n(n-1)/2
- 트리(Tree) : 정점(Node,노드)와 선분(Branch, 가지)를 이용하여 사이클을 이루지 않도록 구성한 그래프(Graph)의 특수한 형태
- 노드 : 기억공간, 링크:노드와 노드를 연결하는 선
- 디그리(Degree, 차수 ) : 각 노드에서 뻗어나온 가지 수
- 단말노드(Terminal Node) = 잎노드(Leaf Node) : 자식이 하나도 없는
- 깊이(Depth ,Height ) ;트리에서 노드가 가질 수 있는 최대의 레벨
- 트리의 디그리 : 디그리 중 가장 많은 수
- 이진트리 : 차수(Degree)가 2 이하인 노드를로 구성된 트리
- Preorder : 가운데 -> 왼쪽 -> 오른쪽
- Inorder: 왼쪽 -> 가운데 -> 오른쪽 ,
- Postorder : 왼쪽 -> 오른쪽 -> 가운데,
- 그래프(Graph) : 정점(Vertex)와 간선(Edge)의 두집합으로 이루어지는 자료구조
정렬(Sort)
- 삽입정렬(Insertion Sort)
- 가장 간단한 정렬 방식, 이미 순서화된 파일에 새로운 하나의 레코드를 순서에 맞게 삽입시켜 정렬하는 방식
- 평균 , 최악 : O(N^2)
- 현재키값을 기준으로 바로앞자리의 키부터 첫번째 키값까지 비교하며 정렬
- 선택정렬(Selection Sort)
- n개의 레코드 중에서 최소값을 찾아서 첫번째레코드위치에 놓고, 나머지(n-1)개 중에서 다시 최소값을 찾아 두번째 레코드 위치에 놓는 방식을 반복하여 정렬하는 방식
- 평균,최악 : O(N^2)
- 첫번째키를 기준으로 바로뒤키부터 마지막키깞까지 비교하며 정렬
- 버블정렬(Bubble Sort)
- 인접한 2개의 레코드 키값을 비교
- 평균,최악 : O(N^2)
- 계속 인접한 2개의 레코드 비교해서 작으면 앞으로
- 쉘 정렬(Shell Sort)
- 매개변수의 값으로 서브파일을 구성하고, 각 서브파일을 삽입(Insertion)정렬 방식으로 순서 배열하는 과정을 반복하는 정렬방식
- 삽입정렬 확장한 개념
- 평균 : O(n^1.5) , 최악 : O(n^2)
- 퀵 정렬(Quick Sort)
- 키를 기준으로 작은 값은 왼쪽, 큰 값은 오른쪽 서브파일에 분해시키는 과정을 반복하는 정렬방식
- 평균: O(nlog₂n) , 최악 : O(n^2)
- 2-Way 합병 정렬(Merge Sort)
- 이미 정렬되어 있는 2개의 파일을 1개의 파일로 합병하는 정렬 방식
- 평균 최악 ; O(nlog₂n)
- 기수 정렬(Radix Sort)= 버킷정렬(Bucket Sort)
- 큐(Queue)를 이용하여 자릿수(Digit)별로 정렬하는 방식
- 평균, 최악 : O(dn)
'정보처리기사 > 실기' 카테고리의 다른 글
정보처리기사 정리본(1,2,4) (0) | 2023.04.17 |
---|---|
정보처리기사 - 7. 애플리케이션 테스트 관리 (1) | 2023.04.16 |
정보처리기사 - 4.서버 프로그램 구현 (2) | 2023.04.16 |
정보처리기사 - 6.화면설계 (0) | 2023.04.14 |
정보처기기사 - 1.요구사항 확인 (0) | 2023.04.12 |