유정잉

Oracle [ 테이블 분해 , 조립 , JOIN ] 본문

Database/Oracle

Oracle [ 테이블 분해 , 조립 , JOIN ]

유정♡ 2024. 2. 15. 15:06

 

  • ' 1 '은 읽기, 눈에 보기 좋은데 수정하기가 일일히 해야해서 굉장히 힘듦.                                                       
  • 그래서 ' 2 ' ' 3 ' 처럼 분해를 해서 표를 쪼개면 name 과 profile 내용이 바뀔 때 author의 내용만 바꿔주면 되니까 수정이 쉬움.
  • 그런데 표를 분해하면 ' 1 ' 보다 읽기가 너무 불편해짐. ' 2 ' 의 author_id 1를 확인하고 ' 3 ' 의 id 1 은 egoing 과 developer를 일일히 확인해야함. 
  • 그래서 ' 1 '이 읽기가 좋고 ' 2 ' ' 3' 이 쓰기가 좋음. 

 


 

  • trade-off 둘다 존재하는 이유. 최종적으로 ' 1 ' ' 2 ' ' 3 ' 장점과 단점을 합성하여 최적의 조건으로 바꿈 - > join 결합
  • 잘 분리하고 순간순간 필요할 때 마다 조립해서 join을 하는 것 -> 관계형 database 의 정말 중요한 기본
JOIN ! 처음 작성할 때는 수정하기 편하게 쪼개서 작성하지만 이것을 읽을 때는 결합 된것 처럼 보게 하는 명령어 ! 

 


 

SELECT * FROM topic  LEFT JOIN author  ON topic.author_id + author.id ; 

 

  • SELECT * FROM topic 이렇게 하면 topic 만 가져옴.
  • LEFT JOIN author 는 토픽테이블 가져오는데 토픽테이블 각각의 행 옆에다가 어써테이블을 붙임.                              근데 이렇게만 하면 무엇을 붙일지를 모름.
  • ON topic.author_id + author.id 첫번째 행 옆에다가 어써테이블을 붙이는데 id 1 을 붙여야 하니까 토픽테이블과 어써테이블의 아이디가 같은 걸 붙여야함.                                                                                                                        즉, 어써의 왼쪽을 기준으로 해서 오른쪽에 테이블을 붙인다.
  • 토픽테이블이 왼쪽에 있기 때문에 left 라고 정의해주고 테이블을 붙여주되 막 붙이는게 아닌 특정한 조건에 따라 테이블을 붙여주는데 그것이 on .
728x90

'Database > Oracle' 카테고리의 다른 글

Oracle [ sql JOIN ]  (0) 2024.02.16
Oracle [ SQL Developer ]  (0) 2024.02.15
Oracle [ SEQUENCE ]  (1) 2024.02.14
Oracle [ 행의 식별자 PRIMARY KEY ]  (0) 2024.02.14
Oracle [ 행 수정 , 행 삭제 ]  (1) 2024.02.14