살아가는 이유_EU
내가 살아가는 이유, 삶
살아가는 이유_EU
전체 방문자
오늘
어제
  • 삶 (159)
    • 이유's EATERY (16)
      • 맛집 (10)
      • 까페 (4)
      • 맛있는 Recipe (1)
    • 이유's LIFE (16)
      • 국내여행 (5)
      • 해외여행 (2)
      • 운동 (1)
      • 취업정보 (0)
      • 끄적끄적 (5)
      • 일기쟝 (3)
      • 세상 이야기 (0)
      • 결혼 준비 (0)
    • 이유's Programming (43)
      • JavaScript (6)
      • Java (7)
      • C++ (0)
      • DBMS (24)
      • Spring (3)
      • til (1)
      • HTTP (2)
    • 이유's REVIEW (13)
      • BOOK (6)
      • PROGRAM or MOVIE (5)
      • PRODUCT 제품리뷰 (2)
    • 이유's STUDY (31)
      • 수업 관련 (2)
      • IT 시사 (2)
      • IT NEWS (2)
      • IVIEW (0)
      • IOS 앱 만들기 (0)
      • 알고리즘 문제풀이 (23)
      • PM data literacy (2)
    • 이유's ENGLISH (13)
      • Writing about something! (12)
      • Feedback (1)
      • TIL (0)
    • 이유's DB 공부 (1)
      • MySQL DB (0)
      • Postgre (1)
    • Computer 공부 (17)
      • Backend question (10)
      • Clean architecture (2)
      • Operating system (2)
      • Network (3)
      • 항해 (0)

블로그 메뉴

  • 홈
  • EATERY's 맛집
  • CAFE 까페
  • Recipe 레시피
  • IT 공부
  • 방명록
  • 태그

공지사항

인기 글

태그

  • 용인맛집
  • key 로 접근
  • 묵리
  • 고메커피
  • 어게인마이라이프
  • 아메리카토노
  • 스테이크
  • 흑임자 크림
  • 송계옥
  • 용인추천
  • 고메동 카페
  • 인절미 티라미수
  • 현명하게 리액트
  • Array로 접근
  • 용인까페
  • go hand in hand
  • 자바스크립트
  • React.memo
  • 피지오필로소피
  • 맛집
  • have something to do with뜻
  • 렌더링 수 줄이기
  • 삼돈식탁
  • 스쿤브레드
  • memoziation
  • 영어공부
  • 자세요정
  • map 하는 법
  • 파스타맛집
  • have something to do with

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
살아가는 이유_EU

내가 살아가는 이유, 삶

[ 2 -1 ] 관계와 조인의 이해
이유's Programming/DBMS

[ 2 -1 ] 관계와 조인의 이해

2021. 3. 16. 10:11
728x90
반응형

이제 정말 DBMS 에서 중요한 내용인 관계에 대해서 확인해보자~. 

관계는 사전적으로 정의하면 ' 상호 연관성이 있는 상태' 즉 어떤 테이블과 어떤 테이블이 서로 관계가 있어 연결된 상태이다. 

 

아까 살펴본 대로, 1:다 / 1:1 / 다:1 / 다:다 등 다양한 관계가 존재하였다. 

 

이 관계를 현상적으로 본다면, 부모의 식별자를 자식에게 상속시키는 행위다. 부모의 식별자를 이제 자식의 일반속성으로 상속하면 비식별관계라고 우리가 칭하였다.!

 

- 즉 관계를 맺는다는 건 식별자를 상속하고 상속된 속성을 매핑키로 사용하는 것 ! 

- 우리는 이 관계를 JOIN이라는  옵션을 통해서 수행될 수 있는 것이다. 

 

 

관계 테이블의 예시

 

위처럼 고객테이블이 부모테이블이 되고 주문테이블이 자식 테이블이 되어 해당 고객테이블의 고객번호가 주문테이블의 일반속성 즉 FK 로 들어간 것을 확인해볼 수 있다. 

 

따라서 여기서의 JOIN KEY 는 바로 " 고객 번호 " 라는 거

 

join 문의 예시 

SELECT B.고객명
FROM 주문 A, 고객 B
WHERE A.주문번호 ='110001' 
AND A.고객번호 = B.고객번호

 

 

여기까지 알아봤으니 지금까지는 일반적인 모델에 대한 예시를 알아봤다. 지금부터는 다양한 모델 관계에 대해서 알아보도록 하자.  

 

* 계층형 데이터 모델 

 

- 이 모델은 두 엔터티 간의 관계가 아니라 자기 자신에게 관계가 발생하는 경우이다. 이는 말 그대로 계층구조를 가진 데이터를 지칭하는 것이다. 정말 우리가 사원테이블을 봤을 때 상위자의 FK 의 경우는 물고 또 물려 있는 경우이므로 이럴 경우 계층형 데이터 모델이라고 볼 수 있겠다. 

 

 

이런식으로 약간 꼬리를 무는 테이블 형태로가지고 가게 된다. 

SELECT B.사원명
FROM 사원테이블 A, 사원테이블 B
WHERE A.사원명 ='임선호'
AND A.상위자 = B.사원명

 

* 상호배타적 관계 

 

상호 배타적 관계는 약간 서로 침범할 수 없는 관계와 같다. 예를 들면 개인고객과 법인고객 과 같은 예시가 그럴 수 있다. 개인고객이자 법인고객일 수가 없으므로 이는 상호 배타적인 관계이다. 

 

 

이럴 경우에 join 케이스는 어떻게 되어야 할까? 

SELECT B.개인고객명 
FROM 주문 A, 개인고객 B
WHERE A. 주문번호 = 110001 
AND A. 고객구분코드 = '01'
AND A.개인/법인번호 = B.개인번호
UNION ALL 
SELECT B.법인고객명 
FROM 주문 A, 법인고객 B
WHERE A. 주문번호 = 110001 
AND A. 고객구분코드 = '02'
AND A.개인/법인번호 = B.법인번호

 

 

혹은 이거 말고도 outer join 을 이용해서 보일 수도 있다. 

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'이유's Programming > DBMS' 카테고리의 다른 글

[ 3 -1 ] DBMS 내장 함수  (0) 2021.03.19
[ 식별자 ] 본질식별자와 인조식별자  (0) 2021.03.18
2-2. 정규화 ( 제 3 정규형, 반정규화와 성능 )  (0) 2021.03.15
2-1. 정규화 ( 제 1 정규형, 제 2 정규형 )  (0) 2021.03.08
1-4. 관계, 식별자  (0) 2021.03.05
    '이유's Programming/DBMS' 카테고리의 다른 글
    • [ 3 -1 ] DBMS 내장 함수
    • [ 식별자 ] 본질식별자와 인조식별자
    • 2-2. 정규화 ( 제 3 정규형, 반정규화와 성능 )
    • 2-1. 정규화 ( 제 1 정규형, 제 2 정규형 )
    살아가는 이유_EU
    살아가는 이유_EU
    안녕하세요. 초보개발자의 일상을 담은 블로그입니다.

    티스토리툴바