* 뷰(View)
- 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 테이블로부터 유도된 이름을 가지는 가상 테이블
- 기본 테이블처럼 행과 열로 구성되지만 다른 테이블에 있는 데이터를 보여줄 뿐이지 데이터를 직접 담고 있지 않음
- 아래 그림에서 '테이블 A'와 '테이블 B'는 물리 테이블 의미, '뷰C'는 두 개 테이블을 이용하여 생성한 뷰 의미
* 뷰 특징
- 저장 장치 내 물리적으로 존재하지 않음 (가상 테이블)
- 데이터 보정 등 임시적인 작업 위한 용도로 사용
- 기본 테이블과 같은 형태 구조로 조작이 거의 비슷
- 삽입, 삭제, 갱신에 제약 따름
- 논리적 독립성 제공
- 독자적 인덱스 가질 수 없음
- Create View 시스템 권한 이용하여 뷰 생성
- 데이터 선택적으로 뷰 이용하여 처리
* 뷰 사용
- SELECT * FROM (View Name);
- FROM 절에 있는 하나의 뷰를 통해 구성하는 복수 테이블 대체하는 단순성
* 뷰 장/단점
구분 | 장/단점 | 상세 내용 |
장점 | 논리적 독립성 제공 | - 논리 테이블(테이블 구조가 변경되어도 뷰 사용하는 응용 P/G 변경하지 않아도 됨) |
사용자 데이터 관리 용이 | - 복수 테이블에 존재하는 여러 종류 데이터에 대해 단순한 질의어 사용 가능 | |
데이터 보안 용이 | - 중요 보안 데이터 저장 중인 테이블에는 접근 불허하고, 해당 테이블 일부 정보만을 볼 수 있는 뷰에는 접근 허용하는 방식으로 보안 데이터에 대한 접근 제어 가능 | |
단점 | 뷰 자체 인덱스 불가 | - 인덱스는 물리적으로 저장된 데이터 대상으로 하기에 논리적 구성인 뷰 자체는 인덱스 가지지 못함 |
뷰 정의 변경 불가 | - 뷰 정의 변경하려면 뷰 삭제하고 재생성 | |
데이터 변경 제약 존재 | - 뷰 내용에 대한 삽입, 삭제, 변경 제약 있음 |
* 뷰 생성
- CREATE VIEW (뷰 이름)(컬럼 목록) AS (뷰 통해 보여줄 데이터 조회용 쿼리문)
- select문에는 UNION이나 ORDER BY절 사용 불가
- 뷰 생성 시 컬럼명 기술하지 않으면 select문 컬럼 이름 자동 사용
상황 | 뷰 생성 쿼리문 |
테이블A 그대로 | CREATE VIEW 뷰A AS select * from 테이블A; |
테이블A 일부 컬럼 | CREATE VIEW 뷰X AS select 컬럼1, 컬럼2, 컬럼3 from 테이블A; |
테이블A와 테이블B 조인결과 | CREATE VIEW 뷰Y AS select * from 테이블A a, 테이블B b where a.컬럼1=b.컬럼2; |
* 뷰 삭제 및 변경
- 뷰 정의 자체 변경하는 것은 불가능하며 물리적 내용은 뷰 이름과 데이터 조회하기 위한 쿼리문. 이때 뷰 이름이나 구문 쿼리문 변경은 허용 안됨
- 뷰 정의 자체 변경하기 위해서는 삭제 후 재생성 통해서만 뷰에 대한 정의 변경 가능
- DROP VIEW (뷰 이름) {RESTRICT | CASCADE};
- RESTRICT : 뷰를 다른 곳에서 참조하고 있으면 삭제 취소됨
- CASCADE : 뷰를 참조하는 다른 뷰나 제약 조건까지 모두 삭제됨
* 뷰 내용 변경
- 뷰 통해 접근 가능한 데이터 대한 변경 가능하며 실행할 경우 뷰 생성하기 위해 유도된 기본 테이블 데이터가 변경 되지만 모든 경우에 데이터 변경 가능한 것 아님
- 데이터 삽입 경우 뷰에 유도된 테이블 컬럼만 데이터가 삽입되고 기본 테이블 다른 컬럼은 NULL값으로 됨
- 삭제나 변경도 유도된 여러 기본 테이블 중 어떤 컬럼인지 명확하게 구별 불가하기 때문에 일부 제약 따름
320x100
'정보처리기사 > 필기' 카테고리의 다른 글
[정보처리기사 필기 요약] 인덱스(INDEX) (2) (0) | 2021.03.03 |
---|---|
[정보처리기사 필기 요약] 인덱스(INDEX) (1) (0) | 2021.03.03 |
[정보처리기사 필기 요약] 미들웨어 솔루션 (0) | 2021.03.02 |
[정보처리기사 필기 요약] 데이터 명세화 (0) | 2021.03.02 |
[정보처리기사 필기 요약] 내외부 송/수신 (0) | 2021.03.02 |
댓글