SQLD 1과목 (관계와 조인의 이해, 모델이 표현하는 트랜잭션의 이해)

HanJaeHoon·2024년 8월 4일

관계(Relationship)의 개념


  • 엔터티의 인스턴스 사이의 논리적인 연관성
  • 엔터티의 정의, 속성 정의 및 관계 정의에 따라서도 다양하게 변할 수 있음
  • 관계를 맺는다는 의미는 부모의 식별자를 자식에 상속하고, 상속된 속성을 매팽키(조인키)로 활용 -> 부모, 자식을 연결함

관계의 분류

  • 관계는 존재에 의한 관계와 행위에 의한 관계로 분류

  • 존재 관계는 엔터티 간의 상태를 의미
    ex) 사원 엔터티는 부서 엔터티에 소속

  • 행위 관계는 엔터니 간의 어떤 행위가 있는 것을 의미
    ex) 주문은 고객이 주문할 때 발생

조인의 의미


  • 결국 데이터의 중복을 피하기 위해 테이블은 정규화에 의해 분리된다. 분리되면서 두 테이블은 서로 관계를 맺게 되고, 다시 이 두 테이블의 데이트를 동시에 출력하거나 관계가 있는 테이블을 참조하기 위해서는 데이터를 연결해야 하는데 이 과정을 조인 이라고 한다.

  • SQL 작성의 예)
    SELECT A.계좌번호, B.관리점
    FROM 계좌 A, 관리점 B
    WHERE A.관리점코드 = B.관리점코드
    AND A.계좌번호 = '100111'

계층형 데이터 모델

  • 자기 자신끼리 관계가 발생. 즉, 하나의 엔터티 내의 인스턴스끼리 계층 구조를 가지는 경우를 말한다.
  • 계층 구조를 갖는 인스턴스끼리 연결하는 조인을 셀프 조인이라고 함(같은 테이블을 여러 번 조인)

트랜잭션이란?


  • 하나의 연속적인 업무 단위를 말함
  • 트랙잭션에 의한 관계는 필수적인 관계 형태를 가짐
  • 하나의 트랜잭션에는 여러 SELECT, INSERT, DELETE, UPDATE 등이 포함될 수 있음

** 계좌이체 예시)

A 고객이 B 고객에게 100 만원을 이체하려고 한다고 가정

STEP 1) A 고객의 잔액이 100 만원 이상인지 확인
STEP 2) 이상이라면, A 고객 잔액을 -100 UPDATE
STEP 3) B 고객 잔액에 +100 UPDATE

이 때, 2번과 3번 과정이 동시에 수행되어야 한다. 즉, 모두 성공하거나 모두 취소돼야 함(All or Nothing)
=> 이런 특성을 갖는 연속적인 업무 단위를 트랜잭션이라고 한다.

** 주의

  1. A 고객 잔액 차감과 B 고객 잔액 가산이 서로 독립적으로 발생하면 안됨
    -> 각각의 INSERT문으로 개발되면 안됨
  2. 부분 COMMIT 불가
    -> 동시 COMMIT 또는 ROLLBACK 처리

필수적, 선택적 관계와 ERD

  • 두 엔터티의 관계가 서로 필수적일 때 하나의 트랙잭션을 형성
  • 두 엔터티가 서로 독립적 수행이 가능하다면 선택적 관계로 표현

IE 표기법)

  • 원을 사용하여 필수적 관계와 선택적 관계를 구분
  • 필수적 관계에는 원을 그리지 않는다.
  • 선택적 관게에는 관계선 끝에 원을 그린다.

BAKER 표기법)

  • 실선과 점선으로 구분
  • 필수적 관계는 관계선을 실선으로 표기
  • 선택적 관계는 관계선을 점선으로 표기
profile
게임 개발자

0개의 댓글