데이터베이스 뷰

데이터베이스 설계

Lis Sulmont

Curriculum Manager

데이터베이스 뷰

데이터베이스에서 는 저장된 쿼리의 결과 집합으로, 사용자가 영구적인 데이터베이스 객체처럼 조회할 수 있습니다 (Wikipedia)

물리적 스키마에 속하지 않는 가상 테이블

  • 데이터가 아닌 쿼리가 메모리에 저장됨
  • 테이블의 데이터를 집계하여 생성
  • 일반 테이블처럼 조회 가능
  • 공통 쿼리 재작성이나 스키마 변경 불필요
1 https://en.wikipedia.org/wiki/View_(SQL)
데이터베이스 설계

뷰 생성 (문법)

CREATE VIEW view_name AS
SELECT col1, col2 
FROM table_name 
WHERE condition;
데이터베이스 설계

뷰 생성 (예시)

스노우플레이크 스키마의 도서 차원

$$

목표: science fiction 장르의 제목과 저자 반환

데이터베이스 설계

뷰 생성 (예시)

CREATE VIEW scifi_books AS
SELECT title,  author, genre
FROM dim_book_sf
JOIN dim_genre_sf ON dim_genre_sf.genre_id = dim_book_sf.genre_id
JOIN dim_author_sf ON dim_author_sf.author_id = dim_book_sf.author_id
WHERE dim_genre_sf.genre = 'science fiction';
데이터베이스 설계

뷰 쿼리 (예시)

SELECT * FROM scifi_books
| title                         | author            | genre           |
|-------------------------------|-------------------|-----------------|
| The Naked Sun                 | Isaac Asimov      | science fiction |
| The Robots of Dawn            | Isaac Asimov      | science fiction |
| The Time Machine              | H.G. Wells        | science fiction |
| The Invisible Man             | H.G. Wells        | science fiction |
| The War of the Worlds         | H.G. Wells        | science fiction |
| Wild Seed (Patternmaster, #1) | Octavia E. Butler | science fiction |
| ...                           | ...               | ...             |
데이터베이스 설계

내부 동작 방식

SELECT * FROM scifi_books

=

SELECT * FROM 
(SELECT title,  author, genre
FROM dim_book_sf
JOIN dim_genre_sf ON dim_genre_sf.genre_id = dim_book_sf.genre_id
JOIN dim_author_sf ON dim_author_sf.author_id = dim_book_sf.author_id
WHERE dim_genre_sf.genre = 'science fiction');
데이터베이스 설계

뷰 목록 조회

(PostgreSQL에서)

$$

SELECT * FROM INFORMATION_SCHEMA.views;

시스템 뷰 포함

SELECT * FROM information_schema.views
WHERE table_schema NOT IN ('pg_catalog', 'information_schema');

시스템 뷰 제외

데이터베이스 설계

뷰의 장점

  • 저장 공간을 차지하지 않음
  • 접근 제어 수단
    • 민감한 컬럼을 숨기고 사용자 접근 제한
  • 복잡한 쿼리를 단순화
    • 고도로 정규화된 스키마에 유용
데이터베이스 설계

$$ Pitchfork 리뷰 데이터베이스 스키마

1 https://www.kaggle.com/nolanbconaway/pitchfork-data
데이터베이스 설계

연습해 봅시다!

데이터베이스 설계

Preparing Video For Download...