뷰는 무엇인가?
기존의 테이블의 정보에 대한 권한은 지정을 하는 것이 불가능하다고 했을 때, 발생할 수 있는 보안의 문제, 혹은 보다 논리적으로 질의를 하기 위해서 사용되는 것이 뷰이다.

뷰의 정의

create view faculty as
select ID, name, dept_name
from instructor;

위의 질의는 faculty라는 이름의 뷰를 인스트럭터 테이블에서 ID와 이름, 그리고 부서명을 이용하여 새롭게 구성한 것이다. 이 뷰에서는 기존의 인스트럭터 테이블에서 가지고 있던 Salary는 질의할 수 없게 된다.



기존의 테이블도 마찬가지이기는 하지만, 릴레이션이라는 것은 하나의 집합을 의미한다. 뷰라는 것은 하나의 가상의 집합이고 만약 우리가 뷰에 임의의 데이터를 삽입 혹은 제거한다면 어떻게 될 것인가?

insert into faculty
values ('30765', 'Green', 'Music');

위의 쿼리는 인스트럭터 테이블에 동일한 데이터가 들어가되, 포함하지 않는 속성들에 대해서는 NULL 값으로 지정될 것이다. (혹은 오류...)


뷰를 이용한 데이터베이스 수정은 문제점을 지니고 있는데, 예를 들어, 해당되는 뷰가 2개 이상의 테이블을 조인하여 생성을 한 경우, 혹은 하나의 테이블을 이용하였다고 하더라도, 참조 키를 이용하는 경우, group by 혹은 having으로 묶인 경우, Primary key를 포함하지 않는 경우 등등...의 경우에는 뷰를 이용한 수정이 불가능하다.


위의 내용은 아래의 도서에서 4.2, 4.2.1, 4.2.4의 내용을 정리한 것입니다.
데이터베이스 시스템
국내도서>컴퓨터/인터넷
저자 : Abraham Silberschatz / 김형주역
출판 : 한국맥그로힐 2010.12.30
상세보기


저작자 표시 비영리 변경 금지
신고

'Trash Can' 카테고리의 다른 글

Thread safe 하지 않은 예제 - Java  (2) 2011.10.27
Thread [Java]  (0) 2011.10.26
Intermediate SQL - cont. 뷰  (0) 2011.10.01
11. Indexing and Hashing  (0) 2011.10.01
Introducing SQL - cont. 3.7 집계함수  (0) 2011.09.27
Introducing SQL - cont. 집합 연산  (0) 2011.09.26
by 가우초 2011.10.01 23:35

티스토리 툴바