SQL

[SQLD] 기출문제 1- 2장 데이터 모델과 성능

은듀 2022. 3. 10. 11:46
반응형

Q1) 성능 데이터 모델링에 대한 설명

   A) 데이터의 증가가 빠를수록 성능저하에 따른 성능개선 비용은 증가한다.

       데이터모델은 성능을 튜닝하면서 변경이 될 수 있는 특징이 있다.

       분석/설계 단계에서 성능을 고려한 데이터모델링을 수행할 경우 성능저하에 따른 Rework비용을 최소화 할 수 있는

      기회를 가지게 된다. 

Q2) 성능을 고려한 데이터모델링의 순서로 가장 적절한 것은?

   가. 데이터 모델링을 할 때 정규화를 정확하게 수행한다.

   나. 용량과 트랜잭션의 유형에 따라 반정규화를 수행한다.

   다. 데이터베이스 용량산정을 수행한다.

   라. 데이터베이스에 발생되는 트랜잭션의 유형을 파악한다.

   마. 성능관점에서 데이터 모델을 검증한다.

   바. 이력모델의 조정, PK/FK조정, 슈퍼타입/서브타입 조정 등을 수행한다.

 

  A) 가-다-라-나-바-마

 

Q3) 성능데이터 모델링을 할때 고려사항으로 가장 부적절한 것은?

  A) 데이터 모델링의 정규화는 항상 조회 성능저하를 나타내므로 -> 조회 성능향상

 

 


Q1) 아래의 ERD에서 3차 정규화를 만족하게 할 때 엔터티의 개수는 몇개가 되는가?

    ㄱ. 평가코드 평가내역은 학번에 종속적

    ㄴ. 코스명 기간은 코스코드에 종속적

    ㄷ. 평가코드 평가내역은 속성간 종속적 관계

   

A) 3개

2차 정규화는 학과등록과 코스테이블로 엔터티 2개

3차 정규화를 하므로써 학과등록, 코스, 평가항복 테이블로 나누어 엔터터 3개

 

Q2) 아래의 데이터 모델처럼 동일한 유형의 속성이 칼럼 단위로 반복되느느 경우가 실제 프로젝트를 하면서 많이 발생 할 수 있다. 다음 중 아래와 같이 전제조건이 있을 때 테이블에서 나타날 수 있는 현상

 

 

전제조건 : 유형기능분류코드에 해당하는 속성들은 분포도가 양호하며, SQL Where 절에서 각각의 값이 상수값으로 조건 입력 될 수 있는 특징을 가진다. 

 

 

 

 

 

A) 유형기능분류코드 각각에 대하여 개별로 Index를 모두 생성할 경우 입력,수정,삭제 때 성능이 저하되므로 제 1차 정규화를 수행한 후 인덱스를 적용하는 것이 좋다.  -> 컬럼에 의한 반복적이 속성값을 갖는형태는 1차 정규화

 

Q3) '일자별매각물건' 엔터티에 대한 설명으로 가장 적절한 것은?

A) 2차 정규화가 필요한 엔터티로서 매각기일과 일자별매각물건으로 1:M 관계가 될 수 있다.

   -> 두개의 주식별자 속성 중 매각일자에만 종속되기 때문

Q4) 아래와 같이 수강지도 엔터티를 만들었을 때 이에 해당하는 정규형과 정규형의 대상으로 가장 바르게 짝지어진 것은?

 

함수종속성

 1. 학번||과목 -> 성적

 2. 학번 -> 지도교수명

 3. 학번 -> 학과명 

 

  A) 1차정규형 - 2차 정규화 대상


Q1) 아래의 설명 중 반정규화 대상이 아닌 것은?

   A) 자주 사용하는 테이블에 접근하는 프로세스의 수가 많고 항상 일정한 범위만을 조회하는 경우

       테이블의 대량의 데이터가 있고 대량의 데이터 범위를 자주 처리하는 경우에 처리범위를 일정하게 줄이지 않으면

       성능을 보장할 수 없을 경우

       통계성 프로세스에 의해 통계 정보를 필요로 할때 별도의 통계 테이블을 생성해야 하는경우

       테이블에 지나치게 많은 조인과 Sorting, Order by 프로세스가 많은경우   -> 지나치게 많은 join은 맞지만

                                                                                                          Sorting과 Order by는 무관

 

 

Q2) 반정규화에 대한 설명

  A) 데이터를 조회할 때 디스크 I/O 량이 많아서 성능이 저하되거나 경로가 너무멀어 조인으로 인한 성능저하가

      예상될 때 수행한다.

      컬럼을 계산하여 읽을 때 성능이 저하될 것이 예상되는 경우 수행한다.

      반정규화를 적용할 때는 기본적으로 데이터 무결성이 깨질 가능성이 많이 있으므로 반드시 데이터 무결성을                보장할 수 있는 방법을 고려해야 한다.

      통계테이블, 중복테이블, 이력테이블 추가는 반정규화 기법이다.

      

Q3) 아래 설명을 읽고 다음 (ㄱ) 에 들어갈 단어를 작성하시오

  첫번째, 데이터 모델링을 할 때 정규화를 정확하게 수행한다.

  두번째, 데이터베이스 용량산정을 수행한다.

  세번째, 데이터베이스에 발생되는 트랜잭션의 유형을 파악한다.

  네번째, 용량과 트랜잭션의 유형에 따라 (  ㄱ  ) 을 수행한다.

  다섯번째, 이력모델의 조정, PK/FK조정, 슈퍼타입/서브타입 조정 등을 수행한다.

 

  A) 반정규화

 

Q4) 하나의 테이블의 전체 칼럼 중 자주 이용하는 집중화된 컬럼들이 있을 때 디스크 I/O 를 줄이기 위해 해당 컬럼들을 별도로 모아 놓는 반정규화 기법은?

  A) 테이블 추가 - 부분테이블 추가

 

Q5) 데이터 모델에 대한 반정규화를 고려할 때 판단요소에 대한 설명으로 가장 적절한 것은?

  A) 반정규화 정보에 대한 재현의 적시성으로 판단한다. 예를 들어, 빌링의 잔액은 다수 테이블에 대한 다량의 조인이 불가피하므로 데이터 제공의 적시성 확보를 위한 필수 반정규화 대상 정보이다.

 

Q6) SQL문에서 조회를 빠르게 수행하기 위한 반정규화 방법은?

SELECT A.주문번호, SUM(C.단가)

FROM 주문 A, 주문목록 B, 제품 C

WHERE A.주문번호 = '2015-02-001'

AND A.주문번호 B. 주문번호

                                                              AND B.제품번호 = C.제품번호

                                                              GROUP BY A.주문번호

 

  A) 주문 엔터티에 단가를 합한 계산된 컬럼을 추가하도록 한다. 

     -> 제품 엔터티에 단가를 주문번호별로 합하는 것은 해당 제품이 여러주문에 포함될수 있으므로 안됨

         주문목록 엔터티에 주문번호별 단가 합계금액을 추가하는 것은 일관성 문제 발생

 

 


Q1) Row Migration과 Row Chaining에 대한 설명

   A) 로우 길이가 너무 길어서 데이터 블록 하나에 데이터가 모두 저장되지 않고 두개 이상의 블록에 걸쳐 하나의 로우가 저장되는 현상을 Row Chaning이라고 한다. 

 

Q2) 아래 설명에서 데이터 엑세스 성능을 향상시키기 위해 적용하는 방법에 대해서 (  ㄱ  ) 을 채우시오

    하나의 테이블에 많은 양의 데이터가 저장되면 인덱스를 추가하고 테이블을 몇개로 쪼개도 성능이 저하되는 경우가 있다. 이때 논리적으로는 하나의 테이블이지만 물리적으로는 여러 개의테이블로 분리하여 데이터 엑세스 성능도 향상시키고, 데이터 관리방법도 개선할 수 있도록 테이블에 적용하는 기법을 (   ㄱ  ) 이라고 한다. 

 

  A) 파티셔닝

 

Q3) 다음 중 논리데이터모델의 슈퍼타입과 서브타입 모델을 물리적인 테이블 형식으로 변환할때 설명

  A) 트랜잭션은 항상 전체를 대상으로 일괄 처리하는데 테이블은 서브타입별로 개별 유지하는 것으로 변환하면 Union       연산에 의해 성능이 저하될 수 있다. 

     트랜잭션은 항상 서브타입 개별로 처리하는데 테이블은 하나로 통합하여 변환하면 불필요하게 많은 양의 데이터가       직접되어 있어 성능이 저하 될 수 있다.

     트랜잭션은 항상 슈퍼+서브 타입을 함께 처리하는 데 개별로 유지하면 조인에 의해 성능이 저하될 수 있다.

     트랜잭션은 항상 전체를 통합하여 분석처리하는데 하나로 통합되어 있으면 데이터 집접으로 인해 성능이 더 우수하       다.(조인 감소)

 

Q4) '현금출급기실적' 테이블과 이 테이블에서 데이터를 조회 할 때 사용되는 아래의 SQL 패턴에 대한 설명

 

SELECT 건수, 금액 

FROM 현금출급기실적

WHERE 거래일자 BETWEEN '20140701' AND '20140702' 

AND 사무소코드 = '000368'

 

(단 , PK인덱스는 설계된 순서 그대로 생성함)

 

  A) 사무소코드가 '=' 상수값이 들어왔고, 거래일자가 범위 'Between'으로 들어왔기 때문에 PK순서를 사무소코드 + 거래일자 + 출급기번호+명세표번호로 바꾸고 인덱스를 생성하는 것이 성능에 유리함.

    -> 인덱스로 구성되어 있을 때 앞쪽에 위치한 속성의 값이 비교자로 있어야 인덱스가 좋은 효율을 나타낼 수 있다. 

        앞쪽에 위치한 속성 값이 가급적 '=' 아니면 최소한 범위 'between', '<>' 가 들어와야 인덱스를 이용할 수 있다.


Q1) 분산 데이터베이스의 특징 중 사용하려는 데이터의 저장 장소 명시가 불필요하다는 특징은?

   A) 위치 투명성

 

Q2) 다음 중 데이터가 여러 지역에 분산되어 있지만 하나의 데이터베이스처럼 사용하기를 원하는 분산데이터베이스 환경에서 데이터베이스 분산설계를 적용하여 효율성을 증대시킬 수 없는 것은?

  A) 공통코드, 기준정보 등 마스터 데이터는 분산데이터베이스에 복제분산을 적용한다. 

      거의 실시간 업무적인 특성을 가지고 있을 때 분산 데이터베이스를 사용하여 구성할 수 있다.

      백업 사이트르 구성 할때 간단하게 분산기능을 적용하여 구성할 수 있다.

      Global Single Instatnce(GSI) 를 구성할 때 분산데이터베이스를 활용하여 구성하는 것이 효율적이다.

      > 통합데이터베이스 구조를 의미