성장일기 : 문과생의 개발 여정 (งᐖ)ว ( ᐛ )و

[02 데이터베이스 구축] 01 데이터베이스 본문

Diary/정보처리기사

[02 데이터베이스 구축] 01 데이터베이스

hyemi_flora 2024. 4. 22. 14:28

* 데이터베이스 정의
- 공유 데이터 (Shared Data) 
- 저장 데이터 (Stored Data)
- 통합 데이터 (Integrated Data)
- 운영 데이터 (Operational Data)

* 데이터 언어
- DDL (Data Definition Language) : Create, Drop, Alter, Truncate 구조와 제약조건 정의
- DML (Data Manipulation Language) : Insert, Update, Delete, Select 데이터 처리 및 조작
- DCL (Data Control Language) : Grant, Revoke, Commit, Rollback, SavePoint 제어

* 스키마 (Schema) : DB구조, 제약조건, 속성, 개체, 관계를 포함 한 전반적인 명세 기술/ 스키마라고만 하면 개념스키마를 의미한다.

*3 계층 스키마
- 외부 스키마 : 여러 벌 올 수 있다.
  -> 외부 스키마와 개념스키마 사이에 논리적 독립성이 존재
- 개념 스키마 : 데이터 베이스의 전체적인 구조와 제약조건
   -> 개념 스키마와 내부 스키마 사이 물리적 독립성이 존재
- 내부 스키마 : 저장장치 입장에서 본 스키마 구조 (회원 테이블이 있다면 name, age 등 컬럼이 있는데 name -> Varchar타입으로, age -> int 타입으로 어떤 타입으로 어떤 길이로 할 건지 정하는 것)
- 데이터베이스

* DBMS : 데이터베이스를 효과적으로 관리하고 조작하기 위한 전용 소프트웨어
* DBMS 종류 
- 계층형 :트리구조 N:M 안됨
- 네트워크형 : 다대다 관계 가능, CODASYL
- 관계형 : 테이블 구조의 모델
- 객체 지향형 : 객체지향 프로그램 개념에 기반
- 객체 관계형 : 관계형 + 객체지향 개념
- NoSQL (Not Only SQL) : 비정형 데이터를 표시할 때 적합하다
- NewSQL : RDBMS + NoSQL 장점 결합

*데이터베이스설계 (3가지 쓰라고 하면 개논물, 5개는 전부~)
- 요구조건 분석
- 개념적 설계 : 개념적 스키마 구성 ERD
- 논리적 설계 : 목표 DBMS에 맞는 설계 (만약 관계형 DBMS라면 정규화 실행 및 트랜잭션 인터페이스 설계)
- 물리적 설계 : 성능, 용량을 고려하여 설계, 특정 DBMS(오라클, MySQL 등등)에 맞는 설계를 해야 한다.
                         파티션, 클러스터, View, Index 등을 만들 수 있다.
- 구현

* 데이터모델 요소
- 구조 (Structure)
- 연산 (Operation)
- 제약조건 (Constraint) : 데이터의 논리적 제약조건

* E-R다이어그램 기호
개체 : 사각형
관계 : 마름모
속성 : 원
기본키속성 : 밑줄 타원
복합속성 : 이중타원
선 : 연결

* 데이터베이스 정규화 이상현상 (Anomaly)
- 데이터 중복으로 인해 릴레이션 조작 시 발생하는 예기치 않은 문제점
*이상현상 종류
- 삽입이상 : 불필요한 데이터가 함께 삽입되는 현상
- 삭제이상 : 연쇄삭제 현상으로 인해 정보 손실
- 갱신이상 : 일부 정보만 갱신되어 정보에 모순 발생

* 데이터베이스 정규화 함수적 종속 : 이상현상을 없애기 위해 데이터 중복을 최소화하기 위해 정규화 작업을 진행하는데 정규화 작업은 함수적 종속을 바탕으로 진행한다.

* 함수적 종속 관계
- 완전함수적 종속 :  X -> Y Y는 X에 종속적이다
- 부분함수적 종속 :  기본키를 구성하는 속성 중 일부만 종속되는 경우 (학번만 가지고 도 알 수 있는 이름 릴레이션 같은 것)
- 이행적 함수 종속 : X -> Y, Y -> Z 일 때 X ->Z의 식이 성립되는 것
-> 부분함수적 종속과 이행적 함수 종속을 제거하여 완전 함수적 종속을 만들어줘야 한다.

* 정규화 과정
비정규 릴레이션
1 : 도메인이 원자값
2 : 부분 함수 종속 제거
3 : 이행적 함수 종속 제거
BCNF : 결정자이면서 후보 키 아닌 것 제거
4 : 다치 종속 제거
5 : 조인 종속 제거

* 반정규화 : 성능향상을 위해 정규화에 위배되는 행위 즉, 의도적으로 중복을 허용하여 데이터를 재구성한 기법이다.

* 데이터베이스 이중화 : 장애에 대비해 동일한 데이터베이스를 중복하여 관리하는 방식
* 데이터베이스 이중화 분류
- Eager 기법 : 트랜잭션 발생 시 즉시 반영
- Lazy 기법 : 트랜젝션 완료 후 반영

* 데이터 베이스 백업 
- 전체 백업 : 모든 데이터를 백업
- 증분 백업 : 변경/ 추가된 데이터만 백업
- 차등 백업 : 모든 변경/ 추가된 데이터를 백업
- 합성 백업 : 전체 백업본과 여러 개의 증분 백업을 합하여 하나의 전체백업으로 만든 것

* RTO / RPO
- 복구 시간 목표 RTO, 서비스를 사용할 수 없는 상태로 허용되는 시간
- 복구 시점 목표 RPO, 마지막 백업 이후 허용되는 최대 데이터 손실 시간

* 데이터베이스 암호화
- API방식 : 프로그램단에서 수행
- Plug-in : DB서버에 제품을 설치 후 수행
- TDE방식 : DBMS 내부의 기본 모듈로 수행

* DB물리속성 설계
- 파티셔닝 : 데이터베이스를 여러 섹션으로 분할. 범위/목록/해시/라운드 로빈/합성 분할 등
- 클러스터 : 자주 사용되는 테이블의 데이터를 디스크 상 동일한 위치에 저장
- 인덱스 : 책의 목차와 같은 부분 / 테이블 검색 속도 향상을 위한 저장 공간 활용 자료구조
- 뷰 : 기본 테이블에서 유도된 이름이 있는 가상 테이블

* 시스템 카탈로그 : 데이터베이스의 데이터베이스이다.
즉 데이터베이스의 모든 정보를 저장한 시스템 테이블, Data Dictionary 데이터 사전이라고도 한다.

* 관계 데이터 릴레이션 구조
- 릴레이션 
   1) 릴레이션 스키마 : 릴레이션의 논리적 구조
   2) 릴레이션 인스턴스 : 스키마에 실제 저장된 데이터 집합
- 속성 Attribute : 릴레이션 열, 개체의 특성
- 튜플 Tuple : 릴레이션 행, 속성의 모임
- 도메인 Domain :속성이 가질 수 있는 값의 범위 (학년, 성별 등)
- 차수 Degree : 속성의 총 개수
- 카디널리티 Catdinality : 튜플의 총 개수

* 관계대수  : 원하는 데이터를 찾기 위한 절차적 언어
- 순수 관계 연산자 : SELECT(𝞼), PROJECT(π), JOIN(⋈), DIVISION(÷)
- 일반 집합 연산자 : 합집합(⋃), 교집합(⋂), 차집합(-), 카티션 프로덕트(= 교차곱)(𝙓)

* 관계해석 : 원하는 정보가 무엇이라는 것만 정의하는 비절차적인 언어
V : OR 연산 ∧ : AND 연산 ㄱ : NOT 연산 ∀ : 모든 가능한 튜플 ∃ : 어떤 튜플 하나라도 존재
* DB속성(칼럼)
- 기본속성 : 업무로부터 추출한 모든 속성
- 설계속성 : 코드성데이터
- 파생속성 : 다른 속성에 영향을 받아 발생하는 속성

* DB 키
유일성(하나의 키 값으로 튜플 식별하는 성질) / 최소성(최소한 속성으로 키 구성 성질) 
- 슈퍼키 : 유일성 만족
- 후보키 : 유일성 + 최소성 만족
- 기본키 : 유일성 + 최소성 만족
- 대체키 : 유일성 + 최소성 만족

* DB 무결성
- 개체 무결성 : NULL불가, 중복불가
- 참조 무결성 : 외래키 NULL이거나 참조 릴레이션 기본키와 일치,
                줄 수 있는 옵션 : [ Restrict(제한을 두는 것), Cascade(연쇄삭제) ]
- 도메인 무결성 : 속성값은 정의된 도메인에 속해야 한다.
- 고유 무결성
- 키 무결성
- 릴레이션 무결성

* C(Create) R(Read) U(Update) D(Delete) : 해당 업무에 어떤 데이터가 존재하는지 어디에 영향을 받는지 분석

* 옵티마이저 : SQL문에서 최적의 실행 방법을 결정하는 것
- 규칙기반 옵티마이저 : 연산자 우선순위, 인덱스 유무 등
- 비용기반 옵티마이저 : 통계정보

* SQL 튜닝 : SQL문을 최적화하여 응답속도를 개선하는 작업

* 분산데이터베이스 (Distribute Database) : 여러 곳에 분산된 데이터베이스를 하나의 논리적인 시스템처럼 사용하는 것
- 분산처리기
- 분산 데이터베이스
- 통신 네트워크 

* 분산 데이터베이스 투명성 조건
- 위치 투명성
- 분할 투명성
- 지역사상 투명성
- 중복 투명성
- 병행 투명성
- 장애 투명성

* 분산 데이터베이스 CAP이론 : 일관성(C), 가용성(A), 분단허용성(P) 세 가지 속성 중 두 가지만 가질 수 있는 것

* 트랜잭션 : 하나의 논리적 기능을 수행하는 작업 단위

* 트랜잭션 성질 : ACID~
- 원자성 Atomicity :  모두 반영되거나 전혀 반영되지 않아야 한다
- 일관성 Consistency : 트랜잭션 완료 후 데이터베이스가 일관된 상태 유지 해야 한다
- 독립성 Isolation : 트랜잭션 수행 중 다른 트랜잭션이 간섭하면 안 된다
- 영속성 Durablility : 트랜잭션의 결과는 영구히 반영되어야 한다.

* 트랜잭션 상태
- 활동 Active : 트랜잭션 실행 중 
- 실패 Failed : 트랜잭션 실행에 오류가 발생해 중단된 상태
- 철회 Aborted : 비정상적으로 종료되어 Rollback 연산 수행된 상태
- 부분완료 Partially Committed : Commit 연산이 실행되기 직전 상태
- 완료 Committed : 트랜잭션 성공적으로 종료된 상태