문미새 개발일지

정처기 공부 04/06 본문

정보처리기사

정처기 공부 04/06

문미새 2025. 4. 6. 23:40
728x90

트리거

데이터베이스에서 삽입이나 삭제 등, 특정 이벤트가 발생했을 때 자동으로 실행되는 동작


트랜잭션의 특성

 

  • 원자성(Atomicity)
    • 모두 실행되거나, 전혀 실행되지 않아야 한다. 
    • 트랜잭션의 작업은 한 번에 실행되어, 중간에 실패하면 전부 취소된다.
  • 일관성(Consistency)
    • 트랜잭션 실행 전과 후에 데이터는 일관된 상태여야 한다.
    • 계좌로 송금할 때, 돈이 빠지는 것 뿐만 아니라 다른 사람의 계좌에 돈이 들어가야 한다.
  • 고립성(Isolation)
    • 여러 트랜잭션이 동시에 실행되도 서로 간섭하면 안된다.
    • 각각이 독립적으로 실행된 것처럼 보여야 한다.
  • 지속성(Durability)
    • 트랜잭션이 완료되면, 그 결과는 영구적으로 저장되야 한다.
    • 서버가 꺼져도 데이터는 유지되야 한다.

SQL 쿼리

데이터 조회(SELECT)

SELECT * FROM (테이블명);
// 해당 테이블의 모든 컬럼 조회

SELECT * FROM (테이블명) WHERE (조건절);
// 조건에 맞는 데이터 조회

SELECT DISTINCT (컬럼명) FROM (테이블명);
// 중복된 데이터를 제거하고 조회
 

 

데이터 조작어(DML: Data Manipulation Language)

INSERT INTO (테이블명) (컬럼명1, 컬럼명2) VALUES (컬럼값1, 컬럼값2);
// 데이터 삽입

UPDATE (테이블명) SET (컬럼명 = 컬럼값) WHERE (조건절);
// 데이터 수정

DELETE FROM (테이블명) WHERE (조건절);
// 데이터 삭제
 

 

 

데이터 정의어(DDL: Data Definition Language)

CREATE TABLE (테이블명) ( id INT PRIMARY KEY, name VARCHAR(50), age INT );
// 테이블 생성

ALTER TABLE (테이블명) ADD email VARCHAR(100);
// 테이블 수정

DROP TABLE (테이블명);
// 테이블 삭제

DROP TABLE (테이블명) CASCADE;
// 테이블 삭제 시, 관련 자식 테이블 데이터도 삭제
 

 

데이터 제어어(DCL: Data Control Language)

GRANT SELECT, INSERT ON (테이블명) TO (사용자명);
// 권한 부여

REVOKE INSERT ON (테이블명) FROM (사용자명);
// 권한 회수
 

 

트랜잭션 제어어(TCL: Transaction Control Language)

BEGIN;
// 트랜잭션 시작

UPDATE (테이블명) SET age = 30 WHERE name = '영희';
// 작성

COMMIT;
// 변경사항 저장

ROLLBACK;
// 변경사항 취소

 


이상(Anomaly) 현상의 발생 원인

삽입 이상(Insertion Anomaly)

  • 어떤 데이터를 넣으려면 관련 없는 정보까지 같이 넣어야 할 때
  • 예시) 학생 정보를 넣을 때, 수강 과목이 없어도 과목 정보를 넣어야만 등록 가능하다.

삭제 이상(Deletion Anomaly)

  • 하나의 데이터를 삭제하면 원래는 남아 있어야 할 정보까지 사라질 때
  • 예시) 특정 학생 정보를 삭제 시, 과목 정보도 같이 사라진다.

갱신 이상(Update Anomaly)

  • 같은 정보가 여러 군데에 중복되어, 한 곳만 수정하면 데이터가 일관되지 않게 될 때
  • 예시) 여러 과목 정보에 교수 이름이 있을 때, 한 곳만 바꾸면 다른 줄과 내용이 안 맞게 된다.

데이터베이스 설계 5단계

1. 요구 분석(요구 사항 수집)

  • 어떤 데이터가 필요하고, 누가 어떻게 사용할지를 파악하는 단계이며, 사용자나 시스템의 요구를 정리한다.
  • 예시) 학생의 수강 과목과 성적을 관리하고 싶다.

2. 개념적 설계(ER 모델링)

  • 데이터 간의 관계를 그림(ER 다이어그램)으로 표현하는 단계이며, 엔티티(Entity), 속성(Attribute), 관계(Relationship)를 정의한다.
  • 예시) 학생, 과목, 수강같은 개념을 정리

3. 논리적 설계

  • 개념적 설계를 관계형 모델로 바꾸는 단계(테이블 설계)이며, 테이블, 컬럼, 키를 정의한다.
  • 예시) 정규화 수행 (중복 제거, 이상현상 방지)

4. 물리적 설계

  • 실제 DBMS에 맞춰 성능 고려하며 구조 구체화하는 단계이며, 인덱스 설계, 데이터 타입 설정, 저장 구조 최적화 등을 정의한다.
  • 예시) VARCHAR(100), INDEX 설정 등

5. 데이터베이스 구현

  • 실제 DBMS에 테이블과 관계를 생성하고 데이터를 넣는 단계이며, SQL로 테이블을 생성한다.
  • 예시) 초기 데이터 입력, 권한 설정 등

데이터 마이닝(Data Mining)

많은 데이터 집합 속에서 사용자의 요구에 따라 의미 있는 정보나 패턴을 찾아내는 과정을 말하며, 숨겨진 규칙이나 관계, 트렌드를 자동으로 발견하여 의사결정, 예측, 마케팅 등에 활용된다.

 

기법

  • 분류(Classification)
    • 데이터를 미리 정의된 카테고리로 분류하는 기법
    • 예시) 메일이 스팸인지 아닌지 분류
  • 군집화(Clustering)
    • 비슷한 데이터끼리 묶는 기법
    • 예시) 고객을 소비 성향에 따라 그룹 나누기
  • 연관 규칙 학습(Association Rule Learning)
    • 어떤 항목이 함께 발생하는 패턴을 찾는 기법
    • 예시) 우유를 산 사람은 빵도 살 확률이 높다.
  • 예측(Prediction)
    • 미래 값을 예측하는 기법
    • 예시) 기상 예보, 주가 예측
  • 이상 탐지(Anomaly Detection)
    • 정상적이지 않은 이상한 데이터를 찾는 기법
    • 예시) 신용카드 부정 결제 탐지

순수 관계 연산자

연산자 이름 설명
σ 선택(Selection) 조건에 맞는 튜플만 골라낸다.
π 투영(Projection) 원하는 속성만 골라낸다.
합집합(Union) 두 릴레이션에 있는 모든 튜플을 중복 제거하여 합친다.
차집합(Difference) 첫 릴레이션에만 있는 튜플을 찾는다.
× 카티션 곱(Cartesian Product) 두 릴레이션의 모든 튜플을 조합한다.

파생 연산자

연산자 이름 설명
조인(Join) 두 릴레이션을 조건에 따라 연결한다.
÷ 나눗셈(Division) 어떤 조건을 모두 만족하는 튜플을 찾을 때 사용된다.
교집합(Intersection) 두 릴레이션에 공통으로 존재하는 튜플을 찾는다.
ρ 이름 변경(Rename) 릴레이션 또는 속성의 이름을 바꾼다.

함수 종속

어떤 릴레이션 R에서 속성 A의 값이 주어질 때, 속성 B의 값이 항상 하나로 결정된다면, "A → B"라고 표현할 수 있으며, "A가 B를 함수적으로 결정하니, B는 A에 함수 종속되어 있다"라고 말할 수 있다.

  • A는 결정자라고 하며, 다른 속성 값을 결정짓는 역할을 한다.
  • B는 종속자라고 하며, 결정자에 의해 결정되는 속성이다.

DBMS 구성 요소

출처 : https://okdone.tistory.com/132


데이터베이스 장애

  • 트랜잭션 장애(Transaction Failure): 트랜잭션 도중 오류가 발생함. 해당 트랜잭션만 복구하면 된다.
  • 시스템 장애(System Failure): DBMS나 서버가 꺼짐. 메모리 내용이 사라지지만, 디스크는 무사하다.
  • 디스크 장애(Media Failure): 하드디스크가 물리적으로 손상됨. 백업으로 복구해야 한다.
  • 소프트웨어 장애(Application Failure): DBMS나 응용프로그램의 버그, 비정상 종료 등의 발생
  • 인적 장애(Human Error): 사용자가 실수로 데이터를 삭제하거나 잘못된 SQL을 실행함

대처법

  • 로그 파일: 트랜잭션 작업 내용을 기록해서 장애 발생 시 복구에 사용한다.
  • 체크포인트: 일정 시점의 DB 상태를 저장해서 복구를 빠르게 한다.
  • Redo / Undo: 로그 기반으로 재실행(Redo), 되돌리기(Undo)를 수행한다.
  • 백업: 정기적으로 전체 데이터를 외부 저장소에 복사한다.
  • 복제: 데이터를 여러 서버에 동일하게 저장해서 하나가 고장나도 유지가 가능하다.

회복 기법

로그 기반 회복 기법(Log-Based Recovery): 트랜잭션의 작업 내용을 로그 파일에 기록해두고, 장애 시 Redo/Undo를 수행한다.

체크포인트 기법(Checkpointing): 일정 시점에 데이터베이스 상태를 저장해두고, 복구 시 그 이후의 로그만 참조한다.

그림자 페이지 기법(Shadow Paging): 변경 전 페이지를 따로 저장해두고, 장애 시 원래 상태로 롤백한다.

일괄 처리 기법(Deferred Update / Immediate Update): 변경사항을 트랜잭션 끝나기 전까지 실제 DB에 반영하지 않거나, 바로 반영하고 로그로 복구한다.


데이터베이스 보안 3대 요소

  • 기밀성(Confidentiality)
    • 민감한 정보에 대해 권한이 없는 접근을 차단한다.
    • 예시) 관리자만 볼 수 있는 정보 제한, GRANT / REVOKE로 권한 통제
  • 무결성(Integrity)
    • 데이터가 정확하고 신뢰할 수 있어야 한다.
    • 예시) 제약 조건, 트랜잭션
  • 가용성(Availability)
    • 인가받은 사용자는 정보와 자원을 언제든지 사용할 수 있어야 한다.
    • 예시) Dos 방어, 장애 복구 시스템

접근 통제(Access Control)

  • MAC(Mandatory Access Control)
    • 시스템이 강제로 통제한다.
    • 예시) 군사 보안 시스템에서 등급별로 접근
  • DAC(Discretionary Access Control)
    • 사용자가 권한을 부여한다.
    • 예시) 파일 소유자가 읽기/쓰기 권한을 설정
  • RBAC(Role-Based Access Control)
    • 역할 기반으로 통제한다.
    • 예시) 관리자, 게스트 등 역할별로 접근을 제한
728x90

'정보처리기사' 카테고리의 다른 글

정처기 공부 04/13  (0) 2025.04.13
정처기 공부 04/07  (3) 2025.04.08
정처기 공부 04/04  (0) 2025.04.04
정처기 공부 04/03  (0) 2025.04.04
프로그래머스 간단한 논리 연산, 정처기 학습  (0) 2025.03.29