본문 바로가기
Computer Science/DataBase

[데이터베이스] 8장 뷰와 시스템 카탈로그

by na1-4an 2023. 12. 12.
  • 뷰: 관계 데이터베이스 시스템에서 데이터베이스의 보안 메커니즘. 복잡한 질의를 간단하게 표현하는 수단. 데이터 독립성을 높이기 위해 사용. 
  • 시스템 카탈로그: 시스템 내의 객체에 관한 정보를 포함.

8-1 뷰

1. 뷰

  • 한 사용자의 전체 외부 뷰 대신 하나의 가상 릴레이션을 의미.
  • 뷰는 기존의 기본 릴레이션에 대한 SELECT문으로 정의됨.
  • 뷰는 리렐이션으로부터 데이터를 검생하거나 갱신할 수 있는 동적인 창의 역할을 함.
  • 스냅샷: SELECT문의 결과를 기본 릴레이션의 형태로 저장한 것.

 

2. 뷰의 정의

 

 

3. 뷰 사용시 DBMS에서 거치는 과정

 

4. 뷰의 장점

  • 복잡한 질의를 간단하게 표현할 수 있게 함
  • 데이터 무결성을 보장하는데 활용됨. - WITH CHECK OPTION을 사용하면 뷰가 선택할 수 없는 투플들을 생성할 수 없도록 보장.
  • 데이터 독립성을 제공함
  • 데이터 보안 기능을 제공함
  • 동일한 데이터에 대한 여러 뷰를 제공함

 

5. 뷰의 갱갱갱갱갱갱신

: 뷰에 대한 갱신도 기본 릴레이션에 대한 갱신으로 변환됨.

  - 갱신1: 한 릴레이션 위에서 정의된 뷰에 대한 갱신

  MANAGER와 SALARY 애트리뷰트에는 널값, DNO 애트리뷰 트에는 부서번호 1이 입력된다

  (4.3.2절에서 EMPLOYEE 릴레이션을 정의할 때 DNO 애트리 뷰트의 디폴트값을 1로 지정함.)

 

  - 갱신2: 두 개의 릴레이션 위에서 정의된 뷰에 대한 갱신

  기본키의 값이 널인 투플은 엔티티 무결성 제약조건에 의해 삽입을 거절함.

 

  - 갱신3: 집단 함수 등을 포함한 뷰에 대한 갱신

  위처럼 집단 함수의 결과가 애트리뷰트에 포함되므로 애트리뷰트 이름을 명시해야함.

  이 뷰를 갱신하는 연산은 EMPLOYEE 릴레이션에 대한 갱신으로 변환될 수 없음.

  따라서 위의 두 명령어는 거절됨.

 

6. 갱신이 불가능한 뷰

  • 한 릴레이션 위에서 정의되었으나 그 릴레이션의 기본 키가 포함되지 않은 뷰
  • 기본 릴레이션의 애트리뷰트들 중 뷰에 포함되지 않은 애트리뷰트에 대해 NOT NULL이 지정되었을 때
  • 집단 함수가 포함된 뷰
  • 조인으로 정의된 뷰

 

8-2 관계 DBMS의 시스템 카탈로그

1. 시스템 카탈로그

: 데이터베이스의 객체와 구조들에 관한 모든 데이터. 메타데이터, 데이터 사전, 시스템 테이블이라고 함.

 

2. 시스템 카탈로그가 질의 처리에 어떻게 활용되는가

  • EMPLOYEE 릴레이션이 데이터베이스에 존재하는가 검사
  • SELECT저로가 WHERE절에서 사용된 애트리뷰트가 존재하는가
  • 자료형 검사
  • 질의를 입력한 사용자가 EMPLOYEE릴레이션의 애트리뷰트들을 검색할 권한이 있는가 확인
  • 등등

 

3. 질의 최적화

: DBMS가 질의를 수행하는 여러 가지 방법들 중에 가장 비용이 적게 드는 방법을 찾는 과정

Paring and translation → relational algebra expression

Optimization → excution plan

evaluation engine → query output

 

4. 관계 DBMS의 시스템 카탈로그

  • 릴레이션에 관한 정보를 유지하는 릴레이션을 SYS_RELATION
  • 애트리뷰트에 관한 정보를 유지하는 릴레이션의 이름을SYS_ATTRIBUTE
  • 어떤 사용자도 직접 시스템 카탈로그를 직접 갱신할 수 없음.
  • DELTE, UPDATE, INSERT 불가
  • 릴레이션 소유자인 kim이 EMPLOYEE 릴레이션에서 MANAGER 애트리뷰트를 삭제할 때 

왼쪽처럼 수정해야함. 오른쪽은 불가능.

 

5. 카탈로그에 유지되는 통계 정보

 

8-3 Oracle Server의 시스템 카탈로그

1. 데이터 사전의 세 부류

  • DBA_xxx 뷰: 데이터베이스 내의 모든 객체들에 관한 정보
  • ALL_xxx 뷰: 현재의 사용자가 접근할 수 있는 객체들에 관한 정보
  • USER_xxx 뷰: 현재 사용자가 소유하고 있는 객체들에 관한 정보

2. 데이터 사전 사용 예시

교재 참조