Computer Science/Database

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

kangkyunghyun 2026. 2. 11. 23:30
728x90
반응형

경희대학교 이영구 교수님의 데이터베이스 강의를 기반으로 정리한 글입니다.

  • 다른 릴레이션으로부터 유도된 릴레이션(derived relation)으로서 ANSI/SPARC 3단계 아키텍처의 외부 뷰와 다름
  • 데이터베이스의 보안 메커니즘
  • 복잡한 질의를 간단하게 표현하는 수단
  • 데이터 독립성을 높이기 위해

시스템 카탈로그

  • 시스템 내의 객체(기본 릴레이션, 뷰, 인덱스, 사용자, 접근 권한 등)에 관한 정보를 포함
  • 적절히 활용하여 원하는 릴레이션을 데이터베이스에서 탐색 → 애트리뷰트 정보 쉽게 파악

8.1 뷰

뷰의 개요

  • ANSI/SPARC 3단계 아키텍처에서 외부 뷰는 특정 사용자가 보는 데이터베이스의 구조
  • 한 사용자의 전체 외부 뷰 대신 하나의 가상 릴레이션(virtual relation) 의미
  • 기존의 기본 릴레이션(base relation)에 대한 SELECT문의 형태로 정의
  • 사용자는 여러 개의 릴레이션과 뷰를 사용 가능
  • 릴레이션으로부터 데이터를 검색하거나 갱신할 수 있는 동적인 창(dynamic window)의 역할

스냅샷(snapshot)

  • 어느 시점에 SELECT문의 결과를 기본 릴레이션의 형태로 저장해 놓은 것
  • 사진을 찍은 것과 같아서 스냅샷을 정의하는 시점의 기본 릴레이션의 내용이 반영
  • 어떤 시점의 조직체의 현황 → ex. 몇년 몇월에 근무하던 사원 정보, 재고 정보 등

뷰의 정의

  • 뷰를 정의하는 SQL문

  • 뷰의 이름 다음에 애트리뷰트 생략 → SELECT절에 열거된 애트리뷰트 이름과 동일
  • SELECT절에 산술식 또는 집단 함수 사용 → 조인 포함 → 애트리뷰트 이름이 같은 경우 → 모든 애트리뷰트 이름 지정 필수

뷰를 사용하여 데이터를 접근할 때 관계 DBMS에서 거치는 과정

  • 시스템 카탈로그로부터 뷰의 정의(SELECT문) 검색
  • 기본 릴레이션에 대한 뷰의 접근 권한 검사
  • 뷰에 대한 질의를 기본 릴레이션에 대한 동등한 질의로 변환

뷰의 장점

복잡한 질의를 간단하게 표현

  • 기획부에 근무하는 사원들 중 직책이 부장인 사원의 이름과 급여를 검색하는 질의 → 기본 릴레이션을 사용하여 표현하면 복잡한 형태의 질의

  • 뷰에 대해 같은 결과를 검색하는 질의 표현

데이터 무결성을 보장

  • 기본적으로 뷰를 통해 투플을 추가하거나 수정할 때 투플이 뷰를 정의하는 SELECT문의 WHERE절의 기준에 맞지 않으면 뷰의 내용에서 사라짐

  • 이 뷰를 정의할 때 WITH CHECK OPTION을 명시했다고 가정

데이터 독립성 제공

  • DB 구조가 바뀌어도 기존 질의(응용 프로그램)를 다시 작성할 필요성을 줄이는데 사용
  • ex. 기존 EMPLOYEE 릴레이션이 EMP1(EMPNO, EMPNAME, SALARY)과 EMP2(EMPNO, TITLE, MANAGER, DNO)로 분해 → 기존 EMPLOYEE 릴레이션을 접근하던 SELECT문은 더 이상 수행X → EMP1과 EMP2에 대한 SELECT문으로 변경

  • 뷰를 정의하면 기존 SELECT문이 계속해서 수행될 수 있음

데이터 보안 기능 제공

  • 뷰의 원본이 되는 기본 릴레이션에 직접 접근할 수 있는 권한 부여 X → 뷰를 통해 데이터를 접근하도록 → 보안 메커니즘으로 사용
  • 뷰는 일반적으로 기본 릴레이션의 일부 애트리뷰트들 또는 일부 투플들을 검색하는 SELECT문으로 정의됨 → 뷰를 통해 기본 릴레이션을 접근하면 기본 릴레이션의 일부만 검색 가능
  • ex. EMPLOYEE 릴레이션의 SALARY 애트리뷰트를 제외하고 뷰를 정의하면 SALARY 정보를 숨길 수 있음

동일한 데이터에 대한 여러 가지 뷰 제공

  • 사용자들의 그룹이 각자 특정한 기준에 따라 데이터를 접근하도록 함

뷰의 갱신

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

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

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

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

갱신이 불가능한 뷰

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

8.2 관계 DBMS의 시스템 카탈로그

시스템 카탈로그

  • 데이터베이스의 객체(사용자, 릴레이션, 뷰, 인덱스, 권한 등)와 구조들에 관한 모든 데이터를 포함
  • 시스템 카탈로그를 메타데이터라고 함 → 메타데이터: 데이터에 관한 데이터
  • 사용자 및 질의 최적화 모듈 등 DBMS 자신의 구성요소에 의해서 사용됨
  • 관계 DBMS마다 표준화되어 있지 않아서 관계 DBMS마다 서로 다른 형태로 기능 제공
  • 데이터 사전(data dictionary) 또는 시스템 테이블이라고도 부름

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

  • SELECT문이 문법적으로 정확한가 검사
  • SELECT문에서 참조하는 EMPLOYEE 릴레이션이 데이터베이스에 존재하는가 검사
  • EMPLOYEE 릴레이션에 SELECT절에 열거된 애트리뷰트와 WHERE절에서 조건에 사용된 애트리뷰트가 존재하는가 확인
  • SALARY가 수식에 사용 → 데이터 타입이 숫자형인가 검사
  • TITLE이 문자열과 비교 → 데이터 타입이 문자형인가 검사
  • 질의 입력 사용자가 EMPLOYEE 릴레이션의 EMPNAME, SALARY를 검색할 수 있는 권한이 있는가 확인
  • TITLE, DNO에 인덱스가 정의되어 있는지 확인
  • 각각 인덱스 존재 → DBMS가 두 인덱스 중에서 조건을 만족하는 투플 수가 적은 것을 선택하기 위해 관계 데이터베이스 시스템에 데이터베이스 외에 추가로 정보를 유지해야 함
  • 한 릴레이션의 전체 투플 수와 그 릴레이션에 정의된 각 인덱스에 존재하는 상이한 값들의 개수를 유지하면 어느 인덱스를 사용하는 것이 유리한가 예상 가능
  • EMPLOYEE 릴레이션 전체 투플 수 7, TITLE 애트리뷰트에는 사원, 대리, 과장, 부장, 사장 존재
  • DNO 애트리뷰트에는 1, 2, 3 존재
  • 따라서 TITLE에 정의된 인덱스가 DNO에 정의된 인덱스보다 대상 투플들을 더 좁혀주므로 유리

질의 최적화

  • DBMS가 질의를 수행하는 여러 방법 중 가장 비용이 적게 드는 방법을 찾는 과정
  • 질의 최적화 모듈이 정확한 결정을 내릴 수 있도록 DBMS는 자체 목적을 위해 시스템 카탈로그에 다양한 정보 유지

관계 DBMS의 시스템 카탈로그

  • 사용자 릴레이션에 적용되는 회복 기법과 동시성 제어 기법을 동일하게 사용 가능
  • SELECT문을 사용하여 내용 검색 가능
  • 릴레이션, 애트리뷰트, 인덱스, 사용자, 권한 등 각 유형마다 별도의 릴레이션 유지

시스템 카탈로그의 갱신

  • 어떤 사용자도 시스템 카탈로그를 직접 갱신 불가능 → DELETE, UPDATE, INSERT 사용해서 변경 불가능
  • EMPLOYEE 릴레이션의 소유자인 KIM이 EMPLOYEE 릴레이션에서 MANAGER 애트리뷰트를 삭제

  • 대신 시스템 카탈로그에 대해 사용하면 DBMS가 거절

시스템 카탈로그에 유지되는 통계 정보

릴레이션마다

  • 투플의 크기
  • 투플 수
  • 각 블록의 채우기 비율
  • 블록킹 인수
  • 릴레이션의 크기(블록 수)

뷰마다

  • 뷰의 이름
  • 뷰의 정의

애트리뷰트마다

  • 애트리뷰트의 데이터 타입과 크기
  • 애트리뷰트 내의 상이한 값들의 수
  • 애트리뷰트 값의 범위
  • 선택율(조건을 만족하는 투플 수/전체 투플 수)

사용자마다

  • 접근할 수 있는 릴레이션
  • 권한

인덱스마다

  • 인덱스된 애트리뷰트(키 애트리뷰트 또는 비 키 애트리뷰트)
  • 클러스터링 인덱스/비 클러스터링 인덱스 여부
  • 밀집/희소 인덱스 여부
  • 인덱스의 높이
  • 1단계 인덱스의 블록 수

8.3 오라클의 시스템 카탈로그

  • 시스템 카탈로그를 데이터 사전(data dictionary)이라고 부름
  • 시스템 테이블스페이스에 저장됨
  • 기본 테이블과 데이터 사전 뷰로 구성됨
  • 기본 테이블의 정보가 암호화된 형태로 저장 → 사용자가 직접 접근할 필요 거의 X → 일반적으로 이해하기 쉬운 형식의 정보를 제공하는 데이터 사전 뷰를 접근

데이터 사전 뷰의 세 부류

DBA_xxx 뷰

  • 데이터베이스 내의 모든 객체들에 관한 정보

ALL_xxx 뷰

  • 현재의 사용자가 접근할 수 있는 객체들에 관한 정보

USER_xxx 뷰

  • 현재의 사용자가 소유하고 있는 객체들에 관한 정보

  • 사용자 KIM이 소유한 테이블이나 뷰에 관한 정보를 검색하기 위해서 KIM으로 Oracle SQL Developer에 로그인을 한 후 다음과 같은 질의 수행

  • OWNER는 사용자의 이름, TABLE_NAME은 테이블이나 뷰의 이름, TABLE_TYPE은 테이블의 유형(테이블, 뷰)
728x90
반응형