220719 TIL

Yeoni·2022년 7월 19일
0

국비교육TIL

목록 보기
35/41

국비교육 35일차 Oracle : 계층형 쿼리, ERD

1. 계층형 쿼리

  • 계층형 쿼리는 Spring 프레임워크의 답변형 게시판에서 사용한다. 또한 전자결재에서도 사용된다.
select level  -- level 은 start with-connect by에서만 사용
     , employee_id as 사원번호
     , first_name || ' ' || last_name as 사원명
     , manager_id as 직속결제권자
from employees
start with employee_id = 104 -- start with employee_id = 103 -- start with employee_id = 102 -- start with employee_id = 100
connect by prior manager_id = employee_id;

/*
    start with employee_id = 104
    connect by prior manager_id 103 = employee_id;
    104번에 있는 manager_id 의 값을 찾아서(103)을 manager_id에 넣어줘서 103번과 104번 행을 연결시켜준다. 
    
    그 다음에는 사원번호가 103번이 들어온다. 
    start with employee_id = 103 
    connect by prior manager_id 102 = employee_id;
    103번 행의 manager_id(102) 가 들어온다. 103번과 102번의 연결
    
    그 다음에는 사원번호가 102번이 들어온다. 
    start with employee_id = 102 
    connect by prior manager_id 100 = employee_id;

    그 다음에는 사원번호가 100번이 들어온다. 
    start with employee_id = 100
    connect by prior manager_id NULL = employee_id;
    NULL이기 때문에 여기서 끝난다.
*/

--  !!!!! prior 다음에 나오는 manager_id 컬럼은 start with 되어지는 행의 manager_id 컬럼의 값이다.  !!!!! 
--  매니저아이디와 임플로이아이디 이 순서가 중요하다. 

2. ERD(Entity Relationship Diagram)

1) 제1정규화

  • 비효율적이므로 반복되는 컬럼을 나누어서 다른 개체(테이블)로 만드는 것이 제1정규화
  • 부모테이블의 식별자는 자식테이블의 외부키(Foreign Key)로 전이 되어짐
  • 각 테이블에는 반드시 대표식별자(pk)를 주어야 한다.
  • 정규화의 가장 큰 목적은 데이터의 중복 제거(예: 표 개설과목)
  • 새식별관계에서는 부모테이블의 pk가 자식테이블에서는 fk와 동시에 pk가 되어진다. (실선)
  • 새비식별관계는 부모테이블의 pk가 자식테이블에서 오직 fk만 되어진다. (점선)
  • 반복되어져서 나오는 것이 부모이다.

2) 제2정규화

  • 제1정규화를 끝낸 다음에, 그 식별자가 싱글pk라면 제2정규화는 없다.
  • ★제1정규화 다음에 식별자가 복합pk라면 제2정규화에 들어간다.
  • 식별자가 아닌 컬럼은 식별자 전체(복합pk라면 모든 복합pk)에 대해서 의존적이어야 하지 식별자 일부에 대해서 의존적이라면 그 식별자와 함게 분리해서 새로운 테이블을 만들어야 한다. --> 제2정규화

3) 제3정규화

  • 제3정규화는 식별자가 아닌 컬럼이 식별자가 아닌 컬럼에 의존적이라면 분리해서 새로운 테이블을 만들어야 한다.

4) 제4정규화

  • 다대다 관계를 일대다관계로 깨버리는 것이 제4정규화 이다.
  • 고객과 제품이라고 했을 때 한명의 고객은 여러 제품을 살 수 있고 제품은 여러 고객에게 팔릴 수 있다. --> 다대다관계
  • 다대다관계에서는 어떠한 행동이 있다는 것을 기억하자!!!!!
  • 고객은 제품을 주문하는 거고 제품은 고객에게 팔리는 것과 같은 행동(행위)가 반드시 다대다관계에는 있다.
  • 고객과 제품이 서로 다대다 관계인데 중간에 주문 테이블을 넣어서 다대다를 깨고 일대다를 넣어주는게 제4정규화이다.
  • 논리적으로 나오는 다대다관계를 일대다관계로 빼버리는 것이 제4정규화이다.

5) eXERD

  • 부모테이블에는 있지만 자식테이블에는 없을 수 있다는 표시가 연결선에서 o이다.
  • -는 각각 하나만 들어올 수 있다는 뜻이다
  • 까치발은 여러번 들어올 수 있다는 뜻이다.
  • 인덱스는 테이블-> 속성 -> 인덱스에서 uk등 추가 가능
  • 체크제약 : 속성 제약사항에서 체크
  • 논리모드에서 물리모드로 변환, 테이블속성에서 테이블 명, 컬럼명 하나하나 다 변경
profile
이런 저런 기록들

0개의 댓글