본문 바로가기
학교/데이터베이스

MS SQL Server 기반 데이터베이스 배움터 8장 (뷰와 시스템 카탈로그) 연습문제 풀이

by 코드 이야기 2021. 6. 10.
728x90

 

 

 

https://book.naver.com/bookdb/book_detail.nhn?bid=7000196

 

데이터베이스 배움터

『데이터베이스 배움터』는 데이터베이스의 기본적인 개념과 실용적인 이론을 중심으로 한 학기 동안 가르치기에 적절한 주제들을 정선하여 저술하였고, 개념을 알기 쉽게 보여주는 그림들을

book.naver.com

 

 

1. 다음 용어들을 간략히 설명하라.

: ANSI/SPARC 3단계 아키텍처에서 외부 뷰는 특정 사용자가 보는 데이터베이스의 구조이다. 

가상 릴레이션: 실제로 투플을 갖지 않은 릴레이션이다.

기본 릴레이션: 기본 릴레이션의 투플들은 데이터베이스에 물리적으로 저장된다.

스냅샷: 어느 시점에 SELECT문의 결과를 기본 릴레이션의 형태로 저장해놓은 것.

시스템 카탈로그: 데이터 사전, 시스템 테이블이라고도 부른다. 데이터베이스의 객체(사용자, 릴레이션 뷰, 인덱스, 권한 등)와 구조들에 관한 모든 데이터를 포함한다.

 

 

 

2. 다음 설명 중에서 맞는 것은? 그 이유를 설명하라.

① 메타데이터는 데이터가 아니다. 

② 메타데이터와 데이터는 서로 다른 모델로 설명되고 저장된다. 

③ 데이터베이스에 대한 모든 메타데이터는 데이터베이스 스키마 내에 설명된다.

④ 데이터 사전의 스키마는 데이터베이스의 메타데이터의 스키마이다.

→ ④

→ ① 메타데이터는 데이터에 대한 데이터이다.

→ ② 메타데이터와 데이터는 같은 모델이고, 따로 저장된다.

→ ③ 데이터베이스에 대한 모든 메타데이터는 메타데이터/시스템 카탈로그 내에 설명된다.

 

 

 

3. 다음 설명 중에서 맞는 것을 모두 찾아라.

① 데이터베이스를 위한 데이터 사전은 데이터 정의문이 컴파일될 때만 접근된다.

② 데이터베이스를 위한 데이터 사전은 하나의 질의가 컴파일될 때마다 접근된다.

③ ①과 ② 모두 맞다.

④ ①과 ② 모두 틀리다.

→ ②

 

 

 

4. 만일 어떤 데이터베이스 시스템의 데이터 사전이 손실되면 아래의 문장 중에서 어느 것이 올바른가?

① 종전과 마찬가지로 아무런 어려운이 없이 수행될 수 있다.

② 사용자들이 데이터베이스 내의 모든 데이터를 접근할 수 있도록 허용하면서 수행된다.

③ 데이터가 어디에 있는지 찾을 수 없기 때문에 수행되지 못한다.

④ 데이터베이스 내의 모든 데이터가 손실되었기 때문에 수행되지 못한다.

→ ③

 

 

 

5. 아래의 DEPARTMENT 릴레이션을 고려해보자.

이 릴레이션 위에 LARGE_DEPT라는 뷰를 아래와 같이 정의하였다. 즉 LARGE_DEPT 뷰에는 사원 수가 9명 이상인 부서만 포함된다.

CREAT VIEW  LARGE_DEPT

AS SELECT     DEPTNAME, NumberOfEmployees

      FROM         DEPARTMENT

      WHERE      NumberOfEmployees >= 9;

 

DEPARTMENT 릴레이션에 아래의 INSERT 문을 사용하여 투플을 삽입하였다.

INSERT INTO DEPARTMENT

VALUES ('회계', 11);

 

(1) LARGE_DEPT 뷰에 대해서 아래의 SELECT문을 수행한 결과를 보여라.

SELECT  *
FROM     LARGE_DEPT;

 

(2) DEPARTMENT 릴레이션에 대해서 아래의 SELECT문을 수행한 결과를 보여라.

SELECT  *
FROM      DEPARTMENT;

 

(3) 만일 ('회계', 11) 투플을 릴레이션 대신에 뷰에 삽입했다면 (1)과 (2)의 결과는 어떻겠는가? 그 이유를 설명하라. (쳌)

(1)은 그대로일 것이다.

(2)는 회계 투플이 없을 것이다. 뷰의 데이터는 기본 릴레이션에 대해 독립적이기 때문이다.

 

(4) 다음 INSERT문이 동작하겠는가? 그 이유는 무엇인가? 이 INSERT문은 DEPARTMENT 릴레이션에 대한 위의 INSERT문이 수행된 후에 수행되었다고 가정한다.

INSERT INTO DEPARTMENT

VALUES ('광고', 8);

동작한다. 뷰에 기본 키가 있고, 집단 함수가 없고, 조인으로 정의된 뷰가 아니기 때문이다. 또한 투플에 DEPTNAME, NumberOfEmployees가 모두 있어 null값이 없다.

 

(5) 위의 두 INSERT문을 수행한 후에 아래의 SELECT문을 수행하면 어떤 결과가 나타나는가?

SELECT  *
FROM     LARGE_DEPT;

 

(6) 위의 두 INSERT문을 수행한 후에 아래의 SELECT문을 수행하면 어떤 결과가 나타나는가?

SELECT  *
FROM     DEPARTMENT;

 

 

 

7. 뷰가 어떻게 데이터베이스의 보안에 사용되는가?

뷰는 뷰의 보안이 되는 기본 릴레이션에 직접 접근할 수 있는 권한을 부여하지 않고 뷰를 통해 데이터에 접근하도록 하기 때문에 보안 메커니즘으로 사용할 수 있다.

 

 

 

9. 메타데이터와 데이터에 관한 아래의 질문들에 답하라.

(1) 메타데이터가 데이터와 다른가?

  → 다르다. 시스템 카탈로그를 메타데이터라 함. 메타데이터는 데이터에 대한 데이터이다.

(2) 메타데이터와 데이터는 별도로 저장되는가?

  → 별도로 저장된다.

(3) 메타데이터와 데이터는 서로 다른 모델로 설명되는가?

  → 서로 같은 모델로 설명된다. 둘 다 테이블 형태이다.

(4) 메타데이터와 데이터는 서로 다른 인터페이스를 통해 갱신되는가?

  → 서로 다른 인터페이스를 통해 갱신된다. 메타데이터는 DBMS가, 데이터는 사용자가 갱신한다.

(5) 메타데이터에 관한 스키마가 있는가?

  → 스키마가 있다.

(6) 메타데이터가 온라인으로 갱신될 수 있는가?

  → 온라인으로(사용자가) 갱신할 수 없다.

(7) 메타데이터의 갱신이 어떻게 데이터에 영향을 미칠 수 있는가?

  → 영향을 미치지 않는다.

 

 

 

 

15. 시스템 카탈로그의 개념을 설명하라. 시스템 카탈로그의 목적이 무엇이고, 어떻게 구현되는가? 사용자들이 시스템 카탈로그를 갱신할 수 있는가?

시스템 카탈로그는 사용자 및 질의 최적화 모듈 등 DBMS 자신의 구성요소에 의해서 사용된다.

사용자들은 시스템 카탈로그를 직접 갱신할 수 없다.

 

 

 

 

 

728x90

댓글