• [SQLD] 관계와 조인

    2025. 2. 16.

    by. hyunji1109

    개념

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

     

     

     

    분류

    • 관계는 존재에 의한 관계와 행위에 의한 관계로 분류
    • 존재 관계는 엔터티 간의 상태를 의미
      • ex) 사원 엔터티는 부서 엔터티에 소속
    • 행위 관계는 엔터티 간의 어떤 행위가 있는 것을 의미
    • 주문은 고객이 주문할 때 발생

     

     

    조인의 의미

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

     

     

    👉계좌 테이블은 제 3 정규화에 의해 계좌 + 관리점으로 분리됨. 이때 관리점 코드를 같이 공유함. 만약 계좌 정보와 함께 관리점 정보를 함께 출력할 경우 두 데이터를 조인하여 출력함. 즉, 양 테이블의 데이터를 함께 출력하거나 참조하기 위해 두 데이터를 연결하는 과정을 조인, 연결키를 조인키라고 함

     

    ❓ 계좌번호 100111의 관리점이 어딘지를 찾으려면?

     

     

     계좌번호 테이블에서 계좌번호가 10111 데이터 확인
    계좌번호 테이블에서 계좌번호가 10111 데이터의 관리점코드(1000)를 확인
     관리점코드(1000)를 관리점 테이블에 전달하여 관리점 확인(서울점)

     

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

     

    계층형 데이터 모델

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

     

    아래 EMP 테이블은 직원테이블 순서대로 사번, 이름, 직무, 매니저번호, 입사일, 급여, 보너스, 부서번호 컬럼으로 구성.

    이 때, 매니저번호(MGR)는 매니저의 사원번호를 의미하므로 사원번호(EMPNO) 컬럼과 관련이 있다.
    즉, SMITH 의 매니저 이름을 확인하는 과정을 보면, SMITH의 매니저 번호를 확인(7902)
    해당 번호의 사번을 갖는 데이터를 찾으면 FORD 라는것을 확일할 수 있음

     

     

     

    SQL로 표현하면,

     

     

    상호배타적 관계

    • 두 테이블 중 하나만 가능한 관계를 말함
    • 주문 엔터티에는 개인 또는 법인번호 둘 중 하나만 상속될 수 있음
      • 상호배타적 관계
      • 주문은 개인고객이거나 법인고객 둘 중 하나의 고객만이 가능

    'CS > SQL' 카테고리의 다른 글

    [SQLD] Null 속성  (0) 2025.02.17
    [SQLD] 모델이 표현하는 트랜잭션  (0) 2025.02.17
    [SQLD] 정규화  (0) 2025.02.15
    [SQLD] 식별자(Identifier)  (0) 2025.02.12
    [SQLD] 관계(Relationship)  (0) 2025.02.10

    댓글