WorkHard/자격증

[SQLD 개발자] 기출문제 공부(37회)

코딩공대 2023. 3. 8. 19:17
728x90

1. ER 모델?

  • 도메인이란?
    • 성별이라는 속성(Attribute)에서 값이 가질 수 있는 허용범위를 나타낸다.
  • 도메인의 특징?
    • 릴레이션의 속성이 가질 수 있는 허용된 값의 범위를 의미한다.
    • 속성명과 도메인명은 항상 동일할 필요는 없다.
    • 모든 속성들의 도메인은 원자값이어야 한다.
    • 외래키(Foreign Key)는 주 릴레이션을 참조하는 키를 의미한다.
    • 외래키(Foreign Key)는 참조 무결성을 준수하기 위해서 사용된다.
  • 카다닐리티(Cardinality) : 튜플(행)수 = 인스턴스의 수
    • 중복도가 낮으면 카다닐리티가 높다고 표현한다.
    • 중복도가 높으면 카다닐리티가 낮다고 표현한다.
    • 카다닐리티는 전체 행에 대한 특정 컬럼의 중복 수치를 나타내는 지표이다.
    • 이름같은 경우는 주민등록번호에 비해 중복되는 값이 많으므로, 이름은 주민등록번호에 비해 카다닐리티가 낮다고 할 수 있다.
  • 인스턴스(Instanse) : 값
  • 차수(Degree) : 테이블 컬럼의 갯수(속성의 수)이다.

2. 슈퍼 / 서브타입 데이터 모델의 변환타입?

  • One To One Type 
    • 슈퍼타입과 서브타입을 개별 테이블로 도출한다.
    • 테이블의 수가 많아서 조인이 많이 발생하고 관리가 어렵다.
  • Plus Type
    • 슈퍼타입과 서브타입 테이블로 도출한다.
    • 조인이 발생하고 관리가 어렵다.
  • Single Type
    • 슈퍼타입과 서브타입을 하나의 테이블로 도출하는 것이다.
    • 조인성능이 좋고 관리가 편리하지만, IO 성능이 나쁘다.

3. 데이터베이스 모델링의 특징

  • 추상화(Abstraction) : 현실세계를 간략하게 표현한다.
  • 단순화(Simple) : 누구나 쉽게 이해할 수 있도록 표현한다.
  • 명확성(Clarity) : 명확하게 의미가 해석되어야 하고 한가지 의미를 가져야 한다.

4. 속성의 종류?

  • 기본속성
    • 비즈니스 프로세스에서 도출되는 본래의 속성이다.
    • 회원ID, 이름, 계좌번호, 주문일자 등이 있다.
  • 설계속성
    • 데이터모델링 과정에서 발생되는 속성이다.
    • 유일한 값을 부여한다.
    • 상품코드, 지점코드 등이 있다.
  • 파생속성
    • 다른 속성에 의해서 만들어지는 속성이다.
    • 합계, 평균 등이 있다.

5. 성능을 고려한 모델링 순서?

  • 데이터모델링을 할 때 정규화를 정확하게 수행
  • 데이터베이스 용량산정 수행
  • 데이터베이스에 발생되는 트랜잭션 유형 파악
  • 용량과 트랜잭션의 유형에 따라 반정규화 수행
  • 이력모델의 조정, PK / FK 조정, 슈퍼타입 / 서브타입 조정 수행
  • 성능관점에서 데이터 모델 검증

6. Hash Join?

  • Hash Join은 두 개의 테이블 간에 조인을 할 때 범위검색이 아닌 동등조인(EQUI-Join)에 적합한 방식이다.
  • 작은 테이블을 먼저 읽어서 Hash Area에 해시 테이블을 생성하는 방법으로 큰 테이블로 Hash Area를 생성하면 과다한 Sort가 유발 되어 성능이 저하될 수 있다.
  • Hash Join은 수행 빈도가 낮고 수행시간이 오래 걸리는 대용량 테이블에 대한 조인을 할 때 유용하다.
  • 온라인 트랜잭션(OLTP)에는 Hash Join보다는 적은 데이터를 조인할 때 유리한 구조인 Nested Loop 방식이 유용하다. 

7. Join 기법?

  • 중첩 반복 조인(Nested Loop Join)
    • 좁은 범위에 유리하다.
    • 유리순차적으로 처리하며, Random Access위주이다.
    • 후행(Driven)테이블에는 조인을 위한 인덱스가 생성되어 있어야 한다.
    • 실행속도 = 선행 테이블 사이즈 * 후행 테이블 접근횟수
  • 색인된 중첩 반복조인, 단일 반복 조인(Single Loop Join)
    • 후행(Driven)테이블의 조인 속성에 인덱스가 존재할 경우 사용한다.
    • 선행 테이블의 각 레코드들에 대하여 후행 데이블의 인덱스 접근 구조를 사용하여 직접 검색 후 조인하는 방식이다.
  • 정렬 합병 조인(Sort Merge Join)
    • Sort Merge 조인은 해당 테이블의 인덱스가 없을때 수행이 된다.
    • 테이블을 정렬(Sort)한 후에 정렬된 테이블을 병합(Merge)하면서 조인을 실행한다.
    • 조인 연결고리의 비교 연산자가 범위 연산(>, <)인 경우 Nested Loop Join보다 유리하다.
    • 두 결과집합의 크기가 차이가 많이 나는 경우에는 비효율적이다.
  • 해시 조인(Hash Join)
    • 해시함수를 사용하여 두 테이블의 자료를 결합하는 조인 방식
    • Nested Loop Join, Sort Merge Join의 문제점을 해결한다.
    • 대용량 데이터 처리는 상당히 큰 Hash Area를 필요로 함으로, 메모리의 지나친 사용으로 오버헤드 발생 가능성이 있다.

8. SQL 문의 결과?

  • 부서별 합계(소계) + 전체합계 = 'ROLLUP(DEPTNO, JOB)'이 적당하다.

9. SQL 문의 TEST1의 결과?

  • MERGE INTO문은 특정 키에 대해서 레코드가 있을 때에 수정사항에 대해서 UPDATE를 하고, 레코드가 없으면 새롭게 INSERT를 할 수 있는 구문이다.(DELETE는 실행되지 않는다.)
  • 따라서  COL1  COL2  COL3  가 된다.
                   A         X         1
                   B         Y         4
                   C         Z         3
                   D         나         5
                   E         가         4

10. 데이터베이스 모델링?

  • 제품마스터와 주문이력을 직접 조인하면 조인 Key가 없으므로 카테시안 곱이 발생한다.

11. SQL 문의 결과?

  • CONNECT BY 계층형 조회 PRIOR가 없는 쪽에서 PRIOR가 있는 쪽으로 간다.
  • 처리순서는 Start With -> Connect By -> Where순으로 간다.

  1. EMPNO가 3인 행부터 시작한다.
  2. EMPNO가 3인 행의 MANAGER값 2와 같은 EMPNO를 검색.
    (그 다음도 마찬가지로 EMPNO가 2인 행의 MANAGER값 1과 같은 EMPNO 검색)
  3. EMPNO가 3인 행을 제외하면 출력값은 2개이다.

12. 빈칸에 들어갈 말은?

  • NVL함수
    • NULL이면 다른 값으로 바꾸는 함수이다.
    • "NVL(MGR, 0)"은 MGR 컬럼이 NULL이면 0으로 바꾼다.
  • NVL2 함수
    • NVL함수와 DECODE를 하나로 만든 것이다.
    • "NVL2(MGR, 1, 0)"은 MGR 컬럼이 NULL이 아니면 1, NULL이면 0을 반환한다.
  • NULLIF 함수
    • 두 개의 값이 같으면 NULL을 같이 않으면 첫 번째 값을 반환한다.
    • "NULLIF(Ex1, Ex2)"은 Ex1과 Ex2가 같으면 NULL을 반환, 같지 않으면 Ex1을 반환한다.
  • COALESCE
    • "COALESCE(MGR, 1)"은 MGR이 NULL이 아니면 1을 반환한다.