일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 알고리즘
- 크래프톤 정글
- defee
- CSS
- 자바
- JavaScript
- 시스템콜
- 정보처리기사
- TiL
- 크래프톤정글
- 사이드프로젝트
- 코드트리
- 큐
- 리액트
- 핀토스
- 자바스크립트
- 모션비트
- 소켓
- Flutter
- 스택
- 프로그래머스
- 4기
- pintos
- HTML
- Vue.js
- userprog
- corou
- Java
- 백준
- 나만무
- Today
- Total
문미새 개발일지
정처기 공부 04/06 본문
트리거
데이터베이스에서 삽입이나 삭제 등, 특정 이벤트가 발생했을 때 자동으로 실행되는 동작
트랜잭션의 특성
- 원자성(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 구성 요소

데이터베이스 장애
- 트랜잭션 장애(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)
- 역할 기반으로 통제한다.
- 예시) 관리자, 게스트 등 역할별로 접근을 제한
'정보처리기사' 카테고리의 다른 글
정처기 공부 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 |