데이터베이스 (DBMS, DataBase Management System)
특정 조직 내 필요한 데이터들의 모임, 공용으로 소유/유지/이용하는 공용 데이터
스키마 (Schema)
외부 스키마 | 사용자 관점의 스키마 → 하나의 DB에 여러 개의 전체적인 논리적 구조 |
개념 스키마 | 사용자와 DB 관리자 관점의 스키마 → DB 전체적인 논리적 구조 |
내부 스키마 | DB 설계자/개발자 관점의 스키마 → 개념 스키마를 물리적 저장 장치에 구현하는 방법을 정의 |
데이터 독립성
논리적 독립성 : 응용 프로그램 영향 없이 데이터 논리 구조 변경
물리적 독립성 : 응용 프로그램 및 논리 구조 영향 없이 데이터의 물리적 구조 변경
데이터 언어
DDL | 데이터 베이스 구조/제약 조건 정의 ex. ALTER, CREATE, DROP |
DML | 데이터 처리/조작에 사용되는 언어 ex. INSERT, UPDATE, DELETE |
DCL | 데이터의 보안, 권한, 무결성, 권한 검사, 병행 제어를 위한 언어 ex. GRANT, REVOKE |
데이터베이스 설계 순서 ★ 순서 중요
요구조건 분석 | 데이터베이스의 사용 용도 / 요구사항 / 요구조건 명세서 작성 |
개념적 모델 | 현실 개념 → 추상적 개념으로 표현 → 개념 스키마 / 트랜잭션 모델링 / E-R 모델 |
논리적 모델 | 컴퓨터가 처리할 수 있는 구조로 표현 (관계 모델) → 종속적인 논리 스키마 설계 / 트랜잭션 인터페이스 설계 / 정규화 |
물리적 모델 | 실제 저장 방법 및 접근 경로 표현 → 저장 레코드의 형식/순서/접근 경로 설계 |
구현 | DBMS에서 SQL로 작성한 명령문 실행 후 데이터베이스 실제 생성 |
데이터 모델링 : 현실 내 복잡한 데이터 구조를 단순/추상화하여 체계적으로 표현
데이터 모델 구성 요소
개체 | 독립적이고 구별 가능한 모든 것 |
속성 | 개체가 가진 고유의 특성 |
관계 | 두 개체 간의 의미 있는 연관성 및 연결 구조 → 일대일, 일대다, 다대다 |
E-R 다이어그램 표기법
개체 | ☐ | 속성 | ○ | 다중값 | ◎ |
관계 | ◇ | 기본키 | ⍜ (속성 안에 밑줄) | 개체-속성 연결 | ㅡ |
관계형 데이터베이스 용어 ★
릴레이션(Relation) = 표(Table)
학번 | 이름 | 과목 | 점수 |
101010 | 가나다 | 수학 | 56 |
101011 | 라마바 | 수학 | 78 |
속성(Attribute) = 열 = 필드
차수(Degree) = 속성의 개수 = 4개
튜플(Tuple) = 행 = 레코드
기수(Cardinality) = 튜플의 개수 = 2개
도메인(Domain) : 하나의 속성에서 취할 수 있는 원자 값들의 집합 (ex. 성별 : 남/여)
릴레이션 인스턴스 : 릴레이션에 실제로 저장된 데이터 집합
★ 속성과 어트리뷰트는 같은 의미 이고 카드널리티는 튜플의 개수이다.
릴레이션 특징
- 튜플과 속성은 유일하며 순서는 무의미함
- 튜플은 삽입/삭제 등에 의해 계속 변함 / 튜플은 서로 상이한 값을 가짐
- 속성의 값은 분해 불가 (원자성) / 동일할 수 있음
- 튜플을 식별하기 위해 속성(필드)의 일부를 key로 설정
- 속성은 Null 값을 가질 수 있으나, 기본키에 해당되는 속성은 Null 값을 가질 수 없음
키(Key) ★
후보키(Candidate Key) | 기본키로 사용 가능한 속성 모든 튜플에 대해 유일성/최소성을 만족시켜야함 유일설 : 하나의 키 값으로 하나의 튜플 유일하게 식별 최소성 : 모든 레코드 식별하는데 최소한의 속성으로만 구성 |
기본키(PK) | 후보키 중에서 선택되어, 중복된 값과 Null 값을 가질 수 없음 유일성 최소성 만족 |
대체키(Altemate Key) | 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키 |
슈퍼키(Super Key) | 한 릴레이션 내 속성들의 집합으로 구성된 키 유일성 만족, 최소성 불만족 |
외래키(FK) | 다른 릴레이션의 기본키를 참조하는 속성/속성들의 집합 |
무결성 (Integrity) ★
개체 무결성 | 기본키를 구성하는 어떤 속성도 NULL/중복 값 가질 수 없음 |
도메인/속성 무결성 | 릴레이션 내 튜플들이 각 속성의 도메인에 지정된 값만 가짐 |
참조 무결성 | 외래키는 NULL 또는 참조 릴레이션의 기본키 값과 동일 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다. |
사용자 정의 무결성 | 속성 값들의 사용자가 정의한 제약 조건에 만족 |
데이터 무결성 강화 | 데이터 특성에 맞는 적절한 무결성을 정의하고 강화 |
접근 통제 기술 (AC, Access Control) ★
임의 접근 통제 DAC |
사용자의 신원/신분에 따라 접근 권한 부여 데이터 소유자가 권한 지정/제어 |
강제 접근 통제 MAC |
주체와 객체의 등급 비교 후 시스템이 접근 권한 부여 |
역할 기반 접근 통제 RBAC |
사용자의 역할에 따라 접근 권한 부여 중앙관리자가 지정 |
뷰(View)
- 기본 테이블에 기반을 둔 이름을 가지는 가상 테이블
- 논리적으로 존재 → 물리적으로 존재 ✕
- 논리적 데이터 독립성을 제공하지만 독립적 인덱스를 보유할 수 없다. (Alter 변경 불가 / 삽입, 삭제, 갱신, 연산 제약)
정규화
이상현상이 발생하지 않도록 중복성/종속성을 최소화 하기 위한 작업
논리적 설계 단계에서 수행
이상형상 종류 ★
삽입 이상 | 데이터 삽입 시 불필요한 데이터가 함께 삽입 |
삭제 이상 | 튜플 삭제 시 필요한 데이터도 함께 삭제 |
갱신 이상 | 일부만 수정되어 데이터 불일치 → 정보 모순 발생 |
정규화 과정 ★
제 1 정규형 | 모든 도메인이 원자 값만으로 되어 있음 |
제 2 정규형 | 기본키가 아닌 모든 속성이 기본키에 대한 완전 함수적 종속 만족 부분적 함수 종속을 제거 |
제 3 정규형 | 이행적 함수 종속 관계를 만족하지 않아야함 X → Y, Y → Z 이면 X → Z |
BCNF | 모든 결정자가 후보키인 정규형 |
제 4 정규형 | 다치 종속이 성립하는 경우 릴레이션의 모든 속성이 함수적 종속 관계를 만족 |
제 5 정규형 | 조인 종속이 릴레이션의 후보키를 통해서만 성립 |
반정규화 ★
정규화 과정 진행 후, 시스템 성능 향상 및 운영 편의성을 위해 의도적으로 데이터 중복/통합/분리를 허용하여 정규화 원칙을 위반
함수적 종속
완전 함수적 종속 | 종속자가 기본키에만 종속 |
부분 함수적 종속 | 기본키가 여러 속성으로 구성되어 있을 때 기본키를 구성하는 속성 중 일부만 종속 기본키가 2개 이상이고 기본키가 아닌 속성이 모든 기본키에 종속된게 아니라 하나에만 종속되어 있는 경우 |
이행적 함수 종속 | X → Y, Y → Z 이면 X → Z 직접적인 관계 없이 중간 단계를 거쳐 종속되는 경우 직원ID → 부서번호, 부서 번호 → 부사장 이게 한 릴레이션에 있는 것 |
관계 대수 - 절차적 언어 ★
순수 관계 연산자
σ | Select |
ㅠ | Project |
▹◁ | Join |
÷ | Division |
세타 조인 | 비교 후 조건을 만족하는 튜플만 반환 |
동등 조인 | '=' 등호로 일치라는 결과를 반환 |
자연 조인 | 동등 조인의 결과에서 중복된 속성을 제거한 결과 |
일반 집합 연산자
U | Union 합집합 |
∩ | Intersection 교집합 |
ㅡ | Difference 차집합 |
X | Cartessian Product 교차곱 |
관계 해석 - 비절차적 언어 ★
논리 연산자 | V | OR |
∧ | AND | |
ㄱ | NOT | |
정량자 | ∀ | 전칭 정량자 For All |
∃ | 존재 정량자 There Exists |
트랜잭션 ★
데이터베이스 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업 단위
원자성 Atomicity |
트랜잭션 연산이 정상적으로 수행되거나 (Commit), 어떠한 연산도 수행되지 않아야 함 (Rollback) |
일관성 Consistency |
시스템의 고정 요소는 트랜잭션 수행 전/후로 동일해야 함 |
독립성 Isolation |
개발 트랜잭션은 다른 트랜잭션의 간섭 및 영향 받지 않아야 함 |
영속성 Durability |
완료된 트랜잭션 결과는 영구적으로 기록되어야 함 |
COMMIT | 정상 종료 |
ROLLBACK | 비정상 종료 후 변경 작업 취소하고 이전 상태로 원복 |
REDO | 시작과 완료에 대한 기록이 있는 트랜잭션들의 작업을 재작업 |
UNDO | 시작은 있지만 와료 기록이 없는 트랜잭션들이 작업한 내용을 모두 취소 |
데이터 회복 기법 ★
즉시 갱신 기법 Immediate Update |
변경되는 내용을 바로 적용 Redo / Undo 모두 수행 |
지연 갱신 기법 Deferred Update |
바로 적용 X 지연시킨 후 부분 완료 시 로그의 내용을 토대로 저장 Undo 없이 Redo만 수행 |
검사 시점 기법 Check point |
검사 시점 지정하여 검사 시점가지 부분 수행 후 완료된 내용을 중간중간 저장 |
그림자 페이징 기법 Shadow paging |
로그 미사용 / 각 페이지 마다 복사하여 보관 변경 내용은 원본 페이지에만 적용하여 장애 발생 시 해당 페이지 사용/회복 |
로킹 단위 (Locking) : 로킹의 대상이 되는 객체의 크기
데이터베이스 병행 제어 위해 트랜잭션이 접근하고자 하는 데이터를 잠가 다른 트랜잭션이 접근하지 못하도록 하는 병행 제어 기법
로킹 단위 ▼ → 로크의 수 ▲ → 로킹 오버헤드 ▲ → 병행성(공유도) ▲
로킹 단위 ▲ → 로크의 수 ▼ → 로킹 오버헤드 ▼ → 병행성(공유도) ▼
병행제어 기법 종류
로킹 기법 | 일관성과 무결성 유지하기 위한 트랜잭션의 순차적 진행을 보장 |
낙관적 검증 | 일단 트랜잭션을 수행하고, 트랜잭션 종료 시 검증을 수행 |
타임 스탬프 기법 | 부여된 시간에 따라 트랜잭션 수행 |
다중 버전 동시성 제어 (MVCC) | 직렬 가능성이 보장되는 적절한 버전을 선택해 접근하도록 함 |
분산 데이터베이스 ★
논리적으로는 하나의 시스템에 존재하나,
물리적으로는 연결된 다수의 컴퓨터에 분산되어 있는 데이터 베이스
목표 : 위치 투명성 / 중복 투명성 / 병행 투명성 / 분할 투명성 / 장애 투명성
데이터 베이스 관련 용어
인덱스 | 검색 속도 향상을 위한 저장 위치 자료 |
클러스터 | 자주 사용하는 테이블 데이터를 동일 위치에 저장하여 데이터 접근 효율 향상 |
데이터베이스 이중화 | 서비스 장애 대비하여 데이터베이스 중복(복제)하여 관리 |
파티셔닝 | 대용량 데이터베이스를 여러 세션으로 분할 범위 분할 : 파티션 키 값을 범위로 분할 해시 분할 : 해시 함수 적용 후 반환된 값으로 파티션 분할 합성 분할 : 범위 분할 후 해시 함수 적용하여 다시 분할 |
복구 시간 목표(RTO) | 서비스 중단 후 복원까지 최대 시간 → 서비스를 사용할 수 없는 최대 허용 시간 |
복구 시점 목표(RPO) | 마지막 데이터 복구 후 허용되는 최대 시간 → 허용 가능한 최대 데이터 손실량 결정 |
알고리즘
- 선형 검색 : 하나씩 순서대로 비교하며 원하는 결과값을 찾아내는 검색
- 이진 검색 : 검색 수행 전에 데이터 집합이 정렬되어야 함
알고리즘 시간 복잡도
복잡도 | 알고리즘 | 설명 |
O(1) | 해시 함수 | 자료 크기 무관 일정한 속도 |
O(log₂N) | 이진 탐색 | 로그형 복잡도 |
O(n) | 순차 탐색 | 선형 복잡도 입력 자료를 하나씩 처리 (정비례) |
O(N log₂N) | 힙 / 합병(병합) 정렬 | 선형 로그형 복잡도 |
O(N²) | 선택 / 버블 / 삽입 / 퀵 정렬 | 대부분의 경우 힙/합병 보다 복잡도가 큼 |
정렬 알고리즘
삽입 | 이미 정렬된 파일에 새로운 레코드를 순서에 맞게 삽입하여 정렬 |
1pass [9,6,7,3,5] → 맨앞 9와 6 비교 → 9와 6 교환 → [6,9,7,3,5] |
선택 | N개의 레코드 중 최소값을 찾아 첫번째에 배치, 나머지 N-1개 레코드 중 최소값을 찾아 두번째 배치 → 이를 반복 |
1pass [9,6,7,3,5] → 최소값 3 → 맨 앞 9와 교환 → [3,6,7,9,5] |
버블 | 인접한 두 개의 레코드 키 값 비교 후 크기에 따라 레코드 위치 교환 | 1pass [9,6,7,3,5] → 맨 앞 9를 가장 인접한 숫자와 비교 → 9와 6 교환 → [6,9,7,3,5] → 9와 7 → [6,7,9,3,5] → [6,7,3,9,5] → [6,7,3,5,9] |
'정보처리기사' 카테고리의 다른 글
정보처리기사, 실기 요약 정리 (5. 정보보안) (0) | 2025.03.26 |
---|---|
정보처리기사, 실기 요약 정리 (4. 네트워크) (1) | 2025.03.26 |
정보처리기사, 실기 요약 정리 (3. 운영체제) (0) | 2025.03.20 |
정보처리기사, 실기 요약 정리 (1. 소프트웨어 구축) (1) | 2025.03.19 |
정보처리기사 실기, 요구사항 확인 (1) | 2025.02.11 |