[ 뷰의 개념 ]

 뷰는 다른 테이블에서 유도된 단일 테이블이다. 여기서 다른 테이블들은 기본 테이블이거나 이전에 정의 한 뷰일 수 있다.

  - 뷰는 물리적인 형태로 존재할 필요가 없다. 투플들이 항상 물리적으로 저장되어 있는 기본 테이블과는 달 리 가상 테이블로 간주된다.

 가상 테이블이기 때문에 뷰에 적용할 수 있는 갱신 연산들은 제한을 받지만 뷰에 대한 질의는 아무런 제 한을 받지 않는다.

 물리적으로 존재하지는 않더라도 자주 참조할 필요가 있는 테이블을 명시하는 한 가지 방법으로 뷰를 생 각할 수 있다. 조인을 명시하는 질의를 사용하는 대신에, 자주 검색하고자 하는 애트리뷰트를 포함하고 있 는 결과를 미리 뷰로 정의한 후 이 뷰에 대해 질의할 수 있다. 그러면 세 개의 테이블에 대하여 두 개의 조인을 포함하는 검색을 사용하는 대신에 한 테이블을 검색함으로써 원하는 애트리뷰트들을 검색 할 수 있 다. 이때, 세 테이블을 정의 테이블이라고 부른다.

 

[ 뷰의 명시 ]

 뷰를 정의하는 명령은 CREATE VIEW 이다.

 뷰의 정의는 (가상) 테이블 이름 (또는 뷰 이름), 애트리뷰트 이름들의 리스트, 뷰의 내용을 나타내는 질 의로 구성된다.

 뷰의 애트리뷰트들 중에서 함수나 산술 연산들을 적용해서 구해야 하는 애트리뷰트가 전혀 없으면 뷰에 대해서 새로운 애트리뷰트 이름들을 명시하지 않아도 된다. 이 경우 뷰의 애트리뷰트 이름들은 디폴트로 뷰의 정의에 사용되는 테이블들에 있는 애트리뷰트 이름들과 같게 된다.

 기본 테이블을 사용해서 질의를 하는 것과 같은 방법으로 뷰-또는 가상 테이블-에대한 SQL 질의를 할 수 있다.

 뷰의 주요 장점은 질의들을 간단하게 작성할 수 있다는 것이다. 또한 뷰는 보안 기법과 권한 부여 메커니 즘에 사용될 수도 있다.

 뷰는 항상 최신 정보를 갖는다. 만약 뷰의 정의에 사용된 기본 테이블의 투플들이 수정되면, 뷰는 자동적 으로 변경사항들을 반영해야 한다. 따라서 뷰는 뷰의 정의 시점이 아니라 뷰에 대해 질의를 할 때 실제화 또는 구체화 된다.

 어떤 뷰가 더 이상 필요하지 않으면 DROP VIEW 명령을 사용하여 뷰를 제거할 수 있다.

 

[ 뷰의 구현, 갱신, 및 온라인 뷰 ]

 질의를 위해 뷰를 효율적으로 구현하는 데에는 두 가지 주요 접근 방식이 있다.

  - 질의 수정 : 뷰에 대한 질의를 기본 테이블들에 대한 질의로 수정 또는 변경하는 것 (단점) 실행하는 데 시간이 많이 소모되는 복잡한 질의로 정의된 뷰들에 대해서, 특히 짧은 시간 안에 동일한 뷰에 많은 질의가 적용될 때 비 효율적이다.

  - 뷰의 실체화 : 뷰에 대해서 처음 질의 요구가 있을 때 임시 뷰 테이블을 물리적으로 생성하고 뷰에 다 른 질의들이 이어질 것이라는 가정하에 테이블을 유지하는 것이다. 이런 경우에는 뷰의 내 용을 최신 상태로 유지하기 위해서 기본 테이블이 갱신되었을 때 뷰 테이블을 자동적으로 갱신하는 효율적인 방법이 개발되어야 한다.

  - 점진적 갱신 : 이 방법은 정의된 기본 테이블들 중 하나에 데이터베이스 변경이 적용될 때 DBMS가 실체 화된 뷰 테이블 내에 삽입, 삭제, 갱신해야 할 투플들을 결정한다. 일반적으로 이 뷰는 질의가 되고 있는 동안에는 실체화된 (물리적으로 저장된) 테이블로써 유지된다. 일정 기 간 동안 뷰에 질의가 없으면 시스템은 물리적인 테이블을 자동적으로 삭제하고, 다음에 그 뷰를 참조하는 질의가 있을 때 처음부터 뷰 테이블을 재구성한다.

 일반적으로 집단 함수를 사용하지 않고 하나의 기본 테이블에서 정의된 뷰의 갱신은 특정 조건에 따라 그 기본 릴레이션에 대한 갱신으로 사상 될 수 있다.

 조인을 포함하는 뷰의 갱신은 여러 가지 방법으로 기본 릴레이션들에 대한 갱신 동작으로 사상될 수 있다.

 일반적으로 뷰에 대한 갱신은 기본 릴레이션에 대한 갱신으로 모호함이 없이 매핑시킬 수 있을 때 가능하 다.

 뷰에 대한 갱신이 기본 릴레이션들에 대한 여러 개의 갱신으로 대응 될 수 있다면 이들 갱신 중에서 가장 가능성이 높은 것 하나를 선택하기 위한 프로시저를 거쳐야 한다.

  - 프로시저

    · 하나의 기본 릴레이션을 사용해서 정의된 뷰가 그 기본 릴레이션의 기본 키 뿐만 아니라 디 폴트값이 지정되지 않은 NOT NULL 제약조건의 모든 애트리뷰트들을 포함하고 있으면 뷰 의 갱신이 가능하다.

    · 일반적으로 다수의 테이블상에서 조인을 사용하여 정의된 뷰들은 갱신할 수 없다.

    · 그룹화와 집단 함수를 사용하여 정의된 뷰들은 갱신할 수 없다.

 SQL 에서 뷰의 갱신이 가능하려면 뷰 정의 끝에 WITH CHECK OPTION 절을 추가해야 한다. 이렇게 하면 시스템이 뷰를 갱신할 수 있는 가를 검사할 수 있고 뷰의 갱신을 위한 실행 계획을 찾아 낼 수 있다.

 SQL 질의의 FROM 절에서 뷰 테이블을 정의하는 것이 가능하다. 이것은 인라인 뷰라고 알려져 있는데, 이 경우 뷰는 자체 내에서 정의된다.

 

댓글이나 공감 남겨주는 사람 착한사람

'학사 그리고 석사 > 데이터베이스' 카테고리의 다른 글

디스크 저장  (0) 2019.09.19
INDEX  (0) 2019.09.18
확장된 질의 (2)  (0) 2019.09.18
확장된 질의 (1)  (0) 2019.09.18
삽입, 삭제, 갱신문  (0) 2019.09.18

+ Recent posts