[DB] 데이터베이스 뷰(View)의 속성, 특징, 장단점, 갱신 가능성

728x90
반응형

SQL에서의 관계형 뷰(View)

관계형 뷰(Relational Views): A view is single virtual table that is derived from other tables

 

Views는 대부분 read-only : 보는 것에 목적이 있다.

내가 볼 수 있는 형태의 view로 재생산

from Base Tables or other (previously defined) views => SQL Views 생성해서 보여줌.

 


Relational Views in SQL

 

1) view의 속성

• 테이블은 physical하게 디스크에 존재하는 파일들이다. 테이블 당 각각 파일.

• view는 가상. 순간적으로 즉석에서 만든 것. 테이블에서 긁어와서 보여주고, user가 나가면 사라짐.

• base table에서만 original 정보가 있고, 그걸 가져와서 보여주기만 하는것.

• 볼 수만 있음. 수정 불가능 (참조무결성 때문)

• 고객에게 제공하고 유령처럼 사라짐.

• 꼭 Base Table이 아니라 다른 view들로부터도 상위 view를 만들 수 있음.

• 그렇게 만들 수 있도록 미리 허락을 받아놓는 것이 CREATE VIEW

 

2) 특징

• One or more source tables make up a view

• Query follows “SELECT STATEMENT” format

 - The view attribute names can be inherited from the attribute names of the tables in the defining query: 속성 상속 or 속성 나열(DEPT_INFO)

• Views generally read-only

• Views don’t require additional storage

 

3) 뷰 장점

 논리적 독립성 제공

 데이터 접근 제어로 보안성 제공

 뷰로 SQL문을 간단하게 함.

 여러 사용자의 상이한 응용이나 요구 지원

 

4) 뷰 단점

 뷰 정의를 변경할 수 없음(DBMS에 따라 허용하는 경우도 있음)

 삽입, 삭제, 갱신 연산에 많은 제한을 가짐. (이론적으로 변경이 가능한 경우라도 실제로는 변경이 허용되지 않는 경우가 있음.)

 

 

[질의] There are no limitations on querying a view

• view는 JOIN이 안되고, SELECTION만 수행 ➡️ 훨씬 싸고 편함.

• 빈도수가 많은 질의들을 단순화할 수 있음

• 근원 테이블이 갱신되면, 파생 view를 최신으로 바꿔줘야 함

• 그렇기 때문에 view는 definition 때 구성되지 않고, 그 view에 대한 질의가 명시되는 시점에서야 구성된다.

 

[갱신] A view does not necessarily exist in physical form, which limits the possible update operations that can be applied to views. (물리적 실체로 존재X. 갱신X)

 

 

* View 삭제

뷰를 없애고 싶을 때: DROP VIEW 사용

• 뷰는 보안/권한 문제가 중요할 때 사용된다.

 


 

View 구현

• 뷰는 데이터의 신선도를 위해서, 질의를 줬을 때 즉석으로 갖다 준다.

• 질의를 위한 view의 효율적 구현 전략

 

전략1) Query modification approach (질의 변환 전략)

- 생성 시) 필요한 때, 요구된 형태로 뷰 테이블을 가상으로 만든다.

물리적 형태로 뷰 내용 저장X

- 질의 시) 뷰 테이블에 대한 질의가 들어오면, 이 질의를 기반이 된 Base Table에 대한 질의로 변환함.

modification은 DBMS가 해줌.

Base table에 대한 쿼리를 가져와야 오리지널 쿼리를 base table에 대한 쿼리로 변환함.

- 단점) 변환 수행될 질의의 원래 형태가 매우 복잡해서 수행시간이 많이 드는 질의라면,    뷰에 대한 질의는 비효율적일 것임. (시간 오래 걸릴 수 O)

 

전략2) View materialization (뷰를 물리적 Table로 만드는 전략)

- 생성 시) 초기 VT 생성 시, 가상이 아닌 물리적 T로 생성한다. (하드디스크에 저장됨)

- 질의 시) 이후 따르는 질의도 본 T에서 계속 수용한다. 

연이은 질의가 나온다는 확신이 있을 때, 그렇다고 가정, 민감한 정보 아닐 때, 잘 안 바뀌는 정보일 때 

- 갱신 시) 만약, Base T이 수정된다면, View T도 따라서 수정

base가 연결되어 있으니까 base가 바뀌면 View도 바뀜

- Incremental update strategy for materialized views

: DBMS는 추후 연속될 갱신들에 대해 유지 책임을 져야 한다. 

만들어진 물리적 파일에 대해 유지 책임을 가져야 함. base table까지 연관시켜서.

 

 

 

* 뷰 물리화 처리 방안들

1) immediate update strategy(즉각, 항상)

: 갱신이 들어올 때마다 즉각적으로 수정. 항상 바꿈. 쿼리의 빈도수가 낮을 때. 

2) lazy update strategy(지연, 필요시)

: 모았다가, 로그가 다 차면 한꺼번에 묶어서 처리 (일정한 양이 되면 한번에 수정)

3) periodic update strategy(주기적, 정기적)

: 특정 시간이 지난 이후에 한번에 수정

 

 

 


 

View 갱신하기

 

희망사항: view의 갱신이 base table의 갱신으로 연결되었으면 좋겠다!

뷰 쿼리와 데이터베이스 사이에 매핑

 

▶ 사용자 의도에서 벗어나지만, 특정한 목적에 의해서는 허락해줄 수 있다.

하지만 DEPT_INFO view의 TOTAL_SAL 속성을 갱신하는 등 어떤 뷰 갱신은 의미 없다.(base에 영향 X)

평균이나 합계 등을 조작하는 건 허용하지 않음. MODIFY 쿼리 불가

뷰에 대한 쿼리는 언제나 다 해주는 게 아니라 할 수 있는 것만 해준다.

 

• View involving JOINs: 때로는 사용자가 의도한 갱신이 불가능할 때도 있다.

- 뷰와 베이스, 뷰와 뷰를 조인, 조인된 값을 변경하려고 할 때 안 될 수 있음.

 

 

 

<갱신이 가능한 뷰>

1) 하나의 베이스 테이블로부터 select 및 project 연산을 통해 정의된 뷰이어야 함.

2) 뷰 내의 한 속성이 베이스 테이블의 기본키 속성을 포함해야 함.

 

 

<⭐️갱신이 불가능한 뷰⭐️>

- 기본키를 가지는 뷰에 대해서는 갱신 불가능 (참조무결성 제약조건 위반)

- 뷰의 속성이 상수, 내장 함수, 연산식, 집단화 함수로부터 유도된 경우

- 뷰를 정의할 때 GROUP BY 구문을 포함해서 생성된 뷰

- 뷰를 정의할 때 FROM 구문에 여러 개의 테이블이 명시된 조인 뷰

- 갱신이 불가능한 뷰로부터 유도된 뷰

 

 

 

WITH CHECK OPTION 절

- view를 유지하는 동안, 갱신된 튜플들을 base table과 같게 유지하기 원한다면, View definition 마지막에 WITH CHECK OPTION 옵션을 쓰면 된다.

- 뷰 테이블을 업데이트하려고 할 때

- 베이스 테이블까지 업데이트하고 싶을 때

 

 

 

* Views as authorization mechanism

• SQL query 권한 부여 문장인 GRANT(허락하는 명령어)와 REVOKE(허락했던 사실을 철회)를 사용함.

  ex) Grant SELECT on V to B: View에 대한 SELECT를 B에게 허가함.

• View들은 권한이 없는 사용자들이 특정한 속성이나 튜플에 접근할 수 없도록, 정보를 감추는 목적으로 사용될 수 있다.

 


마무리

정보감리사 2022년 기출문제

728x90
반응형