본문 바로가기

정보처리산업기사/데이터베이스

[데이터베이스]뷰(View)-hoyhi-tistory

- 사용자에게 접근이 허용된 자료만을 제한적으로 보여 주기 위해 하나 이상의 기본 테이블로부터 유도된 가상 테이블

- 저장장치 내에 물리적으로 존재하지 않지만, 사용자에게는 있는 것처럼 간주

- 데이터 보정작업, 처리과정 시험 등 임시적인 작업을 위한 용도로 활용

뷰(View) 의 특징

- 기본 테이블로부터 유도된 테이블 -> 기본 테이블과 같은 형태의 구조, 조작도 거의 같음

- 가상 테이블이기 때문에 물리적으로 구현되어 있지 않음

- 필요한 데이터만 뷰로 정의해서 처리 -> 관리가 용이하고 명령문이 간단

- 조인문의 사용을 최소화 -> 사용상의 편의성 최대화

- 뷰를 통해서만 데이터에 접근 -> 뷰에 나타나는 데이터를 안전하게 보호

- 기본 테이블의 기본키를 포함한 속성 집합으로 뷰를 구성해야만 삽입, 삭제, 갱신 연산 가능

- 정의된 뷰는 다른 뷰의 정의에 기초가 될 수 있음

- 하나의 뷰를 삭제하면 그 뷰를 기초로 정의된 다른 뷰도 자동으로 삭제

뷰의 장점

- 논리적 데이터 독립성 제공

- 동일 데이터에 대해 동시에 여러 사용자의 상이한 응용이나 요구 지원

- 사용자의 데이터 관리를 간단하게 해줌

- 접근 제어를 통한 자동 보안이 제공

뷰의 단점

- 독립적인 인덱스 가질 수 없음

- 뷰의 정의를 변경할 수 없음

- 뷰로 구성된 내용에 대한 삽입, 삭제, 갱신 연산에 제약이 따름

뷰 정의문

CREATE VIEW 뷰이름[(속성이름[,속성이름])]

AS SELECT문;

ex)
CREATE VIEW price
AS
SELECT productid,stock
FROM factory
WHERE factoryid = 4
Group by productid

- SELECT문을 부질의(서브쿼리)로 사용하여 SELECT문의 결과로서 뷰 생성

- 부질의(서브쿼리)로서의 SELECT문에는 UNION이나 ORDER BY절을 사용할 수 없음

- 속성 이름을 기술하지 않으면 SELECT문의 속성 이름이 자동으로 사용

뷰 삭제문

DROP VIEW 뷰이름(RESTRICT | CASCADE);

- RESTRICT : 뷰를 다른 곳에서 참조하고 있으면 삭제가 취소

- CASCADE : 뷰를 참조하는 다른 뷰나 제약 조건까지 모두 삭제