소품집

[SQLD] 31회 오답풀이 - 2단원 과락해벌임 본문

자격증/SQL

[SQLD] 31회 오답풀이 - 2단원 과락해벌임

sodayeong 2021. 3. 17. 01:38

과락!!!!!!!!!

과락은 처음이다 제대로 오답풀이를 해보겠습니다~

 

1과목

 

01. 다음은 무엇에 대한 설명인가?

[보기]

1) 각 속성이 가질 수 있도록 허용된 값들의 집합이다. 

2) 릴레이션에서 원자값(atomic)을 가져야 한다. 

3) 실제 속성값의 합법 여부를 시스템이 검사하는데 이용된다.

4) 속성명과 반드시 동일할 필요는 없다. 

 

1) 카디널리티 (Cardinality)

2) 도메인 (Domain)

3) 인스턴스(Instance)

4) 차수 (Degree)

 

 

// 난 이 문제에서 보기 2) 4)번에서 도메인이라고 인식하지 못했다 .

[해설] 도메인은 하나의 속성이 가질 수 있는 모든 원자값들의 집합이다. 

 

도메인의 특성

1. 각 속성이 가질 수 있도록 허용된 값들의 집합이다.

2. 속성명과 도메인명이 반드시 동일할 필요는 없다. 

3. 릴레이션에서 모든 속성들의 도메인은 원자적(atomic)이어야 한다. 

4. 원자적 도메인: 도메인의 원소가 더 이상 나누어질 수 없는 단일체일 때를 의미한다.

 

 

 

 

5. 보기는 발생 시점에 따른 엔터티 분류별 종류이다. 잘못 짝지어진 것은? 2

1) 기본 엔터티: 조직

2) 중심 엔터티: 상품, 주문숭품

3) 행위 엔터티: 주문이력, 체결이력

4) 키 엔터티: 사원

 

 

[해설] 상품은 다른 엔터티로부터 영향을 받지 않고 독립적으로 생성되는 기본 엔터티이다. 

 

발생시점에 따른 엔터티 종류

1. 기본엔터티

- 키 엔터티라고도 한다. 

- 다른 엔터티로부터 영향을 받지 않고 독립적으로 생성되는 엔터티이다. 

- 예를 들어 고객, 상품, 부서 등이 있다. 

 

2. 중심 엔터티

- 기본 엔터티와 행위 엔터티 간의 중간에 있는 것이다. 

- 즉, 기본 엔터티로부터 발생되고 행위 엔터티를 생성하는 것이다. 

- 예를 들어 계좌 , 주문, 취소, 체결 등이 있다. 

 

3. 행위 엔터티 

- 2개 이상의 엔터티로부터 발생된다.

- 예를 들어 주문이력, 체결이력 등이 있다. 

 

 

 

 

 

9.  분산 데이터베이스의 투명성 중 저장장소와 관련이 없는 투명성은?

1) 분할 투명성

2) 위치 투명성

3) 지역사상 투명성

4) 병행 투명성

 

[해설] 위치 투명성은 사용하려는 데이터와 저장장소를 명시할 필요가 없고 위치정보는 System catalog에 유지되어야 한다. 

 

분산 데이터 베이스의 투명성

분할 투명성: 하나의 논리적인 Relation이 여러 단편으로 분할되어 각 단편의 사본이 여러 site에 저장

위치 투명성: 사용하려는 데이터의 저장 장소 명시 불필요, 위치 정보가 System catalog에 유지

지역사상 투명성: 지역 DBMS와 물리적 DB 사이의 Mapping 보장

중복 투명성: DB 객체가 여러 site에 중복되어 있는지 알 필요가 없음

장애 투명성: 구성요소의 장애에 무관한 Transaction의 원자성 유지

병행 투명성: 다수 transaction 동시 수행 시 결과의 일관성 유지, time stamp, 분산 2단계 Locking을 이용 구현  

 

 

 

 

 

2과목

 

12. ERD를 참고하여 아래의 SQL 중 오류가 날 수 있는 SQL을 고르시오. 1

 

1) select 계좌번호, 회원id from 계좌 where 회원id = (select distinct 회원id from 고객); 

2) select 계좌번호, 회원id from 계좌 where 회원id in (select distinct 회원id from 고객);

3) select 고객id, 상품명 from 일자별주문이력 where 주문일자 exists (select distinct 주문일자 from 계좌);

4) select 고객id, 상품명 from 일자별주문이력 where 주문일자 all(select distinct 주문일자 from 계좌); 

 

[해설] 연산자 '=' 는 단일행 연산자로 하나의 행과 결과 값으로 리턴되어야 한다. 그런데 서브쿼리의 조인조건으로 기본키의 일부 칼럼만 사용하는 경우 다중 행이 나올 수 있으므로 오류가 발생한다. 

 

 

 


 

16. 아래의 실행 계획을 순서대로 바르게 나열한 것은?

 

 

따라서 위의 실행 계획 순서는 

3-5-4-2-7-6-1-0

 

[해설] 상단의 실행계획은 TABLE FULL SACN 값과 INDEX SCAN 값 사이의 nested loop join을 수행하고 다시 한 번 index scanr 값과 nested loop join을 수행한다. 

 

실행 계획을 읽기 위한 규칙

- 위에서 아래로 내려가며 제일 먼저 읽을 스텝을 찾는다. 

- 내려가는 과정에서 같은 들여쓰기가 존재하면 위 -> 아래 순으로 읽는다. 

- 읽고자 하는 스텝보다 들여쓰기가 된 하위 스텝이 존재하면 가장 안쪽으로 들여쓰기가 된 스텝을 시작으로 한 단계씩 상위 스텝으로 읽는다. 

 

* 스텝: 실행 계획의 단계로서 각 스텝별로 어떠한 명령이 어떻게 수행되었고 총 몇 건의 데이터가 처리되었으며 얼만큼의 비용과 시간이 들었는지 표시된다. 

 

 

 

 

 

20. 보기에서 select 결과가 null이 아닌 경우는? 1

1) coalesce('expression1', 'expression2', 'expression3')

2) case when 'expression' then a else null end

3) decode(expression, B)

4) nullif(expression, C)

 

[해설] COALESCE 함수는 인수의 숫자가 한정되어 있지 않으며 임의의 개수 EXPR에서 null이 아닌 최초의 expr을 나타낸다. 

만일 모든 expr이 null이라면 null을 반환한다. 

보기에서는 비교값 중 최초로 null이 아닌 expression01이 반환된다. 

 

 

 

 

33. cross join과 natural join의 차이점에 대해서 잘 못 설명한 것은? 3

1) natural join은 테이블 간 동일한 이름을 가진 모든 칼럼들에 대해 조인을 수행한다.

2) cross join은 테이블 간 조건이 없는 경우 생길 수 있는 모든 데이터의 조합을 의미한다. 

3) cross join과 natural join은 where 절에서 join을 걸을 수 없다. 

4) cross join은 where 절에서 join 조건을 추가할 수 있다. 

 

[해설] natural join의 경우 where 절에서 join 조건을 추가할 수 없지만, cross join의 경우 where 절에 join 조건을 추가할 수 있다. 

하지만 이 경우는 cross join이 아니라 inner join과 같은 결과를 얻기 때문에 cross join을 사용하는 의미가 없어지므로 권고하지 않는다. 

 

 

 

 

 

34. 아래와 같이 기본키 칼럼이 구성되어 있을 때 가장 적합한 파티셔닝 방법은 무엇인가? 

 

 

 

1) range

2) list

3) hash

4) interval

 

[해설] 기본키 칼럼의 형태가 지점, 코드, 위치로 구성되어 지점별 코드값으로 분류되어 있으므로 지점값을 기준으로 분할하는 LIST Partition을 이용한다. 

 

 

 

 

 

 

40. 아래의 SQL문을 수행한 후 첫 번째 테이블의 건수는?

 

 

 

merge into sqld32
using sqld32_2
	on (sqld32.col1 = sqld32_2.col1)
when matched then
	update set sqld32.col3 = 4
    	where sqld32.col3 = 2
    delete where sqld32.col3 <=2
   when not matched then
   	insert(SQLD32_2.col1, sqld32_2.col2, sqld32_2.col3)
   values(sqld32_2.col1, sqld32_2.col2, sqld32_2.col3);

[해설] 두 개의 테이블이 병합되고 첫 번째 테이블에서 col3 속성 중 2 값이 4로 변경된다. 

(이해 중...) 

 

 

 

 

44. 주어진 테이블에서 아래와 같은 SQL문을 실행했을 때의 결과건수는?

select level, lpad('**', (leffl-1)*2'') || number1 as 계층트리, number1, number2
from sqld_4
start with number2 is null 
	connect by number1 = prior number2; 

이해중 .. 

 

 

47. 주어진 테이블에 대해서 다음 SQL문을 실행했을 때의 결과값은? 

select count(*)
from t1 a, t2 b
where b.c1 = a.c1 and b.c2 = a.c2 and b.c3 = a.c3 

이해중..

 

 

 

 

50. 다음 중 인덱스에 대한 설명으로 옮지 않은 것은? 2

1) insert, update, delete 등과 같은 DML 작업은 테이블과 인덱스를 함께 변경하기 때문에 인덱스 생성시 느려질 수 있다. 

2) 유일 인덱스의 구성 컬럼 중 1개 이상을 = 조건으로 조회하면 유일 인덱스 스캔과 같다. 

3) 테이블에 인덱스를 생성하지 않아도 되고 여러 개를 생성해도 된다. 

4) B-Tree 인덱스는 브랜치블록과 리프블록으로 구성된다.

 

[해설] 유일 인덱스 스캔은 기본키 또는 유니크 인덱스로 엑세스 해야한다. 

 

인덱스 

- 원하는 데이터를 빠르게 찾기 위해 탐색키를 갖는 테이블을 의미한다. 

- 인덱스는 원하는 데이터를 쉽게 찾을 수 있도록 돕는 책의 색인과 유사한 개념이다. 

 

특징

- 테이블 기반으로 선택적으로 생성할 수 있는 구조이다.

- 테이블에 인덱스를 생성하지 않아도 되고 여러 개를 생성 해도 된다. 

- insert, update, delete 등과 같은 DML 작업은 테이블과 인덱스를 함께 변경해야 해서 오히려 느려 질 수 있다는 단점이 존재한다. 

 

 

 

 

 

728x90
Comments