본문 바로가기
컴퓨터공학/데이터베이스

뷰(VIEW)

by Daniel.kwak 2018. 10. 31.

목표

1.뷰에 대해서 알아본다.




뷰(View)

관계 데이터베이스에서 뷰는 일종의 가상 릴레이션을 의미한다. 뷰는 기존의 기본 릴레이션에 대한 SELECT문의 형태로 정의된다.

사용자는 여러 개의 릴레이션과 뷰를 사용할 수 있으며, 릴레이션으로부터 데이터를 검색하거나 갱신할 수 있는 동적인 창의 역할을 한다.

스냅샷이란 어느 시점의 SELECT문의 결과를 기본 릴레이션의 형태로 저장해놓은 것이다. 어떤 시점의 조직체의 현황, 예를 들어 몇년, 몇월 시점에 근무하던 사원들의 정보, 재고 정보 등이 스냅샷으로 정의될 수 있음.

 또한 뷰는 뷰와 다른 기본 릴레이션의 조합으로도 만들어질 수 있다. 뷰를 만드는 예시를 보자. 






이렇게 뷰를 정의해놓고, 뷰에 대해서 질의를 날렸을때 DBMS는 어떻게 처리를 할까?
먼저 시스템 카탈로그로부터 뷰의 정의, 즉 SELECT문을 검색한다. 그리고 기본 릴레이션에 대해서 뷰의 접근 권한이 있는지를 조사한다.
마지막으로, 뷰에 대한 질의를 기본 릴레이션에 대한 동등한 질의로 변환한다. 



뷰의 장점으로는 어떤게 있을까?
1.복잡한 질의를 간단하게 표현할 수 있게 한다. 
ex) 기획부에 근무하는 사원들 중, 직책이 부장인 사원의 사원이름과 급여를 검색하는 질의를 기본 릴레이션으로 표현한다면 


그러나 뷰로 표현할 경우 간단해진다.


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


3.뷰는 데이터 독립성을 제공한다. 데이터베이스 구조가 바뀌어도 기존의 질의(응용 프로그램)를 다시 작성할 필요성을 줄이는데 사용된다. 예를 들어 

응용이 요구사항이 변경되어 기존의 EMPLOYEE 릴레이션이 두 개의 릴레이션 EMP1(EMPNO , EMPNAME , SALARY), EMP2(EMPNO , TITLE, MANAGER, DNO)로 분리되었다고 한다면 응용에서 사용하던 기존의 SELECT문은 수행되지 않으므로 변경해야 한다. 그러나 아래와 같이 EMPLOYEE라는 뷰를 정의했다면 응요에서 EMPLOYEE릴레이션에 접근하는 SELECT문은 계속 수행 될 수 있다. 



4.뷰는 데이터 보안 기능을 제공한다. 원본이 되는 기본 릴레이션에 직접 접근할 수 있는 권한을 부여하지 않고 뷰를 통하므로 보안 메커니즘으로 사용할 수 있다.


또한 뷰에 대한 갱신도 기본 릴레이션에 대한 갱신으로 변환된다.


갱신이 불가능한 경우는 
1.릴레이션의 기본키가 포함되지 않은 뷰
2.뷰에 포함되지 않은 애트리뷰트 중 하나가 NOT NULL일 경우
3.집단 함수가 포함된 뷰
4.조인으로 정의된 뷰


'컴퓨터공학 > 데이터베이스' 카테고리의 다른 글

트랜잭션  (0) 2018.10.31
데이터베이스 정규화  (0) 2018.10.30
데이터베이스의 인덱스  (0) 2018.10.28
SQL  (0) 2018.10.28
관계 데이터 모델과 제약조건  (0) 2018.10.27
데이터베이스 시스템 개요  (0) 2018.10.27