뷰는 다른 테이블을 기반으로 만들어진 가상의 테이블을 의미한다. 뷰는 실제로 데이터를 저장하고 있지 않으며, 논리적으로만 존재한다. 그러나 데이터베이스 사용자는 실제로 데이터가 존재하는 테이블과 동일하게 뷰를 조작할 수 있다. SQL 기반의 데이터베이스에서는 뷰를 named table, derived table, virtual table이라고 말하기도 한다.
아래의 [그림 1]은 department 테이블에서 생성된 두 개의 뷰를 보여준다. 하나의 뷰는 공과대학에 소속된 학과만을 포함하고 있으며, 다른 하나의 뷰는 상경대학에 소속된 학과만을 포함하고 있다.
[그림 1] 뷰의 생성
데이터베이스 사용자는 [그림 1]과 같이 하나의 실제 데이터 (테이블)로부터 가상의 논리적 구조 (뷰)를 생성하여 조작할 수 있다. 뷰를 이용하면, 실제 데이터를 다수의 테이블에 분할하여 저장할 필요 없이 하나의 테이블에서 효율적으로 관리할 수 있으며, 이와 동시에 각각의 응용 프로그램이 원하는 서로 다른 논리적 구조 또한 손쉽게 제공할 수 있다.
DBMS의 가장 중요한 목적은 데이터의 저장 구조나 처리 방식이 변경되어도 응용 프로그램에 영향을 주지 않도록 하는 데이터 독립성의 구현이다. 데이터베이스에서 말하는 데이터 독립성에는 두 가지 종류가 있다.
- 논리적 데이터 독립성 (logical data independence): 각각의 응용 프로그램들이 서로 영향을 받지 않으면서 응용 프로그램이 원하는 논리적 구조를 제공할 수 있는 능력
- 물리적 데이터 독립성 (physical data independence): 응용 프로그램에 영향을 미치지 않고 데이터의 물리적 구조를 변경할 수 있는 능력
뷰는 단순히 각각의 사용자가 원하는 형태의 가상 테이블을 제공하는 것이지만, 데이터베이스에서 뷰를 이용하는 것은 다음과 같은 이점이 있다.
- 논리적 데이터 독립성 제공: 뷰를 이용하면 다른 응용 프로그램이나 데이터베이스에 영향을 주지 않고, 응용 프로그램이 원하는 형태로 데이터에 접근할 수 있기 때문에 논리적 데이터 독립성을 구현할 수 있다.
- 데이터 조작 연산의 간소화: 뷰를 이용하여 응용 프로그램이 원하는 형태의 논리적 구조를 형성하면, 데이터 조작 연산을 간소화할 수 있다. 예를 들어, 회원 테이블만 존재하는 데이터베이스에서 우수 회원 중에서 50세 이상 회원을 찾는다면, 회원 테이블에서 우수 회원을 추출하여 그 중에서 50세 이상인 회원을 검색해야 할 것이다. 그러나 우수 회원을 원소로 갖는 뷰를 생성해놓으면, 단순히 해당 뷰에서 50세 이상인 회원을 검색하기만 하면 된다.
- 접근 제어를 통한 보안 기능 제공: 특정 필드만을 선택하여 뷰를 생성할 수 있기 때문에 응용 프로그램은 선택되지 않은 필드의 존재를 알 수 없으며, 접근 또한 할 수 없다. 따라서, 뷰를 이용하면 특정 데이터에 대한 접근 제어와 보안 기능을 제공할 수 있다.
뷰는 실제 데이터를 저장하고 있지 않는 가상의 테이블이지만, 검색, 삽입, 수정, 삭제 연산이 가능하다. 그러나 뷰는 테이블로부터 생성된 가상의 테이블이기 때문에 뷰에 대한 연산 시, 아래와 같은 제약 사항을 갖는다.
- 뷰는 자신을 생성하기 위해 이용된 테이블의 기본 키를 포함하고 있어야 연산이 가능하다.
- 뷰의 필드가 상수, 내장 함수, 연산식, GROUP BY 키워드로부터 유도되었다면, 해당 뷰는 연산이 불가능하다.
- 다수의 테이블을 JOIN 하여 생성한 뷰는 연산이 불가능하다.
- 연산을 적용할 수 없는 뷰에서 생성된 뷰 또한 연산이 불가능하다.
'데이터베이스' 카테고리의 다른 글
[관계형 데이터베이스] - ER 다이어그램 (Entity-Relationship Diagram) (0) | 2016.12.10 |
---|---|
[관계형 데이터베이스] - 데이터베이스 정규화 (Database Normalization) (1) | 2016.12.09 |
[관계형 데이터베이스] - ER 모델 (Entity-Relationship Model) (0) | 2016.12.07 |
[관계형 데이터베이스] - 함수 종속성 (Functional Dependency) (1) | 2016.11.13 |
[관계형 데이터베이스] - 무결성 (Integrity) (1) | 2016.11.13 |