본문 바로가기
Database & Bigdata/SQLD

[SQLD] 실전 모의고사 150제 - 오답체크

by z.1nee 2020. 9. 1.
SMALL

[ 1과목 데이터 모델링의 이해 ]

 

Q1. 데이터 모델링의 세 가지 중요개념에 속하지 않는 것 ?

  • 업무가 관여하는 어떤 것(Things)
  • 업무가 관여하는 어떤 것의 성격(Attributes)
  • 업무가 관여하는 어떤 것의 행위 (Events)
  • 업무가 관여하는 어떤 것의 관계 (Relationships)

-> Events

 

 

 

 

 

Q2. 데이터 모델링에 대한 아래 보기 설명 중 알맞은 것 ?

  • 데이터 모델링의 3가지 요소는 Process, Attributes, Relationships
  • 실제로 데이터 베이스를 구축할 때 참고되는 모델은 개념적 데이터 모델링
  • 물리 모델링 -> 논리 모델링 -> 개념 모델링 단계로 갈 수록 구체적
  • 논리 모델링의 외래키는 물리 모델에서 반드시 구현되지는 않음

-> 4번

 


데이터모델링 3가지 요소 : Things, Attributes, Relationships

실제 데이터베이스 구축 시 참고되는 모델은 물리적 데이터 모델링

물리 모델링에서 개념 모델링 단계로 갈 수록 더 추상적

논리 모델링의 외래키의 물리 모델 구현은 선택 사항


 

 

Q3. 다음에 설명에 해당하는 모델링 관점 ?

 

업무가 어떤 데이터와 관련이 있는지 또는 데이터 간이 관계는 무엇인지에 대해서 모델링 하는 관점

 

  • 프로세스 관점
  • 데이터와 프로세스의 상관관점
  • 데이터와 데이터 간의 상관관점
  • 데이터 관점

-> 4번

 


< 데이터 모델링의 3가지 관점 >

1. 데이터 관점 : 업무가 어떤 데이터와 관련이 있는지 또는 데이터 간의 관계는 무엇인지에 대해 모델링 (What, Data)

2. 프로세스 관점 : 업무가 실제로 하고 있는 일은 무엇인지 또는 무엇을 해야하는지를 모델링 (How, Process)

3. 데이터와 프로세스의 상관관점 : 업무가 처리하는 일의 방법에 따라 데이터는 어떻게 영향을 받고 있는지 모델링하는 방법 (Interaction)


 

 

Q4. 테이블의 반정규화 기법 중 데이터 무결성을 깨트릴 위험을 갖지 않고 데이터 처리의 성능을 향상 시킬 수 있는 기법 ?

 

  • 테이블 반정규화
  • 중복관계 추가
  • 칼럼 반정규화
  • 데이터 반정규화

-> 중복관계 추가

 

 

 

Q5. 엔티티에 대한 개념 중 엔티티 정의의 공통점 3가지가 아닌 것?

 

  • 데이터베이스 내에서 변별 가능한 객체
  • 엔티티는 사람, 장소, 물건, 사건, 개념 등의 명사에 해당
  • 저장되기 위한 어떤 것(Things)
  • 업무상 관리가 필여한 관심사

->  1번

 

 

 

[ 2과목 SQL 기본 및 활용 ]

 

Q1.  다음 중 절차형 SQL을 이용해 주로 만드는 것이 아닌 것 ?

  • Procedure
  • Trigger
  • Built-In-Function
  • User Defined Function

-> Built-In-Function

 

 

 

 

Q2.  다음 중 적절한 것은 ?

  • 인덱스는 인덱스 구성 칼럼으로 항상 오름차순으로 정렬
  • 비용기반 옵티마이저는 인덱스 스캔이 항상 유리하다고 판단
  • 규칙 기반 옵티마이저는 적절한 인덱스가 존재하면 항상 인덱스를 사용하려함
  • 인덱스 범위 스캔은 항상 여러건의 결과 반환

-> 3번

 


- 인덱스는 내림차순으로 생성 및 정렬됨

- 비용적인 측면에서는 전체 테이블 스캔이 유리할 수 있음

- 규칙 기반 옵티마이저의 규칙에 따라 적절한 인덱스가 존재하면 전체 테이블 스캔보다는 항상 인덱스를 사용하려함

- 인덱스 범위 스캔은 결과 건수만큼 반환


 

 

Q3.  다음 중 주어진 그룹 함수와 동일한 결과값을 반환하는 그룹 함수 ?

 

GROUP BY CUBE(DEPTNO, JOB);

 

  • GROUP BY ROLLUP(DEPTNO, JOB);
  • GROUP BY (DEPTNO, JOB,(DEPTNO, JOB),());
  • GROUP BY DEPTNO UNION ALL GROUP BY JOB UNION ALL GROUP BY (DEPTNO, JOB);
  • GROUP BY GROUPING SETS (DEPTNO, JOB, (DEPTNO, JOB),());

-> 4번

 

 

 

Q4.  부서코드 100의 상위 부서코드를 찾는 SQL문(테이블명 DEPT)

 

부서 ID 부서코드 상위부서코드
10 50 0
20 100 50
30 150 100

-> SELECT 상위 부서코드

FROM DEPT

WHERE 부서코드 = 100

START WITH 상위부서코드 = 0

CONNECT BY PERIOR 부서코드 =  상위부서코드;

 

 

 

 

Q5.  인덱스를 사용할 수 없는 조건에 해당되지 않는 것 ?

 

  • 인덱스가 사용되는 칼럼에 NVL (Key,0)를 사용
  • 인덱스가 사용되는 칼럼에 to_char(vintagedate,'yyyymmdd')=sysdate를 사용
  • 인덱스가 사용되는 칼럼에 vintageyear = to_char(sysdate,'yyyy')를 사용
  • 인덱스가 사용되는 칼럼에 name || '' = 'lim'을 사용

-> 3번

 

* 인덱스를 형변환하지 않아 사용가능

 

 

 

 

Q6.  Sort Merge 방식의 조인이 Nested Loop 방식 조인보다 효율적으로 판단되는 것 고르기

 

  • 기본키와 외래키 관계에서 외래키에 인덱스가 없을 때
  • 사용자가 발주한 주문에 대해서 체결 정보 한 건을 확인할 때
  • 병렬로 테이블을 읽고 SORT_AREA_SIZE가 작은 경우
  • Random Access가 자주 발생하지 않는 경우

-> 1번

 

 

 

 

Q7. TABLE을 탐색하지 않고 Fetch하려 할때 생성해야할 INDEX

 

-> IOT

 

* Index-Organized Table 은 테이블을 참조하지 않는 인덱스를 생성

 

 

 

Q8. INDEX 튜닝에 대한 잘못된 설명은?

 

  • 인덱스를 경유한 테이블의 Random 액세스 부하가 심할 때, 클러스터 테이블이나 IoT를 활용하는 방안 고려
  • 인덱스를 경유한 테이블 액세스 횟수가 같더라도 인덱스 구성에따라 스캔 효율이 달라짐 (효율을 높이기 위해 인덱스 칼럼 순서를 바꿔야할 때가 있음)
  • 조건절이 Where deptno = 10 and ename = 'SCOTT'일 때 인덱스를 [deptno + ename]순으로 구성하나 [ename + deptno]순으로 구성하나 인덱스 스캔 효율에 차이가 없음
  • Random 액세스 횟수를 줄이기 위해 인덱스 칼럼 순서를 바꿔주는 것도 큰 효과가 있음

-> 4번

 

* 인덱스 칼럼 순서를 아무리 바꾸어도 Random 액세스 횟수는 동일

 

 

 

 

Q9. ROWNUM을 올바르게 사용하지 않은 것?

 

  • SELECT ROWNUM, ENAME, FROM EMP;
  • SELECT EMPNO FROM EMP WHERE ROWNUM = 1;
  • SELECT ENAME FROM EMP WHERE ROWNUM = 2;
  • SELECT DEPTNO FROM EMP WHERE ROWNUM<10;

-> 3번

 

* 다음 지문과 같이 실행하려면 인라인 뷰를 사용해야함

SELECT *

FROM ( SELECT ROWNUM top, ename FROM EMP) aWHERE a.top = 2;

 

 

 

 

Q 10.  Subquery 종류 중 Subquery가 Mainquery의 제공자 역할을 하고 Mainquery의 값이 Subquery에 주입되지 않는 유형은 ?

  • Filter형 Subquery
  • Early Filter형 Subquery
  • Associative Subquery
  • Access Subquery

 

-> 4번


Access Subquery : 쿼리의 변형이 없고 제공자 역할을 하는 서브쿼리

Filter Subquery : 쿼리의 변형이 없고 확인자 역할을 하는 서브쿼리

Early Filter Subquery : 쿼리의 변형이 없고 서브쿼리가 먼저 실행하여 데이터를 걸러냄


 

 

 

Q 10.  EMP 테이블에서 EMPNO가 7698이 있으면(EXISTS구 사용) DEPTNO 30번에 대해서 EMPNO, ENAME, DEPTNO를 조회하는 SQL문 작성 

->

SELECT EMPNO, ENAME, DEPTNO

FROM EMP

WHERE EXISTS (SELECT EMPNO FROM EMP WHERE EMPNO = 7698) AND DEPTNO  = 30;

 

 

 

 

Q 11.  SQL문을 보고 효과적인 인덱스 작성

SELECT SAL FROM EMP ORDER BY SAL DESC;

->

CREATE INDEX idx ON EMP(SAL DESC);

 

 

 

 

 

Q 12.  윈도우 함수 중에서 윈도우에서 제일 먼저 나오는 것을 0으로 하고 제일 늦게 나오는 것을 1로 해서 행 순서별 백분율을 구하는 것 ?

  • FIRST_VALUE
  • LAST_VALUE
  • PERCENT_RANK
  • CUME_DIST

-> 3번

 


FIRST_VALUE : 파티션에서 가장 처음 나오는 값

LAST_VALUE : 파티션에서 가장 나중에 나오는 값

PERCENT_RANK : 파티션에서 제일 먼저 나오는 것을 0으로 제일 늦게 나오는 것을 1로 하여 값이 아닌 행의 순서별 백분율을 조회

CUME_DIST: 파티션 전체 건수에서 현재 행보다 작거나 같은 건수에 대한 누적 백분율 조회 (0~1)


 

 

Q 12.  다음 중 틀린 것은 ?

  • SQL Server은 null값을 인덱스 맨 뒤에 저장
  • Oracle 인덱스 구성 칼럼 중 하나라도 null이 아닌 레코드는 인덱스에 저장
  • SQL Server 인덱스 구성 칼럼이 모두 null인 레코드도 인덱스에 저장
  • Oracle 에서 인덱스 구성 칼럼이 모두 null인 레코드는 인덱스에 저장하지 않음

-> 1번

 

* SQL Server는 null값을 인덱스 맨 앞에 저장

Oracle은 맨 뒤에 저장

 

댓글