1. 데이터베이스 정의
데이터 베이스
- 통합 데이터
- 데이터를 저장
- 운영 데이터
- 공공 데이터
데이터베이스 속성
- 실시간 가용성
- 지속적인 변화
- 동시 공유
- 내용별 참조
데이터베이스의 개념적 구성

- 개별적으로 : 하나 이상의 속성(학생, 강사)
- 관계 : 속성관계(성명-입학번, 교번-학과 등), 대상관계(학생-교수)
2.DBMS
기존 파일 시스템 문제
- 데이터 종속성 : 응용 프로그램에서 사용하는 파일은 해당 위치에서만 사용할 수 있습니다.
- 데이터 중복 : 데이터가 중복 저장됨
데이터 중복성이 나쁜 이유
- 일관성 : 데이터 간 불일치 발생
- 보안 : 중복 저장으로 인해 동일한 수준의 보안 유지가 어려움
- 사업 : 중복 메모리 및 추가 디스크 공간 필요
- 진실성 : 데이터의 정확도 감소
DBMS란?
- 종속성 및 중복성을 해결하기 위한 제안 시스템
- 응용 프로그램에 필요한 데이터베이스를 정의, 생성, 편집 및 공유할 수 있는 편리한 기능을 제공하는 소프트웨어 시스템
DBMS의 필수기능
- 정의 기능 : 데이터베이스 구조 정의
- 작동 기능 : 데이터베이스 접근 및 조작 능력
- 제어 기능 : 데이터베이스의 정확성과 보안성을 유지하는 능력
DBMS의 이점
- 데이터 중복 최소화
- 데이터 교환 가능
- 일관적일 수 있다
- 데이터 무결성 유지
- 데이터 보안 보장
- 표준화 달성
- 데이터 독립성 제공(논리적 또는 물리적 구조를 변경해도 애플리케이션에 영향을 주지 않음)
DBMS의 단점
- 운영 비용의 증가
- 데이터 처리 절차가 복잡함
- 어려운 백업 및 복구 기술
- 시스템이 취약할 수 있습니다.
DBMS 개발
네트워크 데이터 모델 → 계층적 데이터 모델 → 관계형 데이터 모델 → 객체 지향 데이터 모델
3. 데이터베이스 시스템
데이터베이스 시스템
데이터베이스를 유지 관리하고 필요에 따라 데이터를 입력, 편집 및 변경하여 특정 목적을 달성하기 위해 사용하는 시스템
시스템의 구성 요소
데이터베이스, DBMS, 데이터베이스 언어, 사용자, 데이터베이스 관리자, 하드웨어
데이터 베이스
- 외부 체계 : 제한된 목적으로 사용자 및 프로그래머가 액세스하는 논리적 하위 스키마
- 개념 체계 : 전체 조직의 관점에서 본 데이터베이스의 전체적인 논리적 구조
- 내부 계획 : 개념적 스키마에 대한 내부 물리적 저장소 구조에 대한 설명입니다.
데이터베이스 언어
- DDL : 데이터베이스 구조 생성, 수정 및 삭제
- DML : 절차적 데이터 조작어, 비절차적 데이터 조작어
- DCL : 보안, 무결성, 복구, 병렬 성능
사용자
- 일반 사용자 : DML 사용
- 애플리케이션 프로그래머 : DML 사용
- 데이터베이스 관리자 : DDL, DCL 사용
데이터베이스 관리자(DBA)
- 데이터베이스 설계 및 전반적인 운영 담당
- 데이터베이스에 대한 관리 작업
- 시스템 성능 모니터링, 통계 정보 분석
4. 데이터베이스 모델링
데이터 모델링 개념
실세계에 존재하는 데이터를 컴퓨터 세계의 데이터베이스로 옮기기 위한 변환 과정

- 현실 세계 : 탐지 가능한 개체
- 개념의 세계 : 논리적 사고를 통해 현실을 개념으로 표현
- 컴퓨터 세계 : 아이디어의 세계를 컴퓨터가 처리할 수 있는 데이터로 변환
데이터 모델
- 개념적 데이터 모델 : 엔티티 간의 속성과 관계로 기술되는 엔티티 타입을 이용하여 실세계를 표현하는 방식
- 논리적 데이터 모델 : 데이터 필드로 기술된 레코드 유형과 이들 레코드 유형 간의 관계를 이용하여 개념적 세계를 표현하는 방법
관계
엔터티 간에 존재하는 연결 또는 연결

ER 모델
엔티티 관계 모델
- 강한 물체 유형 : 독립적으로 존재하며 엔터티 타입 내 속성을 이용하여 엔터티를 고유하게 식별할 수 있는 타입.
- 약한 엔티티 유형 : 키를 형성하기에 충분한 속성이 없는 엔터티 유형
논리적 데이터 모델
가장 일반적으로 사용되는 논리적 데이터 모델 중 하나는 관계형 데이터 모델입니다.
- 관계형 데이터 모델 : 엔터티와 관계 모두 테이블로 표시되는 특성을 가집니다.

5. 물리적 데이터 구조
직접 저장
- 여러 개의 디스크로 구성되어 있으며 각각의 면에 읽기/쓰기 헤드가 있습니다.
- 정보는 디스크의 트랙을 따라 저장되며 여러 디스크 면 사이의 동일한 직경의 트랙을 실린더라고 합니다.
- 일반적으로 트랙의 용량은 매우 크기 때문에 여러 개의 섹터로 나뉘며 하나의 블록은 하나 이상의 섹터로 구성된다.
- 데이터 액세스 시간 = 탐색 시간(헤드가 원하는 트랙(실린더)으로 이동하는 데 걸리는 시간) + 회전 지연 시간(헤드 아래 트랙에서 원하는 섹터(또는 블록)이 회전하기를 기다리는 시간) + 데이터 전송 시간
플래시 메모리
- 랜덤 검색이 우수하고 비휘발성 메모리입니다.
- 플래시 메모리 기반 SSD가 널리 사용됨
- HDD보다 검색 속도, 전력 소비 및 내구성 향상
- HDD는 덮어쓰기 작업을 할 수 있지만 SSD는 덮어쓰기 작업을 할 수 없으므로 지우기 및 쓰기 작업을 수행합니다.
- 쓰기가 매우 느리고 쓰기 횟수가 제한됨
- 읽기 및 쓰기는 페이지 단위로 수행됩니다.
운영체제의 역할
DBMS는 운영 체제의 파일 관리자와 디스크 관리자를 사용합니다.
파일 정리 방법
- 순차 방식
- 입력 순차 파일: 레코드는 시스템에 입력된 순서대로 구성됩니다.
- 키 순차 파일: 레코드는 키 값 순서로 구성됩니다.
- 인덱스 방법
- 기본 인덱스: 기본 키에 의해 생성되는 인덱스입니다.
- 보조 인덱스: 기본 키가 아닌 필드에 인덱스를 생성합니다.
- 클러스터링 인덱스: 검색 키 값으로 정렬된 데이터 파일
- 비클러스터링 인덱스: 데이터 파일 및 레코드는 검색 키 값과 독립적으로 저장됩니다.
- 다중 수준 색인: 색인 자체가 클 때 색인 항목에 대한 검색 시간을 줄이기 위해 색인이 다중 수준입니다.
- 해시 방법
- 직접 파일
B트리
차수 m의 B-트리 특성
- 루트 노드와 리프 노드를 제외한 모든 노드의 하위 트리 수는 최소 ⌈m/2⌉에서 최대 m입니다.
- 루트는 그 자체가 잎이 아닌 한 적어도 2개의 하위 트리를 가집니다.
- 모든 리프 노드는 동일한 수준에 있어야 합니다.
- 리프가 아닌 노드의 키 값의 수는 해당 노드의 하위 트리 수 – 1입니다.
- 리프 노드의 키 값의 수는 최소 ⌈m/2⌉-1 최대 m-1
- 노드 내의 키 값은 오름차순이어야 합니다.
B-트리 레벨 3

B+ 트리
B+트리는 B트리의 순차접근 취약점을 보완한 트리이다. 실제 DBMS에서 가장 많이 사용되는 트리로 인덱스셋과 순차셋으로 구성된다.
- 인덱스 세트 : 리프 노드의 키를 빠른 액세스 경로로 사용
- 순차 집합 : 리프 노드로 구성되어 있으며 인덱스 부분의 키 값이 여기에 다시 표시되며 순차 집합의 리프 노드는 연결 리스트 구조로 연결되어 있어 직접 및 순차 액세스가 모두 가능합니다.
차수 m의 B+ 트리 특성
- 루트는 0이거나 2에서 m 사이의 하위 트리를 가집니다.
- 루트와 리프를 제외한 모든 노드의 하위 트리 수는 최소 ⌈m/2⌉에서 최대 m입니다.
- 모든 리프 노드는 동일한 수준에 있어야 합니다.
- 리프가 아닌 노드의 키 값 수는 해당 노드의 하위 트리 수보다 하나 적습니다.
- 노드 내의 키 값은 오름차순이어야 합니다.
B+ 트리 구조 차수 3

B-트리와의 차이점
- B+ 트리의 인덱스 집합의 키 값은 리프 노드의 키 값에 대한 경로로만 사용되기 때문에 인덱스 집합의 모든 키 값이 순차 집합에 다시 나타납니다.
- 순차 집합의 모든 노드는 연결 목록 구조이므로 순차 액세스가 효율적으로 지원됩니다.
해시 방법
다른 레코드를 참조하지 않고 원하는 대상 레코드에 직접 액세스하는 다이렉트 파일 방식
- 해시 함수 : 특정 키값이 주어지면 그 키값으로 해당 키값을 가진 레코드가 저장된 주소를 계산할 수 있는 기법이다.
- 해시 키 : 레코드 주소 계산에 사용되는 레코드 키 값
- 해시 주소 : 계산 결과 주소

