데이터베이스

뷰(VIEW) 갱신 제약사항_함수가 사용된 산술식, 집계함수, 집합연산, DISTINCT, GROUP BY, HAVING, 조인 등 / 뷰 장점, 단점, WITH CHECK OPTION

스윙스윙 2021. 9. 3. 22:06

▣ 뷰 갱신 제약사항_함수가 사용된 산술식, 집계함수, 집합연산, DISTINCT, GROUP BY, HAVING, 조인 등 / 뷰 장점, 단점

- 뷰의 열이 상수나 산술 연산자 또는 함수가 사용된 산술 식으로 정의된 경우
- 집계 함수(COUNT, SUM, AVG, MAX, MIN 등)가 사용된 경우
- 집합 연산(UNION, UNION ALL, INTERSECT, EXCEPT/MINUS 등)이 사용된 경우
- DISTINCT, GROUP BY, HAVING이 사용된 경우
- 두 개 이상의 테이블이 연관되어 정의된 경우
- 변경할 수 없는 뷰를 기초로 정의된 경우
- 기타 순환관계 전개처리(CONNECT BY … START WITH), ROWNUM 등이 사용된 경우

 

▣ 뷰 장점, 단점

구분 설명
장점 논리적 독립성 제공
데이터 접근 제어로 보안성 제공
사용자의 데이터 관리를 용이하게 함
뷰로 SQL문을 간단하게 함
여러 사용자의 상이한 응용이나 요구 지원
단점 뷰 정의를 변경할 수 없음(DBMS에 따라 허용하는 경우 있음)
삽입, 삭제, 갱신 연산에 많은 제한을 가짐(이론적으로 변경이 가능한 경우라도 실제로는 변경이 허용되지 않는 경우 있음)

 

▣ 뷰(VIEW)에서 활용되는 WITH CHECK OPTION

WITH CHECK OPTION절은 VIEW에 대한 갱신이나 삽입 연산을 실행할 때 VIEW 정의 조건을 위반하면 실행이 거부된다는 것을 의미하므로

- 투플이 뷰에서 사라지지 않도록 보호하고,

- 데이터 무결성을 유지할 수 있으며,

- INSERT문과 UPDATE문으로 뷰에 정의된 조건에 위배된 투플을 생성할 수 없음.

 

 


2016년 62번

정답 : 2번

- 한 가지 유의해야 할 사항은 DBMS마다 제약사항을 지원하는 정책이 다를 수 있음
또한, 두 개 이상의 테이블이 연관되어 정의되었다고 무조건 갱신이 허용되지 않는 것은 아님
두 테이블이 1:M 조인 시 M쪽의 테이블 키가 보존되므로, 즉 집합 기준이 M쪽 테이블을 기준으
로 유지되어 M쪽 테이블만 갱신이 가능
① INSERT INTO EMPDEPT VALUES ('kim', 'sales', 'managing', 10);
=> DEPT와 EMP 2개의 테이블이 조인으로 연결되어 있으므로 키보존 테이블인 EMP에만 갱신
(삽입)이 가능합니다만, 삽입 시 EMP의 기본키(PK) 컬럼인 EMPNO가 뷰에서 정의되어 있지
않으므로 데이터를 삽입할 수 없습니다.
③ CREATE INDEX E_01 ON EMPDEPT(ENAME);
=> 기본적으로 뷰는 물리적 저장공간을 가지지 않기 때문에 인덱스를 설정할 수 없습니다.
④ UPDATE EMPDEPT SET DEPTNO=20 WHERE JOB LIKE 'managing';
=> 키보존 테이블인 EMP의 컬럼만 갱신이 가능하며, 뷰에서 DEPTNO는 DEPT 테이블의 컬럼으
로 정의하고 있으므로 갱신이 불가능합니다.

 


2017년 51번

정답 : 4번

- 저장 프로시저(Stored Procedure), 사용자 정의 함수(Function), 트리거(Trigger) 같은 서버 기반 저장 오브젝트(Object)에 대한 설명임

 


2018년 63번

정답 : 4번

삽입 시 STUDENT 테이블 기본키(PK) 컬럼인 SNO가 빠져 있으므로 데이터를 삽입할 수 없음

 


2019년 53번

정답 : 3번

표준SQL에서 뷰는 UNION등 일부 구문 외 집계함수, 조인 등 일반 SELECT검색문처럼 구문에 대한 제약사항 없이 구현이 가능함

 


2021년 55번

정답 : 2번

가. 뷰 생성시 WITH CHECK OPTION을 사용하면, 해당 뷰에 대한 투플의 삽입/갱신이 거부될 수 있음 (맞음)

- 뷰의 열이 상수나 산술 연산자 또는 함수가 사용된 산술 식으로 정의된 경우
- 집계 함수(COUNT, SUM, AVG, MAX, MIN 등)가 사용된 경우
- 집합 연산(UNION, UNION ALL, INTERSECT, EXCEPT/MINUS 등)이 사용된 경우
- DISTINCT, GROUP BY, HAVING이 사용된 경우
- 두 개 이상의 테이블이 연관되어 정의된 경우
- 변경할 수 없는 뷰를 기초로 정의된 경우
- 기타 순환관계 전개처리(CONNECT BY … START WITH), ROWNUM 등이 사용된 경우

 

나. 표준 SQL에서 뷰는 UNION, ORDER BY, GROUP BY 일부 구문 외 집계함수, 조인 등

일반 SELECT 검색문처럼 구문에 대한 제약사항 없이 구현이 가능함 (나 틀림)

 

다. 집계함수에 의해 생성된 뷰의 경우 일반적으로 갱신을 허용하지 않음(맞음)

 

라. 일반 뷰 생성시 CREATE VIEW 구문, 실체화 뷰 생성 시 CREATE MATERIALIZED VIEW

구문을 사용함 (라 틀림)

 


2015년 58번

정답 : 2번, 4번