[ 뷰의 개념 ]
▪ 뷰는 다른 테이블에서 유도된 단일 테이블이다. 여기서 다른 테이블들은 기본 테이블이거나 이전에 정의 한 뷰일 수 있다.
- 뷰는 물리적인 형태로 존재할 필요가 없다. 투플들이 항상 물리적으로 저장되어 있는 기본 테이블과는 달 리 가상 테이블로 간주된다.
▪ 가상 테이블이기 때문에 뷰에 적용할 수 있는 갱신 연산들은 제한을 받지만 뷰에 대한 질의는 아무런 제 한을 받지 않는다.
▪ 물리적으로 존재하지는 않더라도 자주 참조할 필요가 있는 테이블을 명시하는 한 가지 방법으로 뷰를 생 각할 수 있다. 조인을 명시하는 질의를 사용하는 대신에, 자주 검색하고자 하는 애트리뷰트를 포함하고 있 는 결과를 미리 뷰로 정의한 후 이 뷰에 대해 질의할 수 있다. 그러면 세 개의 테이블에 대하여 두 개의 조인을 포함하는 검색을 사용하는 대신에 한 테이블을 검색함으로써 원하는 애트리뷰트들을 검색 할 수 있 다. 이때, 세 테이블을 정의 테이블이라고 부른다.
[ 뷰의 명시 ]
▪ 뷰를 정의하는 명령은 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 |