슬라이드 제목 없음

Save this PDF as:
 WORD  PNG  TXT  JPG

Size: px
Start display at page:

Download "슬라이드 제목 없음"

Transcription

1

2 뷰와시스템카탈로그 관계데이터베이스시스템의뷰 (view) 는다른릴레이션으로부터유도된릴레이션 (derived relation) 으로서 ANSI/SPARC 3단계아키텍처의외부뷰와다름 뷰는관계데이터베이스시스템에서데이터베이스의보안메카니즘으로서, 복잡한질의를간단하게표현하는수단으로서, 데이터독립성을높이기위해서사용됨 시스템카탈로그는시스템내의객체 ( 기본릴레이션, 뷰, 인덱스, 사용자, 접근권한등 ) 에관한정보를포함 시스템카탈로그를적절히활용하면원하는릴레이션을데이터베이스에서찾고, 그릴레이션에어떤애트리뷰트들이들어있으며, 각애트리뷰트의데이터타입은무엇인가등을쉽게파악할수있음 2

3 8.1 뷰 뷰의개요 ANSI/SPARC 3단계아키텍처에서외부뷰는특정사용자가보는데이터베이스의구조 관계데이터베이스에서의뷰는한사용자의전체외부뷰대신에하나의가상릴레이션 (virtual relation) 을의미 뷰는기존의기본릴레이션 (base relation. 실제릴레이션 ) 에대한 SELECT문의형태로정의됨 사용자는여러개의릴레이션과뷰를사용할수있음 뷰는릴레이션으로부터데이터를검색하거나갱신할수있는동적인창 (dynamic window) 의역할 3

4 8.1 뷰 ( 계속 ) 4

5 8.1 뷰 ( 계속 ) 뷰의정의 뷰를정의하는 SQL 문의구문 CREATE VIEW 뷰이름 [( 애트리뷰트 ( 들 ))] AS SELECT 문 [WITH CHECK OPTION]; 뷰의이름다음에애트리뷰트들을생략하면뷰를정의하는데사용된 SELECT 문의 SELECT 절에열거된애트리뷰트들의이름과동일한 애트리뷰트들이뷰에포함됨 뷰를정의하는 SELECT 절에산술식또는집단함수에사용된애트리뷰트가 있는경우, 뷰의정의에조인이포함되어있고두개이상의다른 릴레이션으로부터가져온애트리뷰트들의이름이같아서뷰에서두개 이상의애트리뷰트의이름이같게되는경우에는뷰를정의할때모든 애트리뷰트들의이름을지정해야함 5

6 8.1 뷰 ( 계속 ) 예 : 한릴레이션위에서뷰를정의그림 4.8의 EMPLOYEE 릴레이션에대해서 3번부서에근무하는사원들의사원번호, 사원이름, 직책으로이루어진뷰 를정의해보자. 아래의뷰의정의에는뷰의애트리뷰트들을별도로명시했기때문에뷰에는 EMPNO, EMPNAME, TITLE의세애트리뷰트가포함됨 CREATE VIEW EMP_DNO3 (ENO, ENAME, TITLE) AS SELECT EMPNO, EMPNAME, TITLE FROM EMPLOYEE WHERE DNO=3; 6

7 8.1 뷰 ( 계속 ) 7

8 8.1 뷰 ( 계속 ) 예 : 두릴레이션위에서뷰를정의그림 4.8의 EMPLOYEE 와 DEPARTMENT 릴레이션에대해서 기획부에근무하는사원들의이름, 직책, 급여로이루어진뷰 를정의해보자. 아래의뷰의정의에는뷰의애트리뷰트들을별도로명시하지않았기때문에뷰에속하는애트리뷰트들의이름은기본릴레이션의애트리뷰트들의이름과같다. 즉뷰에는 EMPNAME, TITLE, SALARY의세애트리뷰트가포함된다. CREATE VIEW EMP_PLANNING AS SELECT E.EMPNAME, E.TITLE, E.SALARY FROM EMPLOYEE E, DEPARTMENT D WHERE E.DNO=D.DEPTNO AND D.DEPTNAME = 기획 ; 8

9 8.1 뷰 ( 계속 ) 뷰를사용하여데이터를접근할때관계 DBMS 에서거치는과정 시스템카탈로그로부터뷰의정의, 즉 SELECT문을검색 기본릴레이션에대한뷰의접근권한을검사 뷰에대한질의를기본릴레이션에대한동등한질의로변환 9

10 뷰의장점 8.1 뷰 ( 계속 ) 뷰는복잡한질의를간단하게표현할수있게함 기획부에근무하는사원들중에서직책이부장인사원의사원이름과급여를검색하는질의를기본릴레이션을사용하여표현하면아래와같이다소복잡한형태의질의가됨 뷰에대해서같은결과를검색하는질의를표현하면 10

11 뷰의장점 ( 계속 ) 8.1 뷰 ( 계속 ) 뷰는데이터무결성을보장하는데활용됨 기본적으로뷰를통해투플을추가하거나수정할때투플이뷰를정의하는 SELECT문의 WHERE절의기준에맞지않으면뷰의내용에서사라짐 이뷰의정의할때 WITH CHECK OPTION 을명시했다고가정 11

12 뷰의장점 ( 계속 ) 8.1 뷰 ( 계속 ) 뷰는데이터독립성을제공함 뷰는데이터베이스의구조가바뀌어도기존의질의 ( 응용프로그램 ) 를다시작성할필요성을줄이는데사용될수있음 예 : 응용의요구사항이변경되어기존의 EMPLOYEE 릴레이션이두개의릴레이션 EMP1(EMPNO, EMPNAME, SALARY) 과 EMP2(EMPNO, TITLE, MANAGER, DNO) 로분해되었다고가정하자. 응용프로그램에서기존의 EMPLOYEE 릴레이션을접근하던 SELECT문은더이상수행되지않으므로, EMP1과 EMP2에대한 SELECT문으로변경해야한다. 아래와같이 EMPLOEE 라는뷰를정의했다면응용프로그램에서 EMPLOYEE 릴레이션을접근하던 SELECT문은계속해서수행될수있음 12

13 뷰의장점 ( 계속 ) 8.1 뷰 ( 계속 ) 뷰는데이터독립성을제공함 ( 계속 ) 13

14 뷰의장점 ( 계속 ) 8.1 뷰 ( 계속 ) 뷰는데이터보안기능을제공함 뷰는뷰의원본이되는기본릴레이션에직접접근할수있는권한을부여하지않고뷰를통해데이터를접근하도록하기때문에보안메커니즘으로사용할수있음 뷰는일반적으로기본릴레이션의일부애트리뷰트들또는일부투플들을검색하는 SELECT문으로정의되므로뷰를통해서기본릴레이션을접근하면기본릴레이션의일부만검색할수있음 예 : EMPLOYEE 릴레이션의 SALARY 애트리뷰트는숨기고나머지애트리뷰트들은모든사용자가접근할수있도록하려면 SALARY 애트리뷰트를제외하고 EMPLOYEE 릴레이션의모든애트리뷰트를포함하는뷰를정의하고, 사용자에게뷰에대한 SELECT 권한을허가 14

15 뷰의장점 ( 계속 ) 8.1 뷰 ( 계속 ) 동일한데이터에대한여러가지뷰를제공함 뷰는사용자들의그룹이각자특정한기준에따라데이터를접근하도록함 15

16 뷰의갱신 8.1 뷰 ( 계속 ) 뷰에대한갱신도기본릴레이션에대한갱신으로변환됨 아래의갱신들이성공적으로수행될수있는가? 갱신 1: 한릴레이션위에서정의된뷰에대한갱신 16

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

18 뷰의갱신 ( 계속 ) 8.1 뷰 ( 계속 ) 갱신 3: 집단함수등을포함한뷰에대한갱신 18

19 갱신이불가능한뷰 8.1 뷰 ( 계속 ) 한릴레이션위에서정의되었으나그릴레이션의기본키가포함되지않은뷰 기본릴레이션의애트리뷰트들중에서뷰에포함되지않은애트리뷰트에대해 NOT NULL이지정되어있을때 집단함수가포함된뷰 조인으로정의된뷰 19

20 8.2 관계 DBMS 의시스템카탈로그 시스템카탈로그 시스템카탈로그는데이터베이스의객체 ( 사용자, 릴레이션, 뷰, 인덱스, 권한등 ) 와구조들에관한모든데이터를포함 시스템카탈로그를메타데이터라고함. 메타데이터는데이터에관한데이터라는의미 시스템카탈로그는사용자및질의최적화모듈등 DBMS 자신의구성요소에의해서사용됨 시스템카탈로그는관계 DBMS 마다표준화되어있지않아서관계 DBMS마다서로다른형태로시스템카탈로그기능을제공함 시스템카탈로그는데이터사전 (data dictionary) 또는시스템테이블이라고도부름 20

21 8.2 관계 DBMS 의시스템카탈로그 ( 계속 ) 시스템카탈로그가질의처리에어떻게활용되는가 SELECT문이문법적으로정확한가를검사함 SELECT 문에서참조하는 EMPLOYEE 릴레이션이데이터베이스에존재하는가를검사함 EMPLOYEE 릴레이션에 SELECT절에열거된애트리뷰트와 WHERE절에서조건에사용된애트리뷰트가존재하는가를확인함 SALARY 애트리뷰트가수식에사용되었으므로이애트리뷰트의데이터타입이숫자형 ( 정수형이나실수형 ) 인가를검사하고, TITLE이문자열과비교되었으므로이애트리뷰트의데이터타입이문자형 (CHAR(n) 또는 VARCHAR(n) 등 ) 인가등을검사함 21

22 8.2 관계 DBMS 의시스템카탈로그 ( 계속 ) 시스템카탈로그가질의처리에어떻게활용되는가 ( 계속 ) 이질의를입력한사용자가 EMPLOYEE 릴레이션의 EMPNAME, SALARY 애트리뷰트를검색할수있는권한이있는가를확인함 TITLE 애트리뷰트와 DNO 애트리뷰트에인덱스가정의되어있는지확인함 두애트리뷰트에각각인덱스가존재한다고가정하자. DBMS가두인덱스중에서조건을만족하는투플수가적은것을선택하기위해서는관계데이터베이스시스템에데이터베이스외에추가로정보를유지해야함 한릴레이션의전체투플수와그릴레이션에정의된각인덱스에존재하는상이한값들의개수를유지한다면어느인덱스를사용하는것이유리한가를예상할수있음 22

23 8.2 관계 DBMS 의시스템카탈로그 ( 계속 ) 시스템카탈로그가질의처리에어떻게활용되는가 ( 계속 ) 그림 4.8에서 EMPLOYEE 릴레이션의전체투플수는 7이고, TITLE 애트리뷰트에는사원, 대리, 과장, 부장, 사장의다섯가지값들이존재함 DNO 애트리뷰트에는 1, 2, 3의세가지값들이존재함 따라서 TITLE 애트리뷰트에정의된인덱스가 DNO에정의된인덱스보다대상투플들을더좁혀주므로유리함 23

24 8.2 관계 DBMS 의시스템카탈로그 ( 계속 ) 관계 DBMS 의시스템카탈로그 사용자릴레이션과마찬가지형태로저장되기때문에사용자릴레이션에적용되는회복기법과동시성제어기법을동일하게사용할수있음 시스템카탈로그는사용자릴레이션처럼 SELECT문을사용하여내용을검색할수있음 시스템카탈로그에는릴레이션, 애트리뷰트, 인덱스, 사용자, 권한등각유형마다별도의릴레이션이유지됨 EMPLOYEE 릴레이션과 DEPARTMENT 릴레이션에대해서시스템카탈로그에어떤정보들이유지되는가를이해하기쉽도록시스템카탈로그를매우단순화하여설명함 릴레이션에관한정보를유지하는릴레이션의이름이 SYS_RELATION, 애트리뷰트에관한정보를유지하는릴레이션의이름이 SYS_ATTRIBUTE 라고가정 24

25 8.2 관계 DBMS 의시스템카탈로그 ( 계속 ) 25

26 8.2 관계 DBMS 의시스템카탈로그 ( 계속 ) 시스템카탈로그의갱신 어떤사용자도시스템카탈로그를직접갱신할수없음 즉 DELETE, UPDATE 또는 INSERT문을사용하여시스템카탈로그를변경할수없음 EMPLOYEE 릴레이션의소유자인 KIM 이 EMPLOYEE 릴레이션에서 MANAGER 애트리뷰트를삭제하기위해서 ALTER TABLE EMPLOYEE DROP COLUMN MANAGER; 라고하는대신에아래와같이시스템카탈로그에대해 DELETE문을사용하면 DBMS가거절함 DELETE FROM SYS_ATTRIBUTE WHERE AttRelId = 'EMPLOYEE' AND AttName = 'MANAGER'; 26