• 검색 결과가 없습니다.

• 뷰의 구현과 갱신

N/A
N/A
Protected

Academic year: 2022

Share "• 뷰의 구현과 갱신"

Copied!
10
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

SQL 뷰

• SQL에서 뷰의 개념

• SQL에서 뷰의 명시

• SQL에서 뷰의 명시

• 뷰의 구현과 갱신

(2)

• 뷰 (views)

– SQL에서는 SELECT 명령의 결과인 투플들의 집합을 뷰로 지정할 수 있음 – 즉, 뷰는 다른 테이블 (혹은 이전에 정의한 뷰)에서 유도된 단일 테이블임

– 사용자는 전체 데이타베이스 보다는 자신이 관심을 가지고 있는 일부 데이타베이 스를 뷰로 정의하여 사용하는 것이 편리함

– 뷰는 가상적인 테이블로서 기본 테이블과 같이 물리적인 형태로 저장되지는 않음

SQL에서 뷰의 개념

– 뷰는 가상적인 테이블로서 기본 테이블과 같이 물리적인 형태로 저장되지는 않음 – 뷰의 튜플들은 실제로 저장되지 않으므로 뷰에 적용할 수 있는 갱신 연산들을 제

한됨

– 그러나, 뷰에 대한 질의는 기본 테이블에 대한 질의와 동일하게 작성할 수 있음

(3)

• 뷰의 생성

– CREATE VIEW 문장을 사용하여 뷰를 생성함

– 뷰는 뷰이름, 애트리뷰트 이름 리스트, 뷰의 내용을 지정하는 질의로 구성

– 뷰의 애트리뷰트 이름은 생략할 수 있으며, 이 경우 묵시적으로 기본 테이블의 애트리뷰트 이름과 동일 하게 지정됨

(1) CREATE VIEW WORKS_ON1

AS SELECT FNAME, LNAME, PNAME, HOURS

SQL에서 뷰의 명시

AS SELECT FNAME, LNAME, PNAME, HOURS FROM EMPLOYEE, PROJECT, WORKS_ON WHERE SSN=ESSN AND PNO=PNUMBER ;

(2) CREATE VIEW DEPT_INFO ( DEPT_NAME, NO_OF_EMPS, TOTAL_SAL) AS SELECT DNAME, COUNT (*), SUM (SALARY)

FROM DEPARTMENT, EMPLOYEE WHERE DNUMBER=DNO

GROUP BY DNAME ;

– (1)에서는 뷰 WORKS_ON1을 생성할 때 뷰의 애트리뷰트 이름을 지정하지 않았음; 이 경 우 뷰의 애트리뷰트 이름은 SELECT 리스트에 나열된 것과 동일함

– (2)에서는 뷰 DEPT_INFO에 새 애트리뷰트 이름을 명시적으로 지정하였음; 여기서 새 애 트리뷰트는 SELECT 절에서 지정한 애트리뷰트와 일대일로 대응해야 함

(4)

• SQL에서 테이블 위치에는 뷰가 대신 사용될 수 있음

예) 'ProjectX'에 참여하는 모든 종업원들의 성과 이름을 구하려면 아래 예제처럼 WORKS_ON1 뷰를 이용하여 질의를 지정할 수 있다.

SELECT PNAME, FNAME, LNAME FROM WORKS_ON1

WHERE PNAME='ProjectX’ ;

SQL에서 뷰의 명시(cont.)

WHERE PNAME='ProjectX’ ;

• SQL에서 뷰를 사용하면 질의 작성이 단순해짐

– 위 질의를 기본 릴레이션을 이용하여 작성하는 경우 두 개의 조인을 사용해야 함

• 뷰의 최신성

– 뷰는 SQL 질의에서 참조될 때마다 기본 테이블을 이용하여 계산되므로 항상 최 신의 정보를 제공함

– 즉, 만약 뷰의 정의에 사용된 기본 테이블의 튜플들이 수정되어도 뷰는 자동적으 로 이들 변경 사항들을 반영함

(5)

• 뷰의 특성

– 뷰를 최신 정보로 유지시키는 것은 사용자가 아니라 DBMS의 책 임임

– 뷰는 정의할 때 튜플들로 생성되는 것이 아니라 질의에서 뷰를 지정할 때 비로소 계산되어 생성됨

예) SELECT PNAME, FNAME, LNAME FROM WORKS_ON1

SQL에서 뷰의 명시(cont.)

FROM WORKS_ON1

WHERE PNAME='ProjectX’ ;

• 뷰의 삭제

– 뷰가 더 이상 필요하지 않다면 DROP VIEW 명령으로 제거함 예) DROP VIEW WORKS_ON1 ;

DROP VIEW DEPT_INFO ;

– 뷰는 보안기법의 일종으로 사용될 수도 있음 : 사용자에게 관련

데이터만 제공함

(6)

• 뷰의 구현 방식 – 두가지

– 질의수정(query modification) 방식

• 뷰에 대한 질의를 기본 테이블들에 대한 질의로 변 환하여 처리하는 방식

• 질의 변환 시간과 노력이 문제임

– 뷰의 실체화(view materialization) 방식

• 처음 질의에서 뷰에 대한 요구가 있을 때 임시 뷰

뷰의 구현과 갱신

• 처음 질의에서 뷰에 대한 요구가 있을 때 임시 뷰 테이블을 물리적으로 생성하고, 뷰에 다른 질의들 이 이어질 것이라는 가정 하에 테이블을 생성하여 유지하는 방식

• 베이스 테이블이 변경되면 뷰도 변경해야 하므로

오버헤드가 적은 점진적 갱신(incremental update)

기법이 필요함

(7)

• 뷰의 갱신

– 하나의 기본 테이블에서 정의된 뷰의 갱신은 기본 릴레이션들에 대한 갱신으로 매핑할 수 있음

– 그러나 조인을 이용하여 정의한 뷰의 갱신은 뷰의 구현과 갱신

– 그러나 조인을 이용하여 정의한 뷰의 갱신은 모호한 문제가 발생함

예) 뷰 WORKS_ON1에서 'John Smith'의 PNAME 애트리뷰트를

'ProductX'에서 'ProductY'로 갱신하는 예

UPDATE WORKS_ON1

SET PNAME='ProductY’

WHERE LNAME='Smith' AND FNAME='John' AND PNAME='ProductX’ ;

Smith John ProductX Smith John ProductY

(8)

• 이 질의는 기본 릴레이션에 대한 갱신으로 변환하는데 모호함이 있음

방법 1 : 'John Smith'와 관련된 PROJECT의 'ProductX' 튜플을 'ProductY' 튜 플의 PNO로 갱신함 - 요구한 갱신과 가장 유사함

UPDATE WORKS_ON

SET PNO = (SELECT PNUMBER FROM PROJECT WHERE PNAME='ProductY’ ) WHERE ESSN = (SELECT SSN FROM EMPLOYEE

뷰의 구현과 갱신 (cont.)

WHERE ESSN = (SELECT SSN FROM EMPLOYEE

WHERE LNAME='Smith' AND FNAME='John’ ) AND PNO = (SELECT PNUMBER FROM PROJECT

WHERE PNAME='ProductX’ ) ;

P20 'ProductX'

123456789 P25 ProductY

ESSN PNumber PName

Pno PName

Works_on Project

P20

P25 'ProductX'

(2)

(1)

(9)

방법 2 : PROJECT 릴레이션에서 'ProductX' 튜플을 찾아 PNAME을 'ProductY'로 갱신하라.

UPDATE PROJECT

SET PNAME='ProductY’

WHERE PNAME='ProductX’ ;

• 의미없는 뷰 갱신 / 모호한 갱신

뷰의 구현과 갱신(cont.)

• 의미없는 뷰 갱신 / 모호한 갱신

– 뷰의 갱신이 무의미한 경우가 있음

– 예를 들어, DEPT_INFO의 TOTAL_SAL 애트리뷰트는 각 종업원들 봉급의 합으로 정의 되었기 때문에 이 애트리뷰트의 갱신은 타당하지 않음

예) UPDATE DEPT_INFO

SET TOTAL_SAL=100000 WHERE DNAME='Research’ ;

(10)

• 뷰의 갱신에 대한 요약

– 하나의 기본 릴레이션을 사용해서 정의된 뷰가 기본 릴레이션 의 기본 키를 포함하면, 뷰의 각 투플을 기본 릴레이션의 한 투플과 정확하게 대응하므로 뷰의 갱신이 가능함

– 일반적으로 다수의 테이블을 조인하여 정의한 뷰는 뷰의 투플 과 기본 테이블의 투플간에 대응 관계를 찾기가 어려우므로 갱신할 수 없음 (모호함 발생)

뷰의 구현과 갱신(cont.)

갱신할 수 없음 (모호함 발생)

– 그룹화와 집단함수를 사용하여 정의된 뷰도 베이스 테이블에

대한 갱신으로 매핑하는데 모호성이 있으므로 갱신할 수 없

참조

관련 문서

이번 문제는 글의 내용상 구조상 공통점을 추출할 수 있는 고등 사고 능력과 그것을 다른 상황에 확장하고 적용할 줄 , 아는 문제 해결력을 측정하는 데 그 의도가 있다 그러기

모든 제출물은 반환되지 않으므로, 주최기관에 이의를 제기할

즉 사각형 ABCD가

[r]

약품을 사용하는 것은 유물의 상태를 잘 파악해야 하며 화학적인 방법은 물리적인 방법보다 오 히려 유물에 손상을 줄 수 있는 우려가 있으므로 유물의 상태를

실험 방법은 기존 지도와 신규 지도에 포함된 객체를 비교하여 갱신 객체 를 추출하여 갱신 유형별로 갱신 객체를 분류한 후 갱신 유형별 파일을 생성하였다...

예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가 지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.. 본

[r]