자료출처: MS SQL 기반 데이터베이스 배움터 (생능출판사) http://www.yes24.com/Product/Goods/7489842
데이터베이스 배움터 - YES24
이론과 실무가 조화된 최적의 데이터베이스 책데이터베이스를 제대로 활용하는 데 반드시 필요한 데이터베이스의 기본적인 개념 및 이론을 이해하기 쉽게 설명한 책이다. 이와 함께 활용 기술
www.yes24.com
뷰는 관계 데이터베이스에서 한 사용자의 전체 외부 뷰 대신에 하나의 가상 릴레이션(Virtual Relation)을 의미하며, 기존의 기본 릴레이션(Base Relation, 실제 릴레이션)에 대한 SELECT문의 형태로 정의된다. 사용자는 여러 개의 릴레이션과 뷰를 사용할 수 있으며, 릴레이션으로부터 데이터를 검색하거나 생긴할 수 있는 동적인 창(Dynamic Window)의 역할을 수행한다.
예1: 한 릴레이션 위에서 뷰를 정의
EMPLOYEE 릴레이션에 대해서 “3번 부서에 근무하는 사원들의 사원번호, 사원이름, 직책으로 이루어진 뷰”를 정의하려고 한다. 뷰에는 EMPNO, EMPNAME, TITLE 세 애트리뷰트가 포함되는데, 이 때 COMPANY 데이터베이스에서 만들어진 테이블과 릴레이션이므로 아래 명령어를 작성하는 쿼리 또한 COMPANY에서 만들어준다.
CREATE VIEW EMP_DNO3 (ENO, ENAME, TITLE)
AS SELECT DNO, EMPNAME, TITLE
FROM EMPLOYEE
WHERE DNO=3;
EMP_DNO3에는 실제로 투플들이 저장되어 있지 않으나, 뷰를 통해서 기본 릴레이션 EMPLOYEE를 접근하면 다음과 같이 3번 부서에 근무하는 사원들만 접근할 수 있다.
예2: 두 릴레이션 위에서 뷰를 정의
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 = '기획';
한편, SQL Server는 릴레이션의 데이터가 변경될 때 주기적으로 통계 정보를 갱신한다. 이를 갱신을 필요성이 있는가를 확인하기 위해 샘플링 방법을 사용하는데, 갱신되는 빈도는 애트리뷰트 또는 인덱스의 크기와 변경되는 데이터의 양에 따라 결정된다. 모든 릴레이션들에 대한 구성을 정의하는 데이터를 시스템 테이블이라고 부르는 특수한 테이블 집합에 저장하며, 사용자나 응용 프로그램이 정보 스키마 뷰, Transact-SQL문 및 함수, 시스템 저장 프로시저 등을 사용하여 시스템 테이블에 저장된 정보를 검색한다.
다음은 시스템 테이블을 사용하여 사용자 KIM이 소유한 개체들을 찾기 위해 SQL Server 관리 스튜디오의 편집기 창에서 질의를 수행하는 SQL문이다.
SELECT SYSUSERS.NAME AS OWNER, SYSOBJECTS.NAME,
SYSOBJECTS.xtype
FROM SYSOBJECTS, SYSUSERS
WHERE SYSOBJECTS.UID=SYSUSERS.UID AND SYSUSERS.NAME='KIM';
이와 같이 시스템 테이블을 이용하여 개체에 관한 정보를 검색할 수 있다. 여기서 OWNER는 개체를 소유한 사용자의 식별자이고, NAME은 개체의 이름을 나타낸다. xtype은 개체의 유형으로서, C는 CHECK 제약 조건, D는 디폴트값 제약조건, F는 외래 키 제약조건, PK는 기본 키 제약조건, U는 사용자 릴레이션, UQ는 UNIQUE 제약조건, V는 뷰를 나타낸다.
INFORMATION_SCHEMA를 사용하여 사용자 KIM이 소유한 EMPLOYEE 릴레이션의 애트리뷰트 정보를 찾기 위한 질의를 수행할 수도 있다.
SELECT COLUMN_NAME, ORDINAL_POSITION,
DATA_TYPE, COLUMN_DEFAULT
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME='EMPLOYEE';
COLUMN_NAME은 애트리뷰트의 이름, ORDINAL_POSITION은 애트리뷰트의 번호(ID), DATA_TYPE은 데이터 타입, COLUMN_DEFAULT는 애트리뷰트의 디폴트 값을 나타낸다.
'데이터 [Data] > 데이터베이스론' 카테고리의 다른 글
데이터베이스론 보고서 14 : 로그 우선쓰기를 왜 해야 하는가? (0) | 2021.07.21 |
---|---|
데이터베이스론 보고서 13 : 직렬스케줄의 의미 (0) | 2021.07.20 |
데이터베이스론 보고서 11 : 이행적 종속성은 주로 어떤 키들과 연관이 있는가? (0) | 2021.07.18 |
데이터베이스론 보고서 10 : VSAM 화일 구조에서 논의되는 인덱스 구조 (0) | 2021.07.17 |
데이터베이스론 보고서 9 : 2진 관계 타입을 릴레이션으로 변환하는 형태 (0) | 2021.07.16 |
댓글