본문 바로가기

sqld

1-7) 관계와 조인의 이해

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

 

 

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

 

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

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

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

 

SQL 작성)

SELECT A.계좌번호, B.관리점 

FROM 계좌 A, 관리점 B

WHERE A.관리점코드 = B.관리점코드

AND A.계좌번호 = '100111';

 

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

예) 누군가에게는 사원번호가 7902이고, 누군가에게는 매니저번호가 7902

매니저번호(MGR)는 매니저의 사원번호를 의미하므로 사원번호(EMPNO) 컬럼과 관련이 있음

≫ 매니저번호의 사원번호를 갖는 데이터를 찾기

 

** 같은 테이블의 조인이므로 ALIAS가 필수 !

 

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

 

 

 

 

'sqld' 카테고리의 다른 글

1-9) Null 속성의 이해  (0) 2024.08.19
1-8) 모델이 표현하는 트랜잭션의 이해  (0) 2024.08.19
1-6) 정규화  (0) 2024.08.18
1-5) 식별자  (0) 2024.08.08
1-4) 관계(Relationship)  (0) 2024.07.29