SQLD 39회차 리뷰

MINK·2023년 3월 15일
0

SQLD 39회

  1. 반정규화 및 수직 분할

    1. 반정규화 방법 - 테이블 통합, 테이블 분할, 중복 테이블 추가, 중복 속성 추가
    2. 수직 분할은 특정 칼럼 단위로 테이블을 분할하여 디스크 I/O(Input/Output)을 줄일 수 있다.
  2. 3차 정규화

    1. 제 2 정규형을 만족하는 상태에서 이행 함수 종속을 제거
  3. 서브타입들을 동시에 조회하는 특성, 수퍼타입과 서브타입을 변환하는 방법

    1. SINGLE TYPE
    2. 하나의 테이블로 통합해서 만드는 SINGLE TYPE 방법
  4. 호가단위 -> 10호가를 기준으로 발주 -> 1003원과 같은 금액으론 발주 불가

    1. 도메인은 속성이 가질 수 있는 값의 범위(값의 허용범위)
  5. 정규화 단계에서 주식별자와 관련성이 가장 낮은 것?

    1. 제 3정규화는 주식별자를 제외한 칼럼 간에 종속성을 확인해서 종속성이 있으면 분할
  6. 엔터티의 종류

    1. 독립 엔터티
      1. 사람, 물건, 장소 등과 같이 현실세계에 존재하는 엔터티
    2. 업무중심 엔터티
      1. Transaction이 실행되면서 발생하는 엔터티
    3. 종속 엔터티
      1. 주로 1차 정규화로 인해 관련 중심엔터티로부터 분리된 엔터티
    4. 교차 엔터티
      1. M:M의 관계를 해소하려는 목적으로 만들어진 엔터티
  7. 고객과 계좌간의 관계

    1. 테이블상의 계좌마스터의 기본키가 계좌번호와 고객번호이므로 전체 고객에게 유일한 번호가 할당
    2. 고객별 유일한 계좌번호가 됨
  8. ERD 작성 절차

    1. 엔터티 그리기 -> 엔터티를 적절하게 배치 -> 엔터티 간에 관계를 설정 -> 관계명을 기술 -> 관계의 참여도를 기술 -> 관계의 필수 여부를 기술
  9. 식별자, 비즈니스 프로세스, 분리되는 식별자

    1. 대체여부에 따라서 본질 식별자와 인조 식별자로 분류되고 -> 본질 식별자는 비즈니스 프로세스에 의해서 만들어지는 식별자
  10. CONNECT BY (PRIOR 하위코드 = 상위코드)

    1. Oracle이 지원하는 질의 방법으로 계층형 구조를 탐색
    2. 정렬할 때 계층혀여 구조까지 보존하려면 ORDER SIBLINGS BY절을 사용
    3. 같은 부모를 가진 로우, 레벨이 같은 형제 로우에 한해서 정렬이 수행
  11. 순위함수

    1. RANK() -> 중복값은 중복등수, 등수 건너뜀
    2. DENSE_RANK() -> 중복값은 중복등수, 등수 안 건너뜀 동일 등수 순위에 영향이없음
    3. ROW_NUMBER() -> 중복값이 있어도 고유 등수 부여
  12. GROUP BY CUBE(DEPTNO, JOB)

    1. CUBE는 제시한 칼럼에 대해서 결합 가능한 모든 집계를 계산
    2. 다차원 집계를 제공하여 다양하게 데이터를 분석
    3. DEPTNO 합계, JOB합계, DEPTNO & JOB 합계, 전체 합계를 조회
    4. 조합할 수 있는 모든 경우의 수가 조합 -> 시스템에 부하를 많이 주는 단
  13. 계층형 쿼리문

    1. ORDER SIBLINGS BY를 수행하면 전체 테이블이 아니라 계층형으로 된 데이터값(특정 컬럼) 기준으로 정렬
    2. NO CYCLE 옵션을 사용가능
  14. CASE WHEN THEN ELSE END

    1. CASE문을 사용해서 정렬의 순서를 변경했으므로 ID가 13, 10번이 먼저 조회

    2. -> AGE DESC이므로 13의 AGE가 가장 먼저 조회.

      ORDER BY (CASE WHEN ID = 10 OR ID = 13 THEN 1 ELSE 2 END),AGE DESC
  15. 문자형

    1. CHAR는 길이가 서로 다르면 짧은 쪽에 스페이스를 추가하여 같은 값으로 판단
    2. 같은 값에서 길이만 서로 다를 경우 다른 값으로 판단 - VARCHAR(가변길이 문자형 : 입력한 크기만큼 할당)
  16. VIEW란?

    1. 논리적으로 존재하는 가상 테이블로서 물리적으로 실제 데이터를 저장하지 않음
    2. 독립성
      1. 테이블 구조가 변경되어도 뷰를 사용하는 응용 프로그램은 변경하지 않아도 됨
    3. 편리성
      1. 복잡한 질의를 뷰로 생성함으로써 관련 질의를 단순하게 작성
    4. 보안성
      1. 숨기고 싶은 정보가 존재하는 경우, 뷰를 생성할 때 해당 컬럼을 빼고 생성하여 정보를 숨김
  17. 교차 엔터티

    1. M:M의 관계를 해소하려는 목적으로 만들어진 엔터티
  18. SUB QUERY - CORRELATED SUBQUERY

    1. 메인쿼리의 값을 서브쿼리에서 주입을 받아서 비교를 하는 것으로 상호연관 서브쿼리
  19. NULL

    1. NULL값은 아직 알려지지 않은 미지의 값이다.
  20. 특정 하나의 값에 대한 자신의 상위를 검색하는 SQL문

    1. (프 -> 자 -> 부 -> 순) PRIOR, 자식, 부모, 순방향 전개
    2. (프 -> 부 -> 자 -> 역) PRIOR, 부모, 자식, 역방향 전개
  21. 서브쿼리에 있는 칼럼을 자유롭게 사용할 수 없음

  22. 분산 데이터베이스

    1. 장점
      1. 데이터베이스 신뢰성과 가용성이 높음
      2. 분산 데이터베이스가 병렬 처리를 수행하기 때문에 빠른 응답이 가능
      3. 분산 데이터베이스를 추가하여 시스템 용량 확장이 쉬움
    2. 단점
      1. 데이터베이스가 여러 네트워크를 통해서 분리되어 있기때문에 관리와 통제가 어려움
      2. 보안관리가 어려움
      3. 데이터 무결성 관리가 어려움
      4. 데이터베이스 설계가 복잡
  23. HASH조인

    1. RANDOM ACCESS로 인해 부하가 걸리는 것은 NESTED LOOP JOIN 방식
    2. 조인 컬럼의 인덱스가 존재하지 않을 경우에도 사용
    3. 해시 함수를 이용하여 조인을 수행하기 때문에 '='로 수행하는 조인으로 동등 조건에만 사용
    4. 해시 함수가 적용될 때 동일한 값을 항상 같은 값으로 해싱됨이 보장
    5. HASH JOIN 작업을 수행하기 위해 해시 테이블을 메모리에 생성
    6. 메모리에 적재할 수 있는 영역의 크기보다 커지면 임시 영역(디스크)에 해시 테이블을 저장
    7. HASH JOIN을 할 때는 결과 행의 수가 작은 테이블을 선행 테이블로 사용
    8. 선행 테이블을 Build input이라 하며, 후행 테이블을 Prove input
  24. 3차 정규형을 만족할 때 학과등록 엔터티의 개수

    1. 2차 정규화 -> 3차 정규화(종속 존재를 분해) 학번, 코스코드(FK), 평가코드(FK) = 3개
  25. GRANT DBA TO USERA; -> GRANT문에 사용된 DBA는 권한들을 묶어서 부여하는?

    1. ROLE
      1. 데이터베이스에서 OBJECT(테이블, 프로시저, 뷰 등)의 권한을 묶어서 관리
  26. 부모행이 주체가되어 행에있는 숫자에따라 자식의 행에 가지고있는 숫자를 카운트해서 값을 출력 2 + 2 + 1 + 2 +2 = 9

profile
parkminkyu velog

0개의 댓글