- 관계형 데이터베이스를 이해하는 데 뻬놓을 수 없는 것이 바로 뷰 (view)임
- 뷰는 단어의 뜻 그대로 하나의 테이블, 혹은 여러 테이블에 대해서 특징 사용자나 조직의 관점에서 데이터를 바라볼 수 있도록 해주는 수단으로서 가상 테이블이라고도 부름
- 같은 사원에 대한 정보이지만 이렇게 부서별로 필요로 하는 세부항목은 다를 수 있음
- 과거의 파일 시스템 환경에서는 이런 경우 세 걔의 부서에서 필요한 사원 파일을 각각 생성하여 사용함
- 그 결과 데이터의 중복성, 불일치와 같은 문제가 발생
- 관계형 데이터베이스에서는 데이터를 개인이나 개별 부서 단위의 관점에서 보는 것이 아니라 조직 전체의 차원에서 보기 때문에 세 개의 사원 정보를 관리하지 않고 하나의 사원 정보 테이블에 모아서 관리함

- 사원 테이블이 인사팀, 기획실, 사내복지팀에 주어진다면 각 부서에서는 자신들에게 불필요한 정보가 포함되어 주어지기 때문에 불편할 수 있고, 또한 다른 부서에 보여서는 안 되는 급여 정보가 함께 제공되는 문제가 생김
- 데이터베이스 관리자는 EMP 테이블을 제공하는 대신에 각 부서의 필요에 맞는 뷰를 생성하여 제공할 수 있음

- 사용자의 관점에서 보면 뷰는 일반 테이블 (base table)과 거의 구분이 되지 않음
- 일반 테이블과 마찬가지로 뷰에 대해서도 질의가 가능하기 때문임
- 일반 테이블과 뷰의 중요한 차이점은 일반 테이블이 실제로 물리적인 데이터를 갖고 있는 반면에 뷰는 물리적인 데이터를 갖고 있지 않고, 뷰가 정의된 일반 테이블로부터 데이터를 가져다 보여준다는 것
- 뷰는 일반 테이블이 있어야 정의가 가능
- 다음과 같은 SQL 명령을 사용
CREATE VIEW view_emp1
AS SELECT empid, ename, hire_date, salary
FROM emp;
CREATE VIEW high_salary
AS SELECT empid, ename, dept, salary
FROM emp
WHERE salary >= 350;
- 만일 사용자가 뷰 high_salary에 대하여 다음과 같은 질의를 한다면
SELECT empid, ename, salary
FROM high_salary
WHERE dept = '영업부';
- DBMS는 다음과 같이 일반 테이블에 대한 질의로 바꾸어 실행함
SELECT empid, ename, salary
FROM emp
WHERE salary >= 350
AND dept = '영업부';
- 일반적으로 뷰는 다음과 같은 목적으로 사용
- 하나의 테이블에 대하여 여러 부서에서 서로 다른 관점으로 보기를 원할 때
- 테이블에 급여와 같이 일반 사용자에게는 감추어야 할 컬럼이 있을 때 그것을 제외하고 뷰를 만들어 제공함으로써 보안을 유지할 필요가 있을 때
- 자주 사용하는 복잡한 질의문을 미리 뷰로 정의하여 두고 간편하게 쓰고자 할 때
사용한 책 : 데이터베이스 설계 및 구축
'coding base > DataBase' 카테고리의 다른 글
[DB] 추상화(abstraction) & 모델링(modeling) (0) | 2024.04.10 |
---|---|
[DB] SQL 언어 (0) | 2024.04.10 |
[DB] 기본키와 외래키 (1) | 2024.04.10 |
[DB] 관계형 데이터베이스 (0) | 2024.04.05 |
[DB] 데이터베이스 (0) | 2024.04.04 |