[34회차 시험 - 2019년 8월 24일 시행 ] - 1과목 7/10, 2과목 28/40, 총 35/50 (70점)
1. 데이터 모델링 이해
Q1. 도메인의 특징으로 알맞지 않는 것?
- 데이터 타입, 크기
- NULL
- CHECK
- FOREIGN Key 제약조건
-> 4번
Q2. 다음 보기 중 칼럼에 대한 반정규화 기법으로 알맞지 않은 것?
- 중복 칼럼을 추가 - 조인 감소를 위해 여러 테이블에 동일한 칼럼을 갖도록 함
- 파생 칼럼을 추가 - 조회 성능을 우수하게 하기 위해 미리 계산된 칼럼을 갖도록 함
- 이력 테이블에 기능 칼럼을 추가 - 최신값을 처리하는 이력의 특성을 고려해 기능성 칼럼을 추가
- 외래키에 대한 속성을 추가 - 외래키 관계에 해당하는 속성을 추가해 조인 성능을 높임
-> 4번
* 외래키에 대해 속성을 추가하는 것은 데이터 모델링에서 관계를 연결할 때 사용하는 방식
중복칼럼 추가 : 조인 감소를 위해 중복된 칼럼을 위치시킴
파생칼럼 추가 : 트랜잭션시 계산에 의해 발생되는 성능 저하를 예방. 미리 값을 계산해 칼럼에 보관
이력테이블 칼럼 추가 : 대량의 이력데이터를 처리할 때 블특정 조회나 최근 값을 조회할 때 나타날 수 있는 성능 저하 예방. 이력 테이블에 기능성 칼럼 추가
기본키에 의한 칼럼 추가 : 단일 기본키 안에서 특정값을 별도로 조회할 경우 성능 저하 발생. 기본키 안에 이미 데이터가 존재하지만 성능향상을 위해 일반속성으로 포함하는 방법
응용시스템 오작동을 위한 칼럼 추가 : 업무적으로는 의미가 없지만 사용자가 데이터처리를 하다가 잘못 처리해 원래값으로 복구하길 원하는 경우 이전 데이터를 임시적으로 중복해 보관( 임시적인 기법이지만 이력데이터 모델로 풀어내면 정상적인 기법이 될 수 있음)
2. SQL 기본 및 활용
Q1. 프로시저와 트리거에 대한 설명 중 잘못된 것?
- 프로시저와 트리거 모두 생성할 때 CREATE 명령어 사용
- 프로시저와 트리거 모두 생성하면 소스코드와 실행코드가 생성
- 프로시저는 COMMIT,ROLLBACK 실행 가능, 트리거는 실행 불가능
- 둘 다 EXECUTE 명령어로 실행됨
-> 4번
* 프로시저는 EXECUTE 명령어로 실행하지만 트리거는 생성 후 자동 실행
Q2. 실행 계획에 대한 설명으로 틀린 것?
SELECT *
FROM HR.Departments A, HR.Employess B
WHERE A.Departments_id = B.Departments_id
- 성능 향상을 위해 HASH JOIN을 NESTED LOOP JOIN으로 변경
- 실행 계획에서 실행 순서는 2->3->1->0
- Departments 테이블이 Employees 테이블보다 소량으로 선행하는 것이 좋음
- 조인조건이 Non-Equal일 경우 HASH조건으로 수행되지 못하고 MERGE JOIN으로 수행
-> 1번
* FULL ACCESS JOIN을 수행하는 두개의 테이블에 대해 Nested Loop JOIN을 수행하면 두 개의 테이블엘서 모든 행마다 JOIN을 수행하므로 성능 저하
Q4. SQL 수행결과는?
C1 | C2 | C3 | C4 |
10 | 10 | 10 | 10 |
20 | 20 | NULL | 20 |
30 | NULL | 30 | NULL |
NULL | 40 | 20 | 40 |
SELECT SUM(C1 + C2 + C3 + C4 )
FROM SQLD_17;
SELECT SUM(C1) + SUM(C2) + SUM(C3) + SUM(C4)
FROM SQLD_17;
-> 40, 260
* 첫번째는 4개의 칼럼이 모두 NULL이 아닌 값을 가지는 행에 대해서만 합계 계산
두번째는 4개의 칼럼이 각각 합계가 계산되고 각 합계를 모두 더함
Q4. Orcale 과 SQL Server에서 수행했을 때 틀린것은? (Auto commit false)
update 문;
create 문;
rollback;
-
SQL server - roolback이 수행된 후 update와 create 구문 모두 취소
-
SQL server - roolback이 수행된 후 create table은 생성 X
- Oracle - rollback이 수행된 후 update와 create 구문 모두 취소
-
Oracle의 경우 update는 취소 X
-> 3번
* Oracle의 경우 ROLLBACK이 수행되면 DDL인 CREATE 구문과 DML인 UPDATE는 묵시적으로 COMMIT - 취소안됨
SQL Server 은 DDL이 수행되어도 묵시적인 COMMIT이 수행되지 않음
Q5. 조인 기법에 대한 설명으로 알맞은 것?
-
Hash Join은 정렬작업이 없어 정렬이 부담되는 대량 배치 작업에 유리
-
Sort Merge Join은 Equal Join에서만 사용 가능
- 옵티마이저는 조인 칼럼에 인덱스가 존재하지 않으면 Nested Loop Join을 선호
-
Nested Loop Join은 정렬된 결과들을 통해 조인 작업이 수행
-> 1번
* Sort Merge Join은 Not Equal Join에서도 사용 가능
Nested Loop Join은 조인칼럼의 인덱스가 존재해야함
Sort Merge Join은 정렬된 결과들을 통해 조인 작업이 수행
Q6. SQL 수행 시두번째로 나오는 값은?
ID | SUPER_ID | CODE |
1 | NULL | A |
2 | 1 | B |
3 | 1 | C |
4 | 2 | D |
SELECT CODE
FROM SQLD_44
START WITH SUPER_ID IS NULL
CONNECT BY PRIOR ID = SUPER_ID
ORDER SIBILINGS BY CODE DESC;
-> C
* ORDER SIBLINGS BY: 같은 부모 아래 형제들끼리 정렬
'Database & Bigdata > SQLD' 카테고리의 다른 글
[SQLD] 최신기출문제 (32회차,31회차,30회차) - 오답체크 (2) | 2020.09.03 |
---|---|
[SQLD] 최신기출문제 (33회차) - 오답체크 (0) | 2020.09.03 |
[SQLD] 최신 기출 문제(35회차) - 오답 체크 (0) | 2020.09.01 |
[SQLD] 실전 모의고사 150제 - 오답체크 (0) | 2020.09.01 |
[SQLD] SQL 기본 및 활용/최적화의 원리 - 오답체크 (0) | 2020.08.29 |
댓글