SQLD: 트랜잭션, NULL, 인조식별자
트랜잭션
트랜잭션이란 데이터베이스의 논리적인 연산 단위 혹은 논리적인 업무단위이다.
1
2
3
4
5
6
7
예: 강태우(A계좌)가 김영희(B계좌)에게 1,000,000원을 송금하려고 합니다. 어떤 일련의 과정을 거쳐 송금 업무가 이루어지는지 생각해보자.
1. A의 계좌에 충분한 잔액이 있는지 확인해본다.
2. B계좌가 실제로 존재하는지 확인한다.
3. A계좌에서 1,000,000원을 차감한다.
4. B계좌의 잔액에 1,000,000원을 더한다.
위와 같은 일련의 과정들을 거쳐서 ‘송금’이라는 미션을 완료한다.
위에서 각 단계는 트랜잭션이라고 볼 수 있다.
식별관계 vs 비식별관계
식별자관계: 외래키(빌려온 키)가 PK(식별자)의 일부분인가?
비식별관계: 외래키(빌려온 키)가 PK(식별자)의 일부분이 아닌가?
NULL 속성의 이해
아직 정해지지 않은 값을 의미한다.
NULL이 필요한 이유
- 아직 어떤 값이 들어오지 않았음을 표현할 수 있다.
- 테이블(=엔터티)의 특성상 행 * 열 형태를 유지해야한다.
IE표기법에서는 그림만 봤을 때 NULL을 사용할 수 있는지 알 수 없다.
Barker표기법에서는 O(Optional Attribute=비필수속성)으로 NULL값이 들어갈 수 있는 곳을 표시할 수 있다. 반면, *은 필수속성이므로 NULL을 넣을 수 없다.
본질식별자 vs 인조식별자
식별자 분류
- 대표성여부: 주식별자 vs 보조식별자
- 스스로생성여부: 내부식별자 vs 외부식별자
- 단일속성여부: 단일식별자 vs 복합식별자
- 대체여부: 본질식별자 vs 인조식별자
본질식별자 - 업무 본연에 들어있는 속성 (부서명 등)
인조식별자 - 식별자로 사용하기 쉽게 임의로 만든 속성 - 편의를 위해 인위로 만든 식별자
인조식별자는 식별자 목록이 늘어나는 것을 방지해준다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.