Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

subsay

관계 데이터베이스 모델과 언어 - 뷰(View) 본문

정보처리 기사

관계 데이터베이스 모델과 언어 - 뷰(View)

subsay 2017. 10. 10. 20:26

1. 뷰(View)의 개요

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

 - 뷰는 저장장치 내에 물리적으로 존재하지 않지만, 사용자에게는 있는 것처럼 가준된다.

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

 - 뷰는 조인문의 사용 최소화롤 사용상의 편의성을 최대화한다.


2. 뷰(View)의 특지어

 - 뷰는 기본 테이블로부터 유도된 테이블이기 때문에 기본 테이블과 같은 형태의 구조를 사용하며, 조작도 기본 테이블과 거의 같다.

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

 - 데이터의 논리적 독립성을 제공할 수 있다.

 - 필요한 데이터만 뷰로 정의*해서 처리할 수 있기 때문에 관리가 용이하고 명령문이 간단해진다.

 - 뷰를 통해서만 데이터에 접근하게 하면 뷰에 나타나지 않는 데이터를 안전하게 보호하는 효율적인 기법으로 사용할 수 있다.

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

 - 일단 정의된 뷰는 다른 뷰의 정의에 기초가 될 수 있다.

 - 뷰가 정의된 기본 테이블이나 뷰를 삭제하면 그 테이블이나 뷰를 기초로 정의된 다른 뷰도 자동으로 삭제된다.


3. 뷰(View)의 장단점

장점

 - 논리적 데이터 독립성을 제공한다.

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

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

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


단점

 - 독립적인 인덱스를 가질 수 없다.

 - ALTER VIEW문을 사용할 수 없다. 즉 뷰의 정의를 변경할 수 없다.

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


4. 뷰(View) 정의문

일반 형식

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

AS SELECT문;

 - SELECT문을 부질의로 사용하여 SELECT문을 결과로서 뷰를 생성한다.

 - 부질의로서의 SELECT문에는 UNION이나 ORDER BY절을 사용할 수 없다.

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

 예) 고객 테이블에서 주소가 춘천시인 고객들의 성명과 전화번호를 '춘천고객'이라는 뷰로 정의하시오.

 CREATE VIEW 춘천고객(성명, 전화번호)

 AS SELECT 성명, 전화번호

 FROM 고객

 WHERE 주소 = '춘천시';


5. 뷰 삭제문

 뷰는 ALTER문을 사용하여 변경할 수 없으므로 필요한 경우는 삭제한 후 재생성한다.

일반 형식

DROP VIEW 뷰이름 {RESTRICT | CASCADE};

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

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

 예) 뷰 '춘천고객'을 삭제하시오. 단 다른 곳에서 참조하고 있으면 제거되지 않게 하시오.

 DROP VIEW 춘천고객 RESTRICT;


*정의 테이블

 뷰는 하나 이상의 다른 테이블로부터 유도된 하나의 가상 테이블이며, 뷰를 만들기 위해 유도된 기본 테이블을 정의 테이블이라합니다.


* {RESTRICT | CASCADE}

 SQL에서 { | }는 둘 중에 하나를 반드시 선택하여 사용하라는 의미입니다. 뷰 삭제 시에는 반드시 RESTRICT와 CASCADE 둘중 하나를 선택해서 기입해야 합니다.