[DB] VIEW

handa·2024년 12월 5일
0
post-thumbnail

뷰(View)는 데이터베이스에서 하나 이상의 테이블의 특정 데이터를 조합하거나 필터링하여 제공하는 가상의 테이블입니다. 실제 데이터를 저장하지 않고, 기본 테이블에 대한 쿼리 결과를 가상으로 보여줍니다.


1. 뷰의 주요 특징

  • 가상 테이블
    * 뷰는 물리적으로 데이터를 저장하지 않으며, 기본 테이블에서 데이터를 가져와 표시합니다.
  • 재사용 가능한 쿼리
    * 복잡한 SQL 쿼리를 캡슐화하여 간단히 재사용할 수 있습니다.
  • 보안 및 접근 제어
    * 민감한 데이터를 숨기고 특정 데이터만 노출할 수 있습니다.
  • 읽기/쓰기 가능 여부
    * 기본적으로 읽기 전용입니다. 하지만 일부 조건에서 업데이트, 삽입, 삭제가 가능합니다.

2. 뷰의 장점

  1. 간소화된 데이터 접근
    • 복잡한 쿼리를 뷰로 정의하여 간단히 사용할 수 있습니다.
  2. 보안 강화
    • 민감한 데이터를 포함하지 않는 뷰를 정의하여 사용자 접근을 제한할 수 있습니다.
  3. 유지보수 편리
    • 테이블 구조가 변경되어도 뷰만 수정하면 기존 쿼리를 수정하지 않아도 됩니다.
  4. 캡슐화
    • 데이터의 복잡성을 감추고 필요한 데이터만 노출합니다.

3. 뷰 생성 방법

SQL: CREATE VIEW

CREATE VIEW view_name AS
SELECT column1, column2
FROM table_name
WHERE condition;

예제: 고객 테이블에서 이름과 이메일만 포함된 뷰 생성

CREATE VIEW customer_view AS
SELECT name, email
FROM customers
WHERE active = 1;
  • customer_view라는 뷰가 생성되며, 활성 상태의 고객 이름과 이메일만 표시됩니다.

4. 뷰 사용 방법

1) 뷰 조회

뷰는 일반 테이블처럼 사용할 수 있습니다.

SELECT * FROM customer_view;

2) 읽기/쓰기

  • 읽기 : 대부분의 경우 뷰를 통해 데이터를 읽을 수 있습니다.
  • 쓰기 : 일부 뷰에서는 데이터를 수정할 수 있습니다.
    • 뷰가 단일 테이블 기반이며 기본 키를 포함하고 있어야 합니다.
    • 계산된 컬럼이나 GROUP BY 같은 집계가 포함되면 쓰기가 제한됩니다.

5. 뷰 수정 및 삭제

뷰 수정: CREATE OR REPLACE

CREATE OR REPLACE VIEW customer_view AS
SELECT name, email, phone
FROM customers
WHERE active = 1;

뷰 삭제: DROP VIEW

DROP VIEW customer_view;

6. 뷰와 테이블의 차이점

특성뷰(View)테이블(Table)
데이터 저장 여부데이터를 저장하지 않음데이터를 물리적으로 저장함
데이터 소스기본 테이블의 데이터자체 데이터
읽기/쓰기 가능 여부읽기 가능, 제한적으로 쓰기 가능읽기와 쓰기 모두 가능
용도데이터 표시, 캡슐화, 보안 강화데이터 저장, 관리, 조회

7. 뷰의 한계

  1. 쓰기 제약
    • 대부분의 뷰는 데이터 수정, 삽입, 삭제가 제한됩니다.
  2. 성능
    • 뷰는 기본 테이블에서 데이터를 가져오기 때문에 대규모 데이터에서는 성능 문제가 발생 할 수 있습니다.
  3. 복잡한 뷰 관리
    • 뷰가 복잡하거나 다수의 뷰가 얽혀 있는 경우 유지보수가 어려울 수 있습니다.

8. 활용 사례

  1. 필터링된 데이터 제공
    • 특정 조건에 맞는 데이터를 제공하여 접근 권한 관리.
  2. 보고서 생성
    • 집계 데이터를 뷰로 생성해 리포트에 활용.
  3. 데이터 일관성 유지
    • 여러 테이블에서 데이터를 조합하여 단일 뷰로 제공.

뷰는 데이터베이스에서 복잡한 쿼리를 단순화하고, 보안을 강화하며, 관리 효율성을 높이는데 유용합니다. 하지만 성능 문제와 쓰기 제한을 고려해 적절히 사용해야 합니다.

profile
진짜 해보자

0개의 댓글