데이터베이스(12), 뷰와 시스템 카탈로그

2023. 1. 31. 18:44강의 내용 정리/데이터베이스

728x90
반응형

뷰와 시스템 카탈로그

1. 뷰

1) 뷰의 개념

뷰는 기존 릴레이션(실제 릴레이션)에 대한 SELECT 문으로 정의된다.

동적인 창의 의미는 시간에 따라 달라지는 것을 볼 수 있다는 것을 의미한다.

어느 시점에 실제 릴레이션을 select해서 뷰를 사용한다.

 

뷰 3은 기본 릴레이션2와 3을 사용했다. 즉, 여러 릴레이션을 가지고 정의할 수 있다. 뷰 또한 다른 뷰를 정의할 때 사용될 수 있다.

with check option은 선택적으로 올 수 있다. 두 개의 릴레이션을 조인할 때 이름이 동일하면 이를 명시해야한다.

 

예시 1

예시 2

뷰를 질의에서 사용하면 뷰의 접근 권한을 검사한 뒤, 기본 릴레이션에 대한 동등한 질의로 변환한다.

 

 

2) 뷰의 장점

(1) 복잡한 질의를 간단하게 표현 가능

 

(2) 데이터의 무결성 보장

뷰를 통해 갱신할 때 맞지 않으면 뷰의 내용에서 사라진다.

 

(3) 데이터의 독립성 제공

릴레이션이 바뀌더라도 응용프로그램에서 릴레이션에 접근하던 쿼리문을 수정할 필요가 없게 된다. -> 독립성 보장

 

(4) 데이터 보안 기능 제공

보여지는 부분만 설정할 수 있어 데이터 보안을 강화할 수 있다.

 

(5) 동일한 데이터에 대해 여러 뷰를 제공

 

3) 뷰의 갱신

(1) 한 릴레이션 위에서 정의된 뷰에 대한 갱신

뷰에 대한 갱신도 기본 릴레이션에 대한 갱신으로 변환된다.

한 릴레이션 위에서 정의된 뷰에 대한 갱신문인 경우에는 나머지 어트리뷰트에는 null값이 들어가게 되어서 성공적으로 삽입할 수 있다. 즉, 뷰를 갱신하면 릴레이션이 갱신된다.

 

(2) 두 개의 릴레이션 위에서 정의된 뷰에 대한 갱신

하지만 두 개의 릴레이션 위에서 정의된 뷰에 대해 갱신이 안된다. 정확히 두 릴레이션이 대응되는 경우에는 갱신을 허용하는 경우도 있지만 기본키가 널인 경우에는 엔티티 무결성 제약조건에 의해 삽입을 거절한다.

 

(3) 집단 함수 등을 포함한 뷰에 대한 갱신

평균값을 삽입하거나 업데이트 문은 논리적으로 타당하지 않기에 수행을 거절한다. 


 

2. 시스템 카탈로그

1) 시스템 카탈로그란?

표준이 없다. 

 

2) 시스템 카탈로그의 쓰임새

 

문법적으로 올바른지, 데이터베이스에 릴레이션이 존재하는지, 어트리뷰트가 존재하는지, 데이터 타입 검사, 권한 검사, 인덱스 확인 등등에 대해 검사한다.

 

한 릴레이션의 전체 투플 수와 그 릴레이션에 정의된 각 인덱스에 존재하는 상이한 값들의 개수를 유지한다면 어느 인덱스를 사용하는 것이 유리한지 알 수 있다. 예시를 보면 이해가 된다.

DNO보다 TITLE로 검색하는게 대상 튜플을 더 줄일 수 있기에 이를 사용한다.

 

(1) 질의 최적화

질의 최적화를 위해 시스템 카탈로그를 유지한다.

 

 

3) 시스템 카탈로그의 예시

 SYS_RELATION에서는 릴레이션의 이름을 식별자로 사용하지만 일반적으로는 별도의 번호를 부여해서 식별자로 사용하는 경우가 더 많다.

릴레이션 소유자, 릴레이션 튜플 수, 릴레이션 어트리뷰트 수, 튜플 저장 시 필요한 바이트 수 등이 저장된다.

 

어트리뷰트 식별자는 이름과 어트리트 번호가 모여서 사용된다. 

어트리뷰트 오프셋은 몇번째 위치에 이게 저장되었는지를 판단할 때 사용한다. 

타입과 어트리뷰트 길이, 기본키인지 외래키인지 파악하는 내용이 있다.

 

4) 시스템 카탈로그의 갱신

직접 이를 갱신할 수 없다. 삭제하고자 한다면 ALTER를 해야하고, delete를 사용하면 DBMS가 거절한다.

 

 

5) 시스템 카탈로그에 유지되는 통계 정보

 


3. 오라클의 시스템 카탈로그

테이블 스페이스는 오라클에서 데이터를 저장하는 물리적 저장 단위이다.

 

1) 데이터 사전 뷰의 세부류

 

 

한 테이블에 튜플이 삽입되자마자 데이터 사전 뷰의 정보가 갱신되지 않는다.

 

통계정보는 ANALYZE를 사용한다. 통계 정보를 최신 상태로 유지하기 위해서 주기적으로 ANALYZE를 해야한다.

728x90
반응형