📢2장 : 데이터 입출력 구현
정보처리기사 : 1장 - 요구사항 확인
정보처리기사 : 2장 - 데이터 입출력 구현
정보처리기사 : 3,4장 - 통합 구현, 서버 프로그램 구현
📢29. 데이터베이스 개요
📌데이터베이스
- 여러사람에 의해 공동으로 사용될 데이터를 중복을 배제하여 통합하고, 쉽게 접근하여 처리할 수 있도록 저장장치에 저장하여 항상 사용할 수 있도록 운영하는 운영 데이터이다.
- 통합된 데이터
- 저장된 데이터
- 운영 데이터
- 공동 데이터
📌DBMS
- DataBase Management System; 데이터베이스 관리 시스템
- 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해주는 소프트웨어
- ⭐DBMS의 필수기능 3가지
- 정의(Definition) 기능
- 조작(Manpulation) 기능
- 제어(Contril) 기능
📌데이터 독립성
- 논리적 독립성 : 응용 프로그램과 데이터베이스를 독립
- 물리적 독립성 : 응용 프로그램과 보조기억장치 같은 물리적 장치를 독립
📌스키마(Schema)
📍외부 스키마
- ⭐사용자나 프래그래머가 각 입장에서 필요로 하는 데이터베이스의 논리적 구조를 정의한 것
📍개념 스키마
- ⭐데이터베이스의 전체적인 논리적 구조
- 모든 사용자들이 필요로하는 데이터를 종합한 조직 전체의 데이터베이스
- 하나만 존재함
📍내부 스키마
- ⭐물리적 저장장치의 입장에서 본 데이터베이스의 구조
- 실제로 저장될 레코드의 형식, 저장 데이터 항목의 표현 방법, 내부 레코드의 물리적 순서
📢30. 데이터베이스 설계
📌데이터베이스 설계 순서
- 요구 조건 분석 : 요구 조건 명세서 작성
- ⭐개념적 설계 : 개념 스키마 설계, 트랜잭션 모델링, E-R 모델
- ⭐논리적 설계 : 논리 스키마 설계, 트랜잭션 인터페이스 설계
- ⭐물리적 설계 : 물리적 구조의 데이터로 변환
- ⭐구현 : DDL(데이터 정의어)로 데이터베이스 생성, 트랜잭션 작성
📍개념적 설계
- ✂정보 모델링, 개념화
- 개념적 설계는 다른 사람과 통신하기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
📍논리적 설계
- ✂데이터 모델링
- 논리적 설계는 현실 세계에서 발생하는 자료를 컴퓨터가 이해하고 처리할 수 있는 물리적 저장장치에 저장할 수 있도록 변환하기 위해 논리적 자료구조로 변환(Mapping)시키는 과정
📍물리적 설계
- ✂데이터 구조화
- 물리적 설계는 논리적 설계에서 논리적 구조로 표현된 데이터를 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정
📍구현
- 데이터베이스 구현은 논리적 설계와 물리적 설계에서 도출된 데이터베이스 스키마를 파일로 생성하는 과정
📢31. 데이터 모델의 개념
- 데이터 모델은 현실 세계의 정보들을 컴퓨터에 표현하기 위해서 단순화, 추상화하며 체계적으로 표현한 개념적 모형
📌데이터모델에 표시할 요소
- ⭐구조 : 논리적으로 표현된 개체 타입들간의 관계로서 데이터 구조 및 정적 설질 표현
- ⭐연산 : 데이터베이스에 저장된 실제 데이터를 처리하는 작업에 대한 명세로서 데이터베이스를 조작하는 기본 도구
- ⭐제약 조건 : 데이터베이스에 저장될 수 있는 실제 데이터의 논리적인 제약 조건
📢33. E-R 모델
- E-R (Entity - Relationship) 개체-관계 모델
- E-R 모델은 개체와 개체간의 관계를 기본요소로 이용하여 현실 세계의 무질서한 데이터를 개념적인 논리 데이터로 표현하기 위한 방법
- 개체 타입과 이들간의 관계 타입으로 현실 세계를 개념적으로 표현하는 방법
⭐개체 타입 : 사각형
⭐관계 타입 : 마름모
⭐속성 : 타원
다중값 속성 : 이중 타원
📢34. 관계형 데이터베이스
- 관계형 데이터베이스는 2차원적인 표(Table)를 이용해서 데이터 상호 관계를 정의하는 데이터베이스
⭐릴레이션 : 데이터들을 테이블의 형태로 표현한 것
⭐튜플 : 릴레션을 구성하는 각각의 행
⭐속성 : 데이터베이스를 구성하는 가장 작은 논리적 단위 (열)
⭐도메인 : 각각의 열이 취할 수 있는 같은 타임의 원자값의 집합
❗관계형 데이터 모델 : 데이터베이스에서 2차원 구조의 표 또는 테이블을 이용하여 데이터 상호 관계를 정의하는 DB 구조를 의미하는 데이터 모델
📢35. 제약조건-키(Key)
- 키는 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성
- 키의 종류
- ⭐후보키(Candidate Key)
- ⭐기본키(Primary Key)
- ⭐대체키(Alternate Key)
- ⭐슈퍼키(Super Key)
- ⭐외래키(Foreign Key)
📌후보키
📌기본키
- 후보키 중에서 특별히 선정된 주키
- 중복된 값을 가질 수 없다.
- NULL값을 가질 수 없다.
📌대체키
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키
📌슈퍼키
- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키
- 유일성은 만족하지만 최소성은 만족하지 못한 키
📌외래키
📢36. 제약조건-무결성
- 무결성은 저장된 데이터베이스에 잘못된 데이터가 없다는 것
📌무결성의 종류
- ⭐개체 무결성 : 기본키를 구성하는 어떤 속성도 NULL값이나 중복된 값을 가질 수 없다.
- ⭐참조 무결성 : 외래키 값을 NULL이거나 참조 릴레이션의 기본키 값과 동일해야함 즉, 릴레이션은 참조할 수 없는 외래키 값을 가질수 없다.
- 도메인 무결성 : 주어진 속성 값이 정의된 도메인에 속한 값이어야한다.
📢37. 관계대수 및 관계해석
📌관계대수
- 관계대수는 관계형 데이터베이스에서 원하는 정보를 겁색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어이다.
- 관계 데이터베이스에 적용하기 위해 특별히 개발한 순수 관계 연산자와 수학적 집합 이론에서 사용하는 일반 집합 연산자가 있다.
📍순수 관계 연산자
- 관계 데이터베이스에 적용하기 위해 특별히 개발한 순수 관계 연산자
- ⭐select(시그마) : 선택조건을 만족하는 튜플의 부분집합을 구하여 새로운 릴레이션을 만드는 연산
- ⭐Project(파이) : 속성리스트에 제시된 속성 값만을 추출하여 새로운 릴레이션을 만드는 연산
- ⭐Join(나비넥타이) : 공통 속성을 중심으로 두 개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만드는 연산
- ⭐Division(%) : 차집합을 구하는 연산
📍일반 집합 연산자
- 수학적 집합 이론에서 사용하는 일반 집합 연산자
- ⭐합집합UNION (u)
- ⭐교집합INTERSECTION (n)
- ⭐차집합DIFFERENCE (-)
- ⭐교차곱CARTESIAN PRODUCT (x)
📌관계해석
- 관계해석은 관계 데이터의 연산을 표현하는 방법이다.
- 관계 데이터 모델의 제안자인 코드(Codd)가 수학의 Predicate Calculus(술어 해석)에 기반을 두고 관계 데이터베이스를 위해 제안했다.
- 관계해석은 원하는 정보가 무엇이라는 것만 정의하는 비절차적 특성을 지닌다.
- 원하는 정보를 정의할 때는 계산 수식을 사용한다.
📢38. 이상/함수적 종속
이상
- 이상(Anomaly)이란 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하는 것이고, 이중복으로 인해 테이블 조작 시 문제가 발생하는 현상을 의미한다.
⭐이상의 종류 : 삽입 이상, 삭제 이상, 갱신 이상
📌함수적 종속
⭐완전/부분 함수적 종속의 이해
완전 함수적 종속이라는 말은 어떤 속성이 기본키에 대해 완전히 종속일 때를 말한다.
예를 들어 <수강> 테이블은 (학번, 과목번호)가 기본키인데, 성적은 학번과 과목번호가 같을 경우에 항상 같은 성적이 오므로, 성적은 학번과 과목번호에 의해서만 결정되므로 성적은 기본키에 완전 함수적 종속이 되는 것이다.
반면에 학년은 과목번호에 관계없이 학번이 같으면 항상 같은 학년이 오므로, 즉 기본키의 일부인 학번에 의해서 학년이 결정되므로 학년은 부분 함수적 종속이라고 합니다.
⭐이행 함수적 종속
X -> Y이고, Y -> Z일 때 X->Z를 만족하는 관계를 이행적 함수적 종속이라고 한다. (삼단논법)
📢39. 정규화
- 정규화(Normalization)는 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해하는 과정이다.
- 정규화의 목적은 가능한 중복을 제거하여 삽입, 삭제, 갱신 이상의 발생 가능성을 줄이는 것이다.
📍정규화 과정
⭐제 1정규형(도메인이 원자값)
- 제 1정규형은 테이블 R에 속한 모든 속성의 도메인이 원자 값으로만 되어있는 정규형이다.
⭐제 2정규형(부분적 함수 종속 제거)
- 제 2정규형은 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형이다.
⭐제 3정규형(이행적 함수 종속 제거)
- 제 3정규형은 테이블 R이 제 2정규형이고, 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수적 종속을 만족하지 않는 정규형이다.
⭐BCNF(결정자이면서 후보키가 아닌 것 제거)
- BCNF는 테이블 R에서 모든 결정자가 후보키인 정규형이다.
⭐제 4정규형(다치 종속 제거)
- 제 4정규형은 테이블 R에 다중 값종속이 존재할 경우 R의 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형이다.
⭐제 5정규형(조인 종속성 이용)
- 제 5정규형은 테이블 R의 모든 조인 종속이 R의 후보키를 통해서만 성립되는 정규형이다.
📢40. 반정규화
⭐반정규화의 개념
- 반정규화(Denormalization)는 시스템의 성능을 향상하고 개발 및 운영의 편리성 등을 높이기 위해 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위배하는 행위이다.
- 반전규화의 방법
-테이블 통합
-테이블 분할
-중복 테이블 추가
-중복 속성 추가
❗테이블 통합
- 테이블 통합은 두개의 테이블이 조인(Join)되어 사용되는 경우가 많을 경우 성능 향상을 위해 아예 하나의 테이블로 만들어 사용하는 것이다.
❗테이블 분할
- 수평 분할 : 레코드(record)를 기준으로 테이블을 분할하는 것
- 수직 분할 : 하나의 테이블에 속성이 너무 많을 경우, 속성을 기준으로 테이블을 분할하는 것
❗중복 테이블 추가
- 집계 테이블의 추가
- 진행 테이블의 추가
- 특정 부분만을 포함하는 테이블의 추가
❗중복 속성 추가
- 중복 속성 추가는 조인해서 데이터를 처리할 때 데이터를 조회하는 경로를 단축하기 위해 자주 사용하는 속성을 하나 더 추가하는 것이다.
📢42. 트랜젝션 분석/CRUD 분석
📌트랜잭션
- ⭐트랜잭션(Transaction)은 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산을 의미
📌트랜잭션의 특성
📍Atomicity(원자성)
- ⭐트랜잭션의 연산은 모두 commit되든지 모두 Rollback된 상태여야 한다.
📍Consistency(일관성)
- ⭐트랜잭션이 그 실행을 성공하고 나면 언제나 원상태로 돌아와야 한다.
📍Isolation(독립성, 격리성, 순차성)
- ⭐둘 이상의 트랜잭션이 동시에 실행되는 경우 서로 영향을 안받아야 한다.
📍Durability(영속성, 지속성)
- ⭐성공적으로 완료된 트랜잭션의 결과는 영구적으로 반영되어야 한다.
📌CRUD 분석
- CRUD 분석은 프로세스와 테이블 간에 CRUD 매트릭스를 만들어서 트랜잭션을 분석하는 것이다.
📌트랜잭션 분석
- 트랜잭션 분석은 CRUD 매트릭스를 기반으로 테이블에 발생하는 트랜잭션 양을 분석하여 테이블에 저장되는 데이터의 양을 유추하고 이를 근거로 DB의 용량 산정 및 구조의 최적화를 목적으로 한다.
📢44. 뷰/클러스터
📌뷰(View)
- 뷰는 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된, 이름을 가지는 가상 테이블이다.
- 뷰는 저장장치 내에 물리적으로 존재하지 않지만, 사용자에게는 있는 것처럼 간주된다.
- 뷰가 정의된 기본 테이블이나 뷰를 삭제하면 그 테이블이나 뷰를 기초로 정의된 다른 뷰도 자동으로 삭제된다.
- 뷰를 정의할 때는 CREAT문, 제거할 때는 DROP문을 사용한다.
📍뷰의 장단점
- 장점
- 논리적 데이터 독립성을 제공함
- 동일 데이터에 대해 동시에 여러 사용자의 상이한 응용이나 요구를 지원해 줌
- 사용자의 데이터 관리를 간단하게 해줌
- 접근 제어를 통한 자동 보안이 제공됨
- 단점
- 독립적인 인덱스를 가질 수 없음
- 뷰의 정의를 변경할 수 없음
- 뷰로 구성된 내용에 대한 삽일, 삭제, 갱신 연산에 제약이 따름
📌클러스터
- 클러스터(Cluster)는 데이터 저장시 데이터 엑세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법이다.
- 클러스터링 된 테이블은 데이터 조회 속도를 향상시키지만 입력, 수정, 삭제에 대한 작업 성능을 저하시킨다.
📢45. 파티션
- 데이터베이스에서 파티션(Partition)은 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것을 말한다.
- 파티션은 용량이 큰 테이블을 관리하기 쉽도록 작은 단위로 나눈 것을 말한다.
📌파티션의 종류
📍범위 분할
- 지정한 열의 값을 기준으로 분할함.
- 일별, 월별, 분기별 등
📍해시 분할
- 해시 함수를 적용한 결과 값에 따라 데이터를 분할
- 특정 파티션에 데이터가 집중되는 범위 분할의 단점을 보완한 것으로, 데이터를 고르게 분산할 때 유용함
- 특정 데이터가 어디에 있는지 판단할 수 없음
- 고객번호, 주민번호 등과 같이 데이터가 고른 컬럼에 효과적임
📍조합 분할
- 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할하는 방식
- 범위 분할한 파티션이 너무 커서 관리가 어려울 때 유용함
📢47.데이터베이스 이중화/서버클러스터링
📌데이터베이스 이중화
- 데이터베이스 이중화(Database Replication)는 시스템 오류로 인한 데이터베이스 서비스 중단이나 물리적 손상 발생 시 이를 복구하기 위해 동일한 데이터베이스를 복제하여 관리하는 것이다.
📍분류
- Eager 기법 : 변경 내용이 즉시 적용되도록 하는 기법
- Lazy 기법 : 수행이 종료되면 변경 내용이 적용되도록 하는 기법
📌클러스터링
- 클러스터링(Clustering)은 두 대 이상의 서버를 하나의 서버처럼 운영하는 기술이다.
📍RTO/RPO
- ⭐RTO(Recovery Time Objective : 목표 복구 시간)
비상사태 또는 업무 중단 시점으로부터 복구되어 가동될 때까지의 소요 시간을 의미함
ex)장애 발생 후 6시간 내 복구 가능
- ⭐RPO(Recovery Point Objective : 목표 복구 시점)
비상사태 또는 업무 중단 시점으로부터 데이터를 복구할 수 있는 기준점을 의미함
ex)장애 발생 전인 지난 주 금요일에 백업시켜 둔 복원 시점으로 복구 가능
📢48. 데이터베이스 보안
- 데이터베이스 보안이란 데이터베이스의 일부 또는 전체에 대해서 권한이 없는 사용자가 엑세스하는 것을 금지하기 위해 사용되는 기술
📌암호화
- 암호화(Encryption)는 데이터를 보낼 때 송신자가 지정한 수신자 이외에는 그 내룔을 알릴 수 없도록 평문을 암호문으로 변환하는 것
- 암호화(Encryption) 과정 : 평문 -> 암호문
- 복호화(Decryption) 과정 : 암호문 -> 평문
- ⭐암호화 기법 : 개인키 암호 방식, 공개키 암호 방식
📌접근통제
- 접근통제는 데이터가 저장된 객체와 이를 사용하려는 주체 사이의 정보 흐름을 제한하는 것
⭐정보 통제 3요소
-접근통제 정책
-접근통제 메커니즘
-접근통제 보안모델
📍접근통제 기술
- ⭐임의 접근통제(DAC, Discretionary Access Control) : 사용자의 신원에 따라 접근권한 부여
- ⭐강제 접근통제(MAC, Mandatory Access Control) : 등급을 비교하여 접근 권한 부여
- ⭐역할기반 접근통제(RBAC, Role Based Access Control) : 역할에 따라 접근 권한을 부여
📢49. 데이터베이스 백업
- 데이터베이스 백업은 전산 장비의 장애에 대비하여 데이터베이스에 저장된 데이터를 보호하고 복구하기 위한 작업이다.
📌로그 파일
- 로그 파일은 데이터베이스의 처리 내용이나 이용 상황 등 상태 변화를 시간의 흐름에 따라 모두 기록한 파일
- ⭐복귀(UNDO) : 로그에 보관한 정보를 이용하여 가장 최근에 변경된 내용부터 거슬러 올라가면서 트랜잭션 작업을 취소하여 원래의 데이터베이스로 복구함
- ⭐재생(REDO) : 덤프와 로그를 이용하여 가장 최근의 정상적인 데이터베이스로 회복시킨 후 트랜잭션을 재실행 시킴
📢50. 스토리지
- 스토리지는 단일 디스크로 처리할 수 없는 대용량의 데이터를 저장하기 위해 서버와 저장장치를 연결하는 기술
- ⭐종류는 DAS, NAS, SAN이 있다.
📌DAS
- Direct Attached Storage : 서버와 저장장치를 전용 케이블로 직접연결 방식
📌NAS
- Network Attached Storage : 서버와 저장장치를 네트워크를 통해 연결 방식
📌SAN
- Storage Area Network : DAS의 빠른 처리와 NAS의 파일 공유 장점을 혼합한 방식
- 서버와 저장장치를 연결하는 전용 네트워크를 별도로 구성하는 방식
📢52. 자료 구조
- 자료 구조는 자료를 기억장치의 공간 내에 저장하는 방법과 자료 간의 관계, 처리 방법 등을 연구 분석하는 것을 말한다.
⭐자료구조의 분류
-
선형구조
- 배열 : 크기와 형이 동일한 자료들이 순서대로 나열된 자료의 집합
- 선형 리스트(연속 리스트, 연결리스트)
- 스택(Stack) : 후입선출(LIFO)
나서스스택큐
- 큐(Queue) : 선입선출(FIFO)
뽀삐큐
- 데크
-
비선형구조
📢54. 이진 트리
- 이진 트리(Tree)는 차수(Dgree)가 2 이하인 노드들로 구성된 트리, 자식이 둘 이하인 노드들로만 구성된 트리
⭐트리의 운행법⭐
- Preoder
- Inorder
- Postorder
📢55. 정렬(Sort)
📌삽입 정렬
- 이미 순서화된 파일에 새로운 하나의 레코드를 순서에 맞게 삽입시켜 정렬하는 방식
- 2Key, 3Key, 4Key, 5Key
📌선택 정렬
- 선택 정렬은 n개의 레코드 중에서 최소값을 찾아 첫 번째 레코드 위치에 놓고, 나머지(n-1)개 중에서 다시 최소값을 찾아 두 번째 레코드 위치에 놓는 방식을 반복하여 정렬하는 방식
- ⭐1회전하면 가장 작은수가 맨 앞으로 간다
📌버블 정렬
- 버블 정렬은 주어진 파일에서 인접한 두 개의 레코드 키값을 비교하여 그 크기에 따라 레코드 위치를 서로 교환하는 정렬 방식
- ⭐1회전하면 가장 큰수가 맨 뒤로 간다.