공든탑앱 열기

모델이 표현하는 트랜잭션

SQLD (SQL 개발자) · 데이터 모델과 SQL · 약 7분

쉽게 말하면

트랜잭션은 '한꺼번에 다 되거나, 아예 안 되거나' 해야 하는 작업 묶음이에요. 계좌 이체에서 출금만 되고 입금이 안 되면 큰일이죠. 모델에서 꼭 함께 있어야 한다고(필수 관계) 표시된 데이터는 같은 묶음으로 한 번에 저장해야 해요.

시험용 정의

트랜잭션은 "모두 성공하거나 모두 취소되어야 하는" 하나의 논리적 작업 단위다. 데이터 모델은 관계의 필수·선택 표기로 어떤 데이터가 한 트랜잭션으로 함께 처리되어야 하는지 보여 준다. 필수 관계로 이어진 데이터는 같은 트랜잭션에서 함께 입력해야 한다.

비유로 이해하기

계좌 이체는 "내 통장 출금"과 "상대 통장 입금"이 한 묶음이다. 출금만 되고 입금이 안 되면 안 된다. 주문과 주문상세도 이렇게 한 묶음이다.

자세히

먼저 알아 둘 말

말뜻
트랜잭션한꺼번에 처리되어야 하는 작업 묶음. 중간에 실패하면 전부 되돌린다
COMMIT트랜잭션의 변경을 확정하는 SQL 명령
ROLLBACK트랜잭션의 변경을 모두 취소하는 SQL 명령
필수 관계상대 인스턴스가 반드시 있어야 하는 관계. IE 표기법에서 | 로 그린다

모델에서 트랜잭션 읽기

관계 표기뜻트랜잭션
주문 ―|― 주문상세 (양쪽 필수)주문에는 상세가 최소 하나 있어야 하고, 상세는 주문에 속해야 한다주문과 주문상세를 한 트랜잭션으로 입력
고객 ―O― 주문 (고객 쪽에서 선택)고객은 주문이 없어도 된다고객 가입과 주문은 따로 처리 가능

SQL로 옮기면

주문 한 건을 저장할 때 INSERT INTO 주문 ...과 INSERT INTO 주문상세 ...를 같은 트랜잭션으로 묶고, 모두 성공하면 COMMIT, 하나라도 실패하면 ROLLBACK한다. 이렇게 해야 "상세 없는 주문"이나 "주문 없는 상세" 같은 반쪽 데이터가 남지 않는다.

시험에 이렇게 나와요

출제 범위·공식 안내 기반

확인 문제

Q1. 주문과 주문상세는 반드시 함께 저장되어야 한다(상세 없는 주문은 의미가 없다). 모델에서 이를 어떻게 나타낼까요?

  1. 두 엔터티 사이를 선택 관계로
  2. 관계를 그리지 않는다
  3. 두 엔터티를 따로 트랜잭션 처리한다고 적는다
  4. 두 엔터티 사이를 필수 관계로
정답 보기

4번 두 엔터티 사이를 필수 관계로

서로 꼭 함께 있어야 하는 데이터는 필수 관계(IE 표기 |)로 그린다. 필수 관계로 묶인 데이터는 한 트랜잭션으로 함께 저장해야 한다는 뜻이 된다.

Q2. 트랜잭션에 대한 설명으로 옳은 것은?

  1. SQL 한 문장만 트랜잭션이 될 수 있다
  2. 트랜잭션은 조회(SELECT)에만 쓰인다
  3. 여러 작업을 모두 성공 또는 모두 취소로 처리하는 논리적 단위다
  4. 트랜잭션은 모델과 관계없다
정답 보기

3번 여러 작업을 모두 성공 또는 모두 취소로 처리하는 논리적 단위다

여러 DML이 하나의 트랜잭션이 될 수 있고, 모델의 필수 관계가 그 범위를 알려 준다.

Q3. 주문과 주문상세가 양쪽 필수 관계일 때 올바른 처리는?

  1. 주문과 상세를 한 트랜잭션으로 넣고 함께 COMMIT
  2. 상세만 넣고 주문은 필요할 때
  3. 각각 다른 사용자가 입력
  4. 주문만 먼저 COMMIT하고 상세는 나중에
정답 보기

1번 주문과 상세를 한 트랜잭션으로 넣고 함께 COMMIT

필수 관계는 함께 있어야 의미가 있으므로 한 트랜잭션으로 처리한다.

Q4. IE 표기법에서 관계가 '선택'임을 나타내는 기호는?

  1. ◇
  2. O
  3. 까마귀발
  4. |
정답 보기

2번 O

O는 선택(없을 수 있음), |는 필수.

Q5. 트랜잭션 도중 한 작업이 실패하면 어떻게 되나?

  1. 실패한 작업만 다시 한다
  2. 다음 트랜잭션으로 넘긴다
  3. 성공한 작업만 반영된다
  4. 모든 작업이 취소된다
정답 보기

4번 모든 작업이 취소된다

트랜잭션은 모두 성공하거나 모두 취소된다.

Q6. 고객은 주문이 없어도 되는 선택 관계일 때 고객 등록은?

  1. 고객만 따로 처리할 수 있다
  2. 주문을 먼저 넣어야 한다
  3. 주문과 반드시 함께 처리한다
  4. 등록할 수 없다
정답 보기

1번 고객만 따로 처리할 수 있다

선택 관계는 각각 따로 처리될 수 있다. 필수 관계는 같은 트랜잭션으로 묶는다.

헷갈리기 쉬운 O·X

선택 관계로 연결된 두 엔터티는 반드시 같은 트랜잭션으로 처리해야 한다.

정답 보기

X 선택 관계는 상대가 없어도 되므로 따로 처리할 수 있다.

트랜잭션 중 일부 작업이 실패하면 ROLLBACK으로 전체를 되돌린다.

정답 보기

O All or Nothing.

데이터 모델의 관계 표기만 보고는 트랜잭션 범위를 전혀 알 수 없다.

정답 보기

X 필수 관계 표기로 함께 처리할 데이터를 알 수 있다.

함께 보면 좋은 개념