Page 15 -
P. 15
그림 2-2 키 컬럼과 관계 맺기
회원정보 테이블 기본 키 회원정보 테이블 참조 키 주소 테이블 기본 키
키 컬럼 이름 성별 나이 주소id 키 컬럼 도시 구 동 ...
(주소)
1 홍길동 남 33 1001
1001 서울시 종로구 평창동 ...
2 김유신 남 45 1002
1002 서울시 서대문구 연희동 ...
3 신사임당 여 38 1003
1003 부산시 중구 중앙동 ...
... ... ... ... ...
... ... ... ... ...
... ... ... ... ...
... ... ... ... ...
회원정보 테이블
주소 테이블
2.1.4 트랜잭션 처리
트랜잭션(transaction)은 거래라는 뜻입니다. 그래서 트랜잭션을 설명할 때 은행
거래를 주로 예로 들죠. 가령 홍길동이 김유신에게 10만 원을 송금한다고 해
봅시다. 먼저 홍길동 계좌에서 10만 원을 인출한 다음 김유신 계좌에 10만 원
을 입금해야겠죠. 그런데 거래 중간에 원인 모를 장애가 발생해 홍길동 계좌에
서는 10만 원이 빠졌는데 김유신 계좌에는 10만 원이 입금되지 않았다면 어떻
게 될까요? 사람들이 은행을 불신해 뱅크런 사태가 일어날지도 모릅니다.
장애가 발생하지 않으면 좋겠지만, 현실적으로 장애 발생 가능성은 존재합니
다. 따라서 이런 경우에는 거래 자체를 없었던 것으로 처리합니다. 즉, 김유신
계좌에 10만 원이 입금되지 않는다면 홍길동 계좌에서 10만 원이 인출된 것을
없었던 것으로 처리하고, 김유신 계좌에 10만 원이 입금된 것을 확인한 후에
거래가 성사됐다고 처리하는 것입니다.
RDBMS에서도 마찬가지입니다. 한 테이블에 있는 특정 데이터를 삭제한 후
연이어 새로운 데이터를 입력한다고 가정해 보죠. 삭제하고 입력할 때 장애가
발생해 입력 작업만 이루어졌다면 제대로 처리된 것이 아닙니다. 그래서 최종
입력 작업이 완료되기 전에 오류가 발생하면 작업 전 상태로 되돌리고, 입력
작업이 정상적으로 끝난 후에 모든 변경 내용을 최종 적용합니다. RDBMS에
2장 관계형 데이터베이스란? 27
누구나 쉽게 SQL(본문)최종.indd 27 2019-05-28 오후 5:08:45