본문 바로가기

자격증/정보처리기사

[정처기 필기] 과목 3. 데이터베이스 구축

출처 : 이기적 영진닷컴 https://youtu.be/JhKOsZuMDWs?si=tcKH-nfbH1U7qkjm

노랑색은 중요한 파트 표시한것

 

 

<인덱스>
=데이터 레코드에 빠르게 접근하기 위한 <키값, 포인터>의 데이터 구조
레코드의 물리적 구조에 접근
인덱스 개수 최소화 하는것이 효율적
DDL로 사용자가 생성, 변경, 제거 가능

- 색인 순차 파일 = 레코드 키 값 순으로 정렬하여 기록 후, 키값만 모은 색인 구성하여 편성

  • 기본영역(데이터 레코드 저장)
  • 색인 영역(레코드 위치 찾는 색인 기록)
  • 오버플로 영역( 오버플로로 추가적인 레코드 입력 처리 못할 때 사용)!!!

- VSAM 파일 = 기본영역과 오버플로 영역 구분하지 않는다!!!

- 직접 파일 = 키를 해시 함수(임의의 길이의 데이터를 고정된 길이의 데이터로 매핑)로 물리적 주소로 변환하여
레코드 기록

 

 

<데이터베이스 개념>

정의 = 통합된, 저장된, 운영 데이터, 공용 데이터
특성 = 실시간 접근성, 내용 참조, 동시 공유, 계속 변화

 

 

<DBMS>
=데이터베이스 저장(표만들기), 조작(수정 등), 제어(무결성 유지) 기능
- 장점 = 데이터 중복, 종속성 최소화, 데이터 공유, 데이터 무결성+일관성 유지, 데이터 보안 보장 용이

 

 

<데이터 베이스 신기술>
= 빅데이터, 데이터 마이닝, Hadoop, Tajo, OLAP
+ OLAP = 자료 분석 도구, 연산 – roll up, drill down, dicing, slicing, pivot

 

 

<데이터베이스>

데이터 정의어 DDL = 표 만들 때
데이터 조작어 DML = 레코드 조회
데이터 제어어 DCL = 무결성 유지, 보안

데이터 베이스 사용자 = 데이터베이스 사용자, 응용 프로그래머, 일반 사용자

 

 

<개념적 데이터 모델>

<ER 다이어그램>
=대표적인 개념적 데이터 모델

개체(사각형)
관계(마름모)
속성(타원)
개체타입과 속성 연결(실선)

 

 

<논리적 데이터 모델>

- 관계형 데이터 모델 : 데이터베이스를 테이블 집합으로 표현

- 계층형 데이터 모델 : 트리 구조로 표현

- 네트워크형 데이터 모델 : 그래프 구조로 표현

  

 

<관계형 데이터베이스>

릴레이션, 스키마 = 구조. 표 (+ 스키마 = 외부 스키마, 개념 스키마, 내부 스키마(하드웨어 물리적 저장 방식))
속성 (attribute) = 가장 작은 논리적 단위, 원자값만 허용
튜플 (tuple) = 행, 속성의 모임
카디널리티 = 행 수
디그리 (degree) = 열의 수
도메인 (domain) = 값 범위, 애트리뷰트가 가질 수 있는 값 집합
차수 = 속성의 수

 

릴레이션 특징
= 튜플의 유일성, 튜플의 무순서성, 속성의 원자성, 속성의 무순서성

 

키 Key
=원하는 튜플 찾는 기준이 되는 애트리뷰트

  • 후보키 = 튜플 식별 가능한 속성(유일성, 최소성 만족)
  • 기본키 = 후보키 중 뽑아서 사용, 중복X, 특정 튜플 구별 가능한 속성, Null값 가질 수 없음
  • 대체키 = 후보키들 중에 기본키 제외한 키
  • 슈퍼키 = 묶어서도 가능. 속성들의 집합, 유일성 O 최소성 X
  • 외래키 = 다른 릴레이션의 기본키 참조하는 속성. 

무결성!!!!!!

- 개체 무결성 = 기본키는 null이나 중복값 가질 수 없다 

- 참조 무결성 = 외래키값은 null이나 참조 릴레이션 기본키 값과 동일
    → 릴레이션 R1에 속성 조합인 외래키를 변경하려면 참조하고 있는 R2 기본키도 변경해야한다. 참조할 수 없는 외래키 값 가질 수 없다 

- 도메인 무결성 = 릴레이션 중 하나의 속성은 반드시 원자값

 

 

<데이터베이스 설계 순서>

1.   개념적 설계 = 개념 스키마 설계

2.   논리적 설계 = 스키마 설계 평가, 정제, 논리적 DB구조로 매핑, 트랜잭션 인터페이스 설계

3.   물리적 설계 = 물리적인 구조 설계, 레코드 집중 분석 설계

4.   데이터베이스 구현

 

 

<데이터베이스 정규화>

목적

- 데이터구조 안정화

- 중복 데이터 최소화, 이상(Anomaly, 중복 데이터로 발생하는 곤란한 상황) 방지

    + 이상

  • 갱신이상 = 자료 갱신할 때 문제
  • 삽입이상 = 원치 않은 값도 삽입됨
  • 삭제이상 = 원치 않은 값도 삭제됨

- 수정 삭제시 이상 현상 최소화(무결성, 참조 무결성)

- 테이블 불일치 최소화

 

정규화 과정

- 비정규 릴레이션

- 1NF = 도메인이 원자값, 중복 제거

- 2NF = 완전 함수적 종속 만족 (부분적 함수 종속 제거)

- 3NF = 이행적 함수 종속(A→B이고 B→C일 때 A→C이다.) 제거

- BCNF = 모든 결정자가 후보키

- 4NF = 다치 종속 제거

- 5NF = 조인 종속성 제거

 

함수적 종속 = 데이터들이 기준값에 의해 정해지는것
ex) <수강> 릴레이션에 (학번, 이름, 과목명)으로 되어 있을 때 ‘학번’이 결정되면 ‘이름’은 자동으로 대응된다.
이름을 학번에 함수적 종속이라고 하고 ‘학번→이름’ 으로 나타낸다

 


<반정규화(역정규화)>
= 성능, 운영 편의성 등을 위해 정규화된 모델을 통합 중복 분리하는 과정. 의도적으로 정규화 원칙 위배      

방법

1. 테이블 분할 = 테이블을 수직이나 수평으로 분할

2. 중복 테이블 추가 = 테이블 중복 추가, 원격 조인 제거

- 집계 테이블 추가 = 합계 평균 통계 계산 미리 해서 계산해 둠.

- 이력 테이블 추가 = 이력 테이블에 레코드 중복 저장하여 성능 향상

- 부분 테이블 추가 = 자주쓰는 컬럼 저장

- 진행 테이블 추가

3. 중복 속성 추가

4. 테이블 통합 = 2개 테이블 join자주 되면 합치는게 도움됨.

 

 

<관계대수와 연산자>

관계대수 = 관계대수는 절차적 언어다!!!!

  • 순수관계 연산자
select σ 튜플 집합 검색
project π 속성 집합 검색
join 두 릴레이션 공통 속성 연결
division ÷ 두 릴레이션 특정 속성 제외한 속성만 검색
  • 집합연산자

합집합, 교집합 차집합 – 교차곱 X(cartesian product)

+ 교차곱 = 카디널리티=속성개수*튜플 개수, 차수 = 합했을 때 속성의 개수

 

 

 

<SQL>

<DDL>
=define 표만들기
Create 정의
Alter 변경
Drop 삭제

ex)
Create table 테이블명( );
Alter table 테이블명 add/alter/drop
Drop table이름[cascade|restrict];

 

<DCL>
= control 제어 기능, 무결성 제어, transaction(자료 교차받는)
Commit
Rollback
Grant
Revoke

 

<DML>
= manipulation, 조작
Select(group by-having, distinct)
insert into values
delete from
update set

 

<View>
= alter못쓴다. drop create select는 사용가능
보안 good!!
사용자 데이터, 가상테이블, 논리적 독립성 제공

 

 

<시스템 카탈로그>
= 데이터 사전, 사용자가 아닌 DBMS가 분석한다. 갱신 허용 안함, 메타 데이터

 

 

<트랜잭션>
= 하나의 논리적 기능 수행하기 위한 작업 단위

특성
원자성 Atomicity = 트랜잭션 연산은 DB에 모두 반영(Commit 완료)되든지 아니면 전혀 반영안됨(Rollback 복구)
일관성 consistency = 실행 완료시 일관성 있는 상태로 변환
격리성 Isolation = 다른 트랜잭션이 동시에 접근하면 안된다
지속성 Durability = 성공적으로 완료된 트랜잭션 결과는 영구적 

반영상태 - 활동, 실패, 철회, 부분완료, 완료

 

 

<CRUD 분석>
= (Create, Read, Update, Delete)
DB table에 변화 주는 트랜잭션의  연산에 대해  CRUD 매트릭스를 작성하여 분석한다.
= commit, rollback, recovery

 

 

<회복(Recovery)>
= 트랜잭션 수행 중 장애 발생한것 때문에 정상 상태로 복구하는 작업
- 연기 갱신 기법 = 트랜잭션 완료할 때까지 DB갱신 연기 후 Log에 보관
- 즉각 갱신법 = 갱신 내용 모두 log로 기록
- 그림자 페이지 대체 기법 = 복사본(그림자 페이지)을 보관 (Log안씀)
- 검사점 기법 = 트랜잭션 중간에 검사점을 Log에 보관

 

 

<병행제어>
= 공유 일관성있게 처리하기 위한 제어

- 데이터베이스 공유 최대화, 일관성 최대화, 

- 종류 :  최적 병행 수행, 타임스탬프, 다중 버전 기법, Locking

+ Locking = 잠근다. 한 명만 수정할 수 있게. locking대상이 단위라고 한다.
Locking 단위 ↑ → 로크 수↓, 병행성↓, 오버헤드↓, 공유도↓, 제어기법 간단하여 관리 수월

2 Phase Locking = 확장단계, 축소 단계

 

 

<보안 분산 데이터 기법>

비밀키 = (대칭키)암호화를 비밀리 암호화와 복호화 키가 같아서
공개키 = 암호화 복호화 키 다르다(비대칭)

 

 

<권한 부여>
Grant _ on _ to _ [with grant option] = 권한 부여
Revoke on from = 권한 삭제  cascade연쇄로 다 삭제
Trigger = 삽입 갱신 등 이벤트 발생할 때마다 자동 수행

 

 

<분산 데이터베이스 목표>

  • Location Transparency 위치 투명성 = 데이터베이스 실제 위치 알 필요X 논리적 명칭만으로 접근 가능
  • Replication Transparency 중복 투명성 = 데이터가 중복되어 있어도 사용자는 하나의 데이터만 존재하는 것처럼 사용
  • Concureency Transparency 병행 투명성 = 다수의 트랜잭션 동시 실현되어도 O 
  • Failure Transparency 장애 투명성 = 장애에도 트랜잭션 정확히 처리

 

 

<분산 데이터 베이스 장단점>

  • 장점 = 질의 처리 시간 단축, 데이터 공유성, 신뢰성, 가용성 향상
  • 단점 = 소프트웨어 개발 비용 증가, 오류 발생 가능성 증가