CS공부/데이터베이스

3.3-3.4 트랜잭션, 조인

Jaemin0604 2024. 8. 19. 21:19

3.3.1 트랜잭션

  • 데이터베이스의 상태를 바꾸기 위해 수행하는 작업의 단위 또는 일련의 연산
  • 특징-ACID
    • 원자성(Atomicity): 트랜잭션이 데이터베이스에 완전히 반영되거나 아예 실행되지 않아야함
    • 일관성(Consistency): 트랜잭션 수행이 완료된 데이터베이스는 일관성이 있음
    • 독립성(Isonlation): 수행 중인 트랜잭션에 다른 트랜잭션이 끼어들 수 없음
    • 영속성(Durability): 완료한 트랜잭션의 결과가 데이터베이스에 영구적으로 반영됨
  • 명령어
    • COMMIT: 트랜잭션이 정상적으로 종료되어 데이터베이스에 변경사항을 반영하는 명령어
    • ROLLBACK: 트랜잭션이 비정상적으로 종료되어 트랜잭션이 수행한 변경 사항을 취소하고 데이터베이스를 이전 상태로 돌리는 명령어
    • SAVEPOINT: 트랜잭션에서 특정지점을 지정하는 명령어로 ROLLBACK과 함께 사용하면 해당 지점까지 되돌릴 수 있음
  • 격리수준: 여러 트랜잭션이 서로 영향을 미치지 않고 실행될 수 있는 단계

3.3.2 락

  • 트랜잭션이 처리되는 순서를 보장하기 위한 방법
  • 공유 락: 데이터를 읽는 연산, 데이터의 일관성에 영향을 주지 않아 데이터에 여러 공유 락이 동시에 접근할 수 있음
  • 베타 락: 데이터를 수정하는 연산, 데이터의 일관성을 유지하기 위해 데이터에 하나의 베타 락만 접근 가능

데이터베이스의 트랜잭션도 프로세스처럼 교착상태에 빠질 수 있음

  • 해결방안
    • 예방 기법: 트랜잭션 처리가 시작되기 전에 필요한 데이터에 대해 미리 락을 얻는 방식
    • 회피 기법: 트랜잭션이 들어온 순서에 따라 교착 상태를 회피하는 방식

3.3.3 이상

  • 트랜잭션을 처리하는 중에 속성 간 종속이나 데이터 중복으로 발생하는 문제
  • 삽입 이상: 데이터 삽입시 의도치 않은 다른 데이터도 삽입되는 현상
  • 갱신 이상: 데이터 갱신시 일부 튜플만 갱신되어 데이터 모순이 발생하는 현상
  • 삭제 이상: 데이터 삭제시 의도하지 않은 데이터도 삭제되는 현상

3.3.4 정규화

  • 데이터베이스의 이상 현상을 해결하기 위해 테이블을 분해하는 것
  • 테이블을 분해하느라 연산 시간이 증가한다는 단점이 있음
  • 정규형: 정규화한 결과

3.4.1 조인

  • 여러 테이블을 합쳐 원하는 데이터를 얻는 작업
  • 테이블을 하나로 합치려면 각 테이블에서 공통된 열을 이용

3.4.2 내부 조인

  • 2개 이상의 테이블에서 공통 속성을 가진 데이터를 검색하기 위한 연산
select [조회하려는 열]
  from [테이블1] inner join [테이블2]
  	on [조인에 대한 조건]

3.4.3 외부 조인

  • 조인 조건에 해당하는 속성 값이 없는 데이터까지 모두 조회하는 연산
  • 이때, 존재하지 않는 데이터에 대해서는 NULL로 표기
  • 왼쪽 외부 조인: 연산자 왼쪽 테이블의 모든 데이터를 결과 테이블에 조회
  • 오른쪽 외부 조인: 연산자 오른쪽 테이블의 모든 데이터를 결과 테이블에 조회
  • 완전 외부 조인: 양쪽 테이블에서 조건을 만족하지 않는 데이터가 있더라도 모두 포함해 결과 테이블에 조회
select [조회하려는 열]
  from [테이블1] [left|right|full] outer join [테이블2]
  	on [조인에 대한 조건]