8장. 뷰와 시스템 카탈로그 뷰와 시스템 카탈로그 관계 데이터베이스 시스템의 뷰(view)는 다른 릴레이션으로부터 유도된 릴레이션(derived relation)으로서 ANSI/SPARC 3단계 아키텍처의 외부 뷰와 다름 뷰는 관계 데이터베이스 시스템에서 데이터베이스의.

Slides:



Advertisements
Similar presentations
컴퓨터와 인터넷.
Advertisements

You YOungseok 데이터베이스 테이블 및 인덱스 You YOungseok.
MS-Access의 개요 1강 MOS Access 2003 CORE 학습내용 액세스 응용 프로그램은 유용한 데이터를
최윤정 Java 프로그래밍 클래스 상속 최윤정
Entity Relationship Diagram
4.2 SQL 개요 SQL 개요 SQL은 현재 DBMS 시장에서 관계 DBMS가 압도적인 우위를 차지하는데 중요한 요인의 하나
연결리스트(linked list).
제 09 장 데이터베이스와 MySQL 학기 인터넷비즈니스과 강 환수 교수.
8장 서브 쿼리.
12장 데이터 읽기 일관성과 락.
MySQL 및 Workbench 설치 데이터 베이스.
(개정판) 뇌를 자극하는 Red Hat Fedora 리눅스 서버 & 네트워크
6 장. ER-관계 사상에 의한 관계 데이터베이스 설계
11 테이블 관리와 데이터 딕셔너리 데이터베이스 응용 프로젝트 개발 테이블 구조 변경 데이터 딕셔너리.
3장. 데이터베이스 구축의 전체 과정 미리 실습하기
테이블 : 데이터베이스를 구성하는 요소로 같은 성격에 정보의 집합체. 레코드 : 하나의 정보를 가지고 있는 컬럼의 집합체
5장 Mysql 데이터베이스 한빛미디어(주).
6장 그룹 함수.
07 그룹 함수 그룹 함수의 개념 그룹 함수의 종류 데이터 그룹 생성 HAVING 절.
2장. 관계 데이터 모델과 제약조건 관계 데이터 모델은 지금까지 제안된 데이터 모델들 중에서 가장 개념이 단순한 데이터 모델의 하나 IBM 연구소의 E.F. Codd가 1970년에 관계 데이터 모델을 제안함 관계 데이터 모델을 최초로 구현한 가장 중요한 관계 DBMS 시제품은.
3.2 SQL Server 설치 및 수행(계속) 시스템 데이터베이스 master
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
4장. 관계 대수와 SQL SQL 관계 데이터 모델에서 지원되는 두 가지 정형적인 언어 어느것을 기본으로 만들것인가
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
관계 대수.
17강. 데이터 베이스 - I 데이터 베이스의 개요 Oracle 설치 기본적인 SQL문 익히기
학습목표 학습목차 다른 홈페이지의 HTML 파일 코드를 보는 방법에 대해 알아봅니다.
제7장 SQL-99: 스키마 정의, 제약조건, 질의어, 뷰
5장 Mysql 데이터베이스 한빛미디어(주).
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
1장. 데이터베이스 자료의 조직적 집합체_데이터베이스 시스템의 이해
환경 설정 예제 데이터베이스 생성 - 그림 3.34의 SQL Server 관리 스튜디오 창의 왼쪽 영역의 데이터베
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
박성진 컴퓨터 프로그래밍 기초 [09] 배열 part 1 박성진
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
View(뷰) 1 가상 테이블(Virtual Relation)
2장. 데이터베이스 관리 시스템 데이터베이스 관리 시스템의 등장 배경 데이터베이스 관리 시스템의 정의
ER-관계 사상에 의한 관계 데이터베이스 설계
Term Projects 다음에 주어진 2개중에서 한 개를 선택하여 문제를 해결하시오. 기한: 중간 보고서: 5/30 (5)
테이블 만들기 실습 목표 입력할 tableDB <실습1> SSMS에서 테이블 생성
Chapter 03. 관계 데이터베이스 설계.
8장. spss statistics 20의 데이터 변환
7장. 릴레이션 정규화 릴레이션 정규화 부주의한 데이터베이스 설계는 제어할 수 없는 데이터 중복을 야기하여 여러 가지 갱신 이상(update anomaly)을 유발함 어떻게 좋은 데이터베이스 설계를 할 것인가? 데이터베이스에 어떤 릴레이션들을 생성할 것인가? 각 릴레이션에.
데이터 베이스 DB2 관계형 데이터 모델 권준영.
CHAP 21. 전화, SMS, 주소록.
문성우 SQL 실습 Part Ⅰ 문성우.
6장. 물리적 데이터베이스 설계 물리적 데이터베이스 설계
오라클 11g 보안.
제 8 장 ER-관계 사상에 의한 관계 데이타베이스 설계
14 뷰(View) 뷰의 개념 뷰 관리.
Part 2 개념적 데이터 모델 Copyright © 2006 by Ehan Publishing Co. All rights reserved.
제 23 장 오라클에서 보안 기능.
01. 분산 파일 시스템의 개요 네트워크에 분산된 파일을 사용자가 쉽게 접근하고 관리할 수 있게 해준다.
Chapter 10 데이터 검색1.
멀티미디어시스템 제 5 장. 멀티미디어 데이터베이스 개념 IT응용시스템공학과 김 형 진 교수.
서적DB개발 과제 Page 2의 ERD를 통해 구축할 서적 DB의 구조를 파악한다. (4개의 개체에 대해 확인함)
ER-관계 사상에 의한 관계데이터베이스 설계 충북대학교 구조시스템공학과 시스템공학연구실
Android -Data Base 윤수진 GyeongSang Univ. IT 1.
07. DB 설계 명지대학교 ICT 융합대학 김정호.
9장. spss statistics 20의 데이터 변수계산
ER-관계 사상에 의한 관계 데이터베이스 설계
14 뷰(View) 뷰의 개념 뷰 관리.
 6장. SQL 쿼리.
                              데이터베이스 설계 및 실습 #6 - SQL 실습 한국외국어대학교 DaPS 연구실                              
임시테이블과 테이블변수 SQLWorld Study Group - 최명환 -.
11장. 보안과 권한 관리 보안 권한 관리. 11장. 보안과 권한 관리 보안 권한 관리.
7 생성자 함수.
6 객체.
교과서 78쪽 학습 목표 정보 관리의 필요성을 이해할 수 있다. 데이터베이스의 개념과 필요성을 이해할 수 있다.
Presentation transcript:

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

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

8.1 뷰(계속) 뷰의 개요(계속) 이에 반해서 어느 시점에 SELECT문의 결과를 기본 릴레이션의 형태로 저장해 놓은 것을 스냅샷(snapshot)이라고 부름 스냅샷은 사진을 찍은 것과 같아서 스냅샷을 정의하는 시점의 기본 릴레이션의 내용이 스냅샷에 반영됨 어떤 시점의 조직체의 현황, 예를 들어 몇년 몇월 시점에 근무하던 사원들의 정보, 재고 정보 등이 스냅샷으로 정의될 수 있음 8장. 뷰와 시스템 카탈로그

8.1 뷰(계속) 8장. 뷰와 시스템 카탈로그

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

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

8.1 뷰(계속) 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장. 뷰와 시스템 카탈로그

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

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

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

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

8.1 뷰(계속) 뷰의 장점(계속) 뷰는 데이터 독립성을 제공함(계속) 8장. 뷰와 시스템 카탈로그

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

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

8.1 뷰(계속) 뷰의 갱신 뷰에 대한 검색이 기본 릴레이션에 대한 검색으로 변환되듯이 뷰에 대한 갱신도 기본 릴레이션에 대한 갱신으로 변환됨 아래의 갱신들이 성공적으로 수행될 수 있는가? 갱신 1: 한 릴레이션 위에서 정의된 뷰에 대한 갱신 8장. 뷰와 시스템 카탈로그

8.1 뷰(계속) 뷰의 갱신(계속) 갱신 2: 두 개의 릴레이션 위에서 정의된 뷰에 대한 갱신 8장. 뷰와 시스템 카탈로그

8.1 뷰(계속) 뷰의 갱신(계속) 갱신 3: 집단 함수 등을 포함한 뷰에 대한 갱신 8장. 뷰와 시스템 카탈로그

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

8.1 뷰(계속) 8장. 뷰와 시스템 카탈로그

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

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

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

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

8.2 관계 DBMS의 시스템 카탈로그(계속) 질의 최적화 사용자가 질의 최적화 모듈을 깊이 있게 이해할 필요는 없지만 질의 최적화 모듈이 정확한 수행 방법을 결정하기 위해서는 릴레이션에 관한 다양한 통계 정보가 정확하게 유지돼야 한다는 것을 알고 있는 것이 바람직 8장. 뷰와 시스템 카탈로그

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

8.2 관계 DBMS의 시스템 카탈로그(계속) 8장. 뷰와 시스템 카탈로그

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'; 8장. 뷰와 시스템 카탈로그

8.2 관계 DBMS의 시스템 카탈로그(계속) 시스템 카탈로그에 유지되는 통계 정보 릴레이션마다 릴레이션의 크기(블록 수) 투플의 크기, 투플 수, 각 블록의 채우기 비율, 블록킹 인수, 릴레이션의 크기(블록 수) 뷰마다 뷰의 이름과 정의 애트리뷰트마다 애트리뷰트의 데이터 타입과 크기, 애트리뷰트 내의 상이한 값들의 수, 애트리뷰트 값의 범위, 선택율 (조건을 만족하는 투플 수/전체 투플 수) 8장. 뷰와 시스템 카탈로그

8.2 관계 DBMS의 시스템 카탈로그(계속) 시스템 카탈로그에 유지되는 통계 정보(계속) 사용자마다 인덱스마다 접근할 수 있는 릴레이션과 권한 인덱스마다 인덱스된 애트리뷰트(키 애트리뷰트 또는 비 키 애트리뷰트), 클러스터링 인덱스/비 클러스터링 인덱스 여부, 밀집/희소 인덱스 여부, 인덱스의 높이, 1단계 인덱스의 블록 수 8장. 뷰와 시스템 카탈로그

8.3 SQL Server의 시스템 카탈로그 MS SQL Server의 시스템 카탈로그 통계 정보는 UPDATE STATISTICS문을 사용하여 수동으로 갱신할 수 있음 SQL Server는 릴레이션의 데이터가 변경될 때 주기적으로 통계 정보를 자동으로 갱신함 통계 정보를 갱신할 필요성이 있는가를 확인하기 위해서 샘플링 방법을 사용함 통계 정보가 갱신되는 빈도는 애트리뷰트 또는 인덱스의 크기와 변경되는 데이터의 양에 따라 결정됨 모든 릴레이션들에 대한 구성을 정의하는 데이터를 시스템 테이블이라고 부르는 특수한 테이블 집합에 저장함 사용자나 응용 프로그램이 정보 스키마 뷰, Transact-SQL문 및 함수, 시스템 저장 프로시저 등을 사용하여 시스템 테이블에 저장된 정보를 검색함 8장. 뷰와 시스템 카탈로그

8.3 SQL Server의 시스템 카탈로그(계속) 8장. 뷰와 시스템 카탈로그

8.3 SQL Server의 시스템 카탈로그(계속) 8장. 뷰와 시스템 카탈로그

8.3 SQL Server의 시스템 카탈로그(계속) 8장. 뷰와 시스템 카탈로그

8.3 SQL Server의 시스템 카탈로그(계속) 시스템 테이블을 사용하여 사용자 KIM'이 소유한 개체들을 찾기 위해서 쿼리 분석기의 편집기 창에서 다음과 같은 질의를 수행 OWNER는 개체를 소유한 사용자의 식별자이고, NAME은 개체의 이름을 나타낸다. xtype은 개체의 유형으로서, C는 CHECK 제약 조건, D는 디폴트값 제약조건, F는 외래 키 제약조건, PK는 기본 키 제약조건, U는 사용자 릴레이션, UQ는 UNIQUE 제약조건, V는 뷰를 나타냄 8장. 뷰와 시스템 카탈로그

8.3 SQL Server의 시스템 카탈로그(계속) 8장. 뷰와 시스템 카탈로그

8.3 SQL Server의 시스템 카탈로그(계속) INFORMATION_SCHEMA를 사용하여 사용자 KIM이 소유한 릴레이션이나 뷰에 관한 정보를 검색하기 위해서 다음과 같은 질의를 수행 TABLE_CATALOG는 데이터베이스의 이름, TABLE_SCHEMA는 릴레이션이나 뷰를 소유한 사용자의 식별자이고, TABLE_NAME은 릴레이션이나 뷰의 이름을 나타낸다. TABLE_TYPE은 릴레이션의 유형으로서 BASE TABLE 또는 VIEW가 될 수 있음 8장. 뷰와 시스템 카탈로그

8.3 SQL Server의 시스템 카탈로그(계속) 8장. 뷰와 시스템 카탈로그

8.3 SQL Server의 시스템 카탈로그(계속) INFORMATION_SCHEMA를 사용하여 사용자 KIM이 소유한 EMPLOYEE 릴레이션의 애트리뷰트 정보를 찾기 위해서 다음과 같은 질의를 수행 COLUMN_NAME은 애트리뷰트의 이름, ORDINAL_POSITION은 애트리뷰트의 번호(ID), DATA_TYPE은 데이터 타입, COLUMN_DEFAULT는 애트리뷰트의 디폴트 값을 나타냄 8장. 뷰와 시스템 카탈로그

8.3 SQL Server의 시스템 카탈로그(계속) 8장. 뷰와 시스템 카탈로그

8.3 SQL Server의 시스템 카탈로그(계속) 예제 3.1에서 생성한 EMP_PLANNING 뷰가 어떤 SELECT문으로 정의되어 있는가를 알기 위해서 아래와 같이 시스템 저장 프로시저를 수행 sp_helptext EMP_PLANNING; 8장. 뷰와 시스템 카탈로그

8.3 SQL Server의 시스템 카탈로그(계속) 8장. 뷰와 시스템 카탈로그

8.3 SQL Server의 시스템 카탈로그(계속) 두 릴레이션의 조인 뷰에 대한 INSERT문 수행 8장. 뷰와 시스템 카탈로그

8.3 SQL Server의 시스템 카탈로그(계속) 8장. 뷰와 시스템 카탈로그

8.3 SQL Server의 시스템 카탈로그(계속) EMPLOYEE 릴레이션이 사용하는 디스크 공간 정보를 알아보기 위해서 시스템 저장 프로시저를 수행 sp_spaceused EMPLOYEE; name은 릴레이션의 이름, rows는 투플의 수, reserved는 예약된 총 공간, data는 실제로 사용되는 공간, index_size는 인덱스가 사용하는 공간, unused는 사용되지 않은 공간을 나타냄 8장. 뷰와 시스템 카탈로그

8.3 SQL Server의 시스템 카탈로그(계속) 8장. 뷰와 시스템 카탈로그

8.3 SQL Server의 시스템 카탈로그(계속) EMPLOYEE 릴레이션의 부서번호 애트리뷰트인 DNO에 대해 인덱스를 생성하고, 생성된 인덱스를 통해서 통계 정보를 확인 CREATE INDEX EMPDNO_IDX ON EMPLOYEE(DNO); DBCC SHOW_STATISTICS(EMPLOYEE, EMPDNO_IDX); Updated는 통계가 마지막으로 갱신된 날짜와 시간, Rows는 릴레이션의 투플 수, RANGE_HI_KEY는 DNO 애트리뷰트에 나타나는 상이한 값들, EQ_ROWS는 DNO 값이 1인 투플이 2개, 2인 투플이 3개, 3인 투플이 2개 있음을 나타냄 8장. 뷰와 시스템 카탈로그

8.3 SQL Server의 시스템 카탈로그(계속) 8장. 뷰와 시스템 카탈로그

8.3 SQL Server의 시스템 카탈로그(계속) EMPLOYEE 릴레이션에 새로운 투플을 한 개 삽입 투플을 한 개 입력한 후에 다시 통계 정보를 아래와 같이 확인해보면 그림 8.13은 그림 8.12와 동일함을 알 수 있음 DBCC SHOW_STATISTICS(EMPLOYEE, EMPDNO_IDX); 8장. 뷰와 시스템 카탈로그

8.3 SQL Server의 시스템 카탈로그(계속) 8장. 뷰와 시스템 카탈로그

8.3 SQL Server의 시스템 카탈로그(계속) 새로 입력한 투플이 통계 정보에 반영되도록 UPDATE STATISTICS 명령을 수행한 후에 통계 정보를 확인 UPDATE STATISTICS EMPLOYEE(EMPDNO_IDX); DBCC SHOW_STATISTICS(EMPLOYEE, EMPDNO_IDX); 8장. 뷰와 시스템 카탈로그

8.3 SQL Server의 시스템 카탈로그(계속) 8장. 뷰와 시스템 카탈로그

8.3 SQL Server의 시스템 카탈로그(계속) 릴레이션에 정의된 인덱스에 관한 정보를 검색하려면 sp_helpindex를 실행 sp_helpindex EMPLOYEE; index_name은 인덱스의 이름, index_description은 인덱스에 관한 설명, index_keys는 인덱스가 정의된 애트리뷰트를 나타냄 예제 3.1절에서 EMPLOYEE 릴레이션을 정의할 때 EMPNO 애트리뷰트를 기본 키로 선정했으므로 SQL Server가 자동적으로 클러스터링 인덱스를 생성됨 EMPNAME 애트리뷰트에는 UNIQUE 키워드를 명시했으므로 비 클러스터링이면서 고유한 인덱스가 자동적으로 생성됨 DNO 애트리뷰트에 대해서는 CREATE INDEX문을 사용하여 사용자가 명시적으로 인덱스를 정의하였음 8장. 뷰와 시스템 카탈로그

8.3 SQL Server의 시스템 카탈로그(계속) 8장. 뷰와 시스템 카탈로그