«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

ITGenerations

오라클로 배우는 데이터베이스 개론과 실습 심화문제 4장 본문

Univ/디비

오라클로 배우는 데이터베이스 개론과 실습 심화문제 4장

ITGenerations 2018. 5. 25. 01:56

8. [극장 데이터베이스] 다음은 네 개의 지점을 둔 극장의 데이터베이스다. 밑줄 친 속성은 기본키다. 아래 테이블을 보고 다음 뷰를 생성하시오.

(1) 극장이름과 고객이름을 저장하는 극장-고객 뷰를 생성하시오.

 CREATE VIEW 극장_고객

 AS SELECT 극장이름, 이름

 FROM 극장, 예약, 고객

 WHERE 극장.극장번호=예약.극장번호 AND 예약.고객번호=고객.고객번호;


(2) '대한'극장에 예약을 한 고객의 수를 날짜별로 저장하는 대한-고객수 뷰를 생성하시오.

 CREATE VIEW 대한_고객

 AS SELECT 극장이름, COUNT(고객번호)

 FROM 극장, 예약, 고객

 WHERE 극장.극장번호=예약.극장번호 AND 예약.고객번호=고객.고객번호

 GROUP BY 극장이름, 날짜

 ORDER BY 날짜;


9. 8번의 극장 데이터베이스에 대하여 다음과 같은 뷰를 생성하였다. 다음 질의에 대하여 의미가 있는 지 판단하고 질의 결과가 어떤 내용인지 설명하시오. 


CREATE VIEW 극장예약(극장이름, 예약수)

   AS SELECT     A.극장번호, COUNT(*)

       FROM      극장 A, 예약 B

        WHERE     A.극장번호=B.극장번호

        GROUP BY A.극장이름;


----> 극장별 예약 수를 저장하는 뷰이다.

(1) SELECT * FROM 극장예약;

극장별 예약 수

(2) SELECT 극장이름 FROM 극장예약 WHERE 극장이름='강남'

강남 극장의 예약 수

(3) SELECT MIN(예약수) FROM 극장예약;

극장예약 중 가장 적은 예약 수

(4) SELECT COUNT(*) FROM 극장예약;

극장예약이 된 총 극장 수

(5) SELECT 극장이름 FROM 극장예약 WHERE 예약수>100;

예약 수가 100건이 넘는 극장들의 이름

(6) SELECT 극장이름 FROM 극장예약 ORDER BY 예약수;

극장이름을 예약수 기반 내림차순 정렬


10. 데이터베이스는 하드디스크에 저장된다. 하드디스크에서 데이터를 읽어 오는데 걸리는 시간(액세스 시간)은 어떻게 구성되는지 설명하시오.

- 탐색 시간(헤드가 트랙을 찾아가는 시간) + 회전 지연 시간(해당 섹터가 헤드 앞으로 올 때까지 걸리는 시간) + 데이터 전송 시간(데이터를 읽어들이는 시간) 


11. B-tree는 균형 잡힌 트리를 말한다. 차수가 3인 비어있는 B-tree에 1부터 9까지 삽입해보고 균형을 어떻게 유지하는지 설명하시오(위키피디어의 B-tree를 참조해본다).

B-tree ( binary tree 즉 이진 트리 )는 기본적으로 부모라고 하는 루트, 

루트의 왼쪽 자식, 오른쪽 자식으로 이루어져 있다.

수를 순차적으로 삽입하면 이런 모양을 가지게 된다. 



이런 이진 트리 구조는 DB에서 자료를 검색, 삽입, 삭제하기가 용이하기 때문에

대부분의 DBMS들은 이진 트리에 속성을 부여한 이진 검색 트리를 사용한다. 이진 검색 트리 특성은 다음과 같다


 x를 이진 검색 트리의 한 노드라고 했을 때

         y가 x의 왼쪽 서브 트리의 한 노드면  y.key <= x.key

         y가 x의 오른쪽 서브 트리의 한 노드면  y.key >= x.key 

그리고 이 특성을 적용해 이진 트리를 검색에 사용 가능한 이진 검색 트리로 바꾸면 트리의 모양이 아래와 같이 변한다.


트리가 이런 모양이 되면 TREE-SEARCH 프로시저를 이용해 쉽게 값을 찾을 수 있게 된다. 




12. [사원 데이터베이스] 3장의 연습문제 9번 데이터베이스를 이용하여 다음의 뷰를 생성하시오. 뷰를 이용하여 또 다른 뷰를 정의할 수 있는지 다음 SQL문을 실행해보고 결과를 보이시오.



CREATE VIEW SalesmanView

AS SELECT e.empno, e.ename, e.sal, d.dname

    FROM Emp e, Dept d

    WHERE e.deptno=d.deptno AND job='SALESMAN'


SELECT empno, ename, sal

FROM SalesmanView

WHERE ROWNUM <=3


CREATE VIEW SalesTop

AS SELECT empno, ename, sal, dname

   FROM SalesmanView

   WHERE sal >= 1500


SELECT *

FROM SalesTop;




 뷰를 이용하여 다른 뷰를 만드는 것도 가능하다



ORA-01031


13. [마당서점 데이터베이스 인덱스] 마당서점 데이터베이스에서 다음 SQL문을 수행하고 데이터베이스가 인덱스를 사용하는 과정을 확인해보시오.

(1) 다음 SQL문을 수행해본다.

 SELECT name FROM Customer WHERE name LIKE '박세리'; 

(2)실행 계획을 살펴본다. 

(3) Customer 테이블에 name으로 인덱스를 생성한다. 생성 후 (1)번의 SQL문을 다시 수행하고 실행계획을 살펴본다.

(4) 같은 질의에 대한 두 가지 실행 계획을 비교해보시오.





후자의 cost ( 1 )가 전자의 cost( 3) 보다 적은 걸 볼 수 있다