Database - View

Bomin Seo·2022년 7월 26일
0

  • 관계 데이터베이스 시스템의 뷰는 다른 릴레이션으로부터 유도된 릴레이션으로서 ANSI/SPARC 3단계 아키텍처의 외부 뷰와는 다른 개념
  • 뷰는 관계 데이터베이스 시스템에서 데이터베이스의 보안 메커니즘으로서, 복잡한 질의를 간단하게 표현하는 수단으로서, 데이터 독립성을 높이기 위해서 사용된다.

시스템 카탈로그

  • 시스템 카탈로그는 시스템 내의 객체(기본 릴레이션, 뷰, 인덱스, 사용자, 접근 권한 등)에 관한 정보를 포함한다.
  • 시스템 카탈로그를 적절히 활용하면 원하는 릴레이션을 데이터베이스에서 찾고, 그 릴레이션에 어떤 애트리뷰트들이 있으며, 각 애트리뷰트의 데이터 타입은 무엇인가 등을 쉽게 파악할 수 있다.

뷰의 개요

  • ANSI/SPARC 3단계 아키텍처에서 외부 뷰는 특정 사용자가 보는 데이터베이스의 구조
  • 관계 데이터베이스에서의 뷰는 한 사용자의 전체 외부 뷰 대신에 하나의 가상 릴레이션을 의미한다.
  • 뷰는 기존의 기본 릴레이션에 대한 SELECT문의 형태로 정의된다.
  • 사용자는 여러 개의 릴레이션과 뷰를 사용할 수 있다.
  • 뷰는 릴레이션으로부터 데이터를 검색하거나 갱신할 수 있는 동적인 창의 역할을 한다.
  • 동적인 창 : 시간에 따라 변하는 데이터베이스의 일부분을 관찰한다는 뜻

  • 하나의 뷰는 여러 개의 릴레이션에 대해 작용할 수 있다.
  • 하나의 뷰는 다른 뷰를 사용할 수 있다.

스냅샷

  • 어느 시점에 SELECT문의 결과를 기본 릴레이션의 형태로 저장해 놓은 것
  • 스냅샷을 정의하는 시점의 기본 릴레이션의 내용이 스냅샷에 반영된다.
  • 어떤 시점의 조직체의 현황, 예를 들어 특정한 시점에 근무하던 사원들의 정보, 재고 정보 등이 스냅샷으로 정의될 수 있다.

뷰의 정의

  • 뷰를 정의하는 SQL문의 구문

  • 뷰의 이름 다음에 애트리뷰트들을 생략하면 뷰를 정의하는데 사용된 SELECT문의 SELECT절에 열거된 애트리뷰트들의 이름과 동일한 애트리뷰트들이 뷰에 포함된다.

  • 뷰를 정의하는 SELECT절에 산술식 또는 집단 함수에 사용된 애트리뷰트가 있는 경우, 뷰의 정의에 조인이 포함되어 있고, 2개 이상의 다른 릴레이션으로부터 가져온 애트리뷰트들의 이름과 같아서 뷰에서 2개 이상의 애트리뷰트의 이름이 같게 되는 경우에는 뷰를 정의할 때 모든 애트리뷰트들의 이름을 지정해야 한다.

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

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

뷰의 장점

  • 뷰는 복잡한 질의를 간단하게 표현할 수 있게 한다.

    다음의 복잡한 질의를 뷰를 사용하여 간단하게 표현할 수 있다.

  • 뷰는 데이터 무결성을 보장하는데 활용된다.
    - 기본적으로 뷰를 통해 투플을 추가하거나 수정할 때 투플이 뷰를 정의하는 SELECT문의 WHERE절의 기준에 맞지 않으면 뷰의 내용에서 사라진다.

  • 뷰는 데이터 독립성을 제공한다.
    - 뷰는 데이터 베이스의 구조가 바뀌어도 기존의 질의를 다시 작성할 필요성을 줄이는데 사용될 수 있다.

    - 위와 같이 뷰를 정의했다면 EMPLOYEE에 접근하던 SELECT문은 데이터베이스 구조가 바뀌어도 사용가능하다.

  • 뷰는 데이터 보안 기능을 제공한다.
    • 뷰는 뷰의 원본이 되는 기본 릴레이션에 직접 접근할 수 있는 권한을 부여하지 않고 뷰를 통해 데이터를 접근하도록 하기 때문에 보안 메커니즘으로 사용할 수 있다.
    • 뷰는 일반적으로 기본 릴레이션의 일부 애트리뷰트들 또는 일부 투플들을 검색하는 SELECT문으로 정의되므로 뷰를 통해서 기본 릴레이션을 접근하면 기본 릴레이션의 일부만 검색할 수 있다.
  • 뷰는 동일한 데이터에 대한 여러 가지 뷰를 제공한다.
    • 뷰는 사용자들의 그룹이 각자 특정한 기준에 따라 데이터를 접근할 수 있도록 한다.

뷰의 갱신

  • 뷰에 대한 갱신도 기본 릴레이션에 대한 갱신으로 변환된다.
    • 입력되지 않은 매개변수는 NULL 값 / DEFAULT값이 입력된다.
    • 기본키의 값이 NULL인 질의로 변환되어 수행될 수 없다.
    • 개별 투플 값을 임의로 변경해야만 수정이 가능하기 때문에 논리적으로 타당하지 않다.
    • 수행이 거절된다.

갱신이 불가능한 뷰

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

profile
KHU, SWCON

0개의 댓글