관리 메뉴

fatalite

VIEW & CATALOG with Oracle SQL 본문

컴퓨터 공학/Database 데이터베이스

VIEW & CATALOG with Oracle SQL

fataliteforu 2022. 12. 13. 12:03

뷰란

뷰란 릴레이션을 이용한 가상 릴레이션이다.

하나 혹은 여러 개의 릴레이션을 가공해서 인터페이스처럼 제공하는 것이다.

 

뷰는 다음과 같은 명령어로 생성할 수 있다.

CREATE VIEW view_name (attr1, attr2, ...)
AS SELECT ~
WITH CHECK OPTION

WITH CHECK OPTION은 튜플 삽입시 조건을 명시한다.

 

따라서 뷰의 장점은 다음과 같이 나열할 수 있다.

  • 간단함
  • 무결성
  • 독립성
  • 보안성

 

뷰의 갱신을 하는 방법이다.

기존 테이블과 같이 INSERT, UPDATE될 수 있다.

그러나, 뷰의 원래 릴레이션의 무결성 제약조건을 만족하지 않으면 거절된다.

 

예를 들어

  • 원래의 릴레이션의 기본키를 포함하지 않는다.
  • 원래의 릴레이션에 NOT NULL이 붙었는데, NULL 값이 입력되려 한다.
  • 집단 함수가 표함된 뷰 등이 있다.

시스템 카탈로그

시스템 카탈로그란

DBMS올바른 데이터베이스를 유지하기 위해 사용하는 스키마이다.

데이터를 위한 데이터라고 생각하면 된다. 

학교의 학년 부장이 DBMS라면, 학급은 하나의 테이블을 의미하는 것이라 생각하면 된다.

학년 부장은 각각의 학급에 크기라던지, 여남 비율 등을 알고 있어야만 올바른 지도가 가능하듯이 말이다.

이와 마찬가지로 인덱스를 어떻게 사용할지 결정하는 등, 질의 최적화에 사용된다.

사용자는 시스템 카탈로그를 수정할 수 없다.

 

릴레이션 정보의 시스템 카탈로그 릴레이션 : SYS_RELATION(...);

애트리뷰트 정보의 시스템 카탈로그 릴레이션 : SYS_ATTRIBUTE(...);

 


오라클에서의 시스템 카탈로그

오라클에서는 시스템 카탈로그를 데이터 사전이라고 부른다. 

데이터 사전은 또 기본 테이블과 데이터 사전 뷰로 나뉜다.

CREATE DATABASE를 하면 오라클은 자동으로 기본 테이블을 생성한다.

기본 테이블은 데이터베이스에 대한 정보를 담고 있고,

데이터 사전 뷰는 데이터 베이스 내의 객체의 정보를 담고 있다.

 

사용자에 따라 데이터 사전 뷰를 다르게 정의해놓는다.

DBA_XXX : 데이터베이스의 모든 객체에 대한 정보에 대한 뷰다. 따라서 주로 관리자가 사용한다.

ALL_XXX : 현재 유저가 접근할 수 있는 객체들에 관한 정보를 질의할 수 있다.

USER_XXX : 현재 유자가 소유하고 있는 객체들에 관한 정보를 질의할 수 있다.

 

오라클 시스템 카탈로그 뷰 예시

ALL_CATALOG

ALL_CONSTRAINTS

...

USER_CATALOG

USER_INDEXES

...

 

통계 정보는 ANALYZE문을 사용하여 갱신이 가능하다.

ANALYZE INDEX EMPDNO_IDX
COMPUTE STATISTICS;