트랜잭션: 데이터베이스의 상태를 바꾸기 위해 수행하는 작업의 단위 또는 일련의 연산
*특성
- Atomicity(원자성): 트랜잭션이 db에 완전히 반영되거나 아예 실행되지 않아야 함
- Consistency(일관성): 트랜잭션 수행이 완료된 db는 일관성이 있음
- Isolation(독립성): 수행 중인 트랜잭션에 다른 트랜잭션이 끼어들 수 없음
- Durability(영속성): 완료한 트랜잭션의 결과가 db에 영구적으로 반영됨

*트랜잭션 제어 명령어 TCL(Transaction Control Language)
- Commit: 트랜잭션이 정상적으로 종료되어 변경 사항을 반영
- Rollback: 수행한 변경 사항을 취소하고 데이터 베이스를 이전 상태로 되돌리는 명령어
- Savepoint: 특정 지점을 지정하는 명령어
*트랜잭션 격리 수준
: 여러 트랜잭션이 서로 영향을 미치지 않고 실행될 수 있는 단계
- Read Uncommited: 트랜잭션의 commit 여부와 상관없이 다른 트랜잭션이 데이터 조회 가능
- Read Commited: 트랜잭션이 commit된 데이터만 다른 트랜잭션 조회 가능
- Repeatable Read: 트랜잭션이 읽은 데이터를 다른 트랜잭션이 갱신, 삭제 불가
- Serializable: 트랜잭션이 읽은 데이터를 다른 트랜잭션이 갱신, 삭제, 삽입 불가
락(lock): 트랜잭션이 처리되는 순서를 보장하기 위한 방법
- 공유 락: 데이터를 읽는 읽기 락으로도 불림, 데이터의 일관성에 영향을 주지 않음
- 베타 락: 데이터를 수정하는 쓰기 락으로도 불림, 데이터에 하나의 베타 락이 접근 중일 때 다른 베타 락이 접근 불가
*트랜잭션의 교착 상태 해결 방법
1. 예방 기법: 필요한 데이터에 대해 미리 락을 얻음
2. 회피 기법: 트랜잭션이 들어온 순서에 따라 교착 상태 회피
3. wait-die: 락을 얻을 때까지 기다림
4. wound-wait: 락을 빼앗음
이상(anomaly): 트랜잭션을 처리하는 중에 속성 간 종속이나 데이터 중복으로 발생하는 문제
- 삽입 이상: 의도치 않은 다른 데이터도 삽입
- 갱신 이상: 일부 튜플만 갱신되어 데이터 모순 발생
- 삭제 이상: 의도하지 않은 데이터도 삭제
정규화: 데이터베이스의 이상 현상을 해결하기 위해 테이블을 분해하는 것
정규형: 정규화한 결과

제1정규형: 테이블의 모든 속성 값이 더 이상 분해될 수 없는 원자 값으로 구성되어야 함

제2정규형: 기본 키의 진부분집합이 결정자가 될 수 없도록 테이블을 분해해야 완전 함수 종속 만족

부분집합: 집합 A의 모든 원소가 집합 B에 포함될 때
진부분집합: 집합 A가 집합 B의 부분집합이지만, 집합 B와 같지 않을 때
제3정규형: 제2정규형 + 이행적 종속이 없어야 함


보이스-코드 정규형 (BCNF): 모든 결정자가 후보 키가 되도록 테이블을 분리


제4정규형: 제3정규형 + 다치 종속 제거

제5정규형: 제4정규형 + 조인 종속 X
'공부 기록 > CS' 카테고리의 다른 글
| 3단원 요약정리 (0) | 2024.08.01 |
|---|---|
| 3.4 조인 (0) | 2024.07.31 |
| 3.2 관계형 데이터베이스 (0) | 2024.07.29 |
| 3.1 데이터베이스의 종류 (0) | 2024.07.26 |
| 2단원 요약정리 (0) | 2024.07.25 |