View trong cơ sở dữ liệu

Thiết kế cơ sở dữ liệu

Lis Sulmont

Curriculum Manager

View trong cơ sở dữ liệu

Trong cơ sở dữ liệu, một view là tập kết quả của một truy vấn được lưu trữ trên dữ liệu; người dùng có thể truy vấn nó như một đối tượng bảng thường trực (Wikipedia)

Bảng ảo, không thuộc lược đồ vật lý

  • Lưu truy vấn, không lưu dữ liệu
  • Tổng hợp dữ liệu từ các bảng
  • Truy vấn như bảng thông thường
  • Không cần gõ lại truy vấn lặp lại hoặc đổi lược đồ
1 https://en.wikipedia.org/wiki/View_(SQL)
Thiết kế cơ sở dữ liệu

Tạo view (cú pháp)

CREATE VIEW view_name AS
SELECT col1, col2 
FROM table_name 
WHERE condition;
Thiết kế cơ sở dữ liệu

Tạo view (ví dụ)

Chiều sách của sơ đồ snowflake

$$

Mục tiêu: Trả về tiêu đề và tác giả của thể loại science fiction

Thiết kế cơ sở dữ liệu

Tạo view (ví dụ)

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';
Thiết kế cơ sở dữ liệu

Truy vấn một view (ví dụ)

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 |
| ...                           | ...               | ...             |
Thiết kế cơ sở dữ liệu

Bên dưới lớp trừu tượng

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');
Thiết kế cơ sở dữ liệu

Xem các view

(trong PostgreSQL)

$$

SELECT * FROM INFORMATION_SCHEMA.views;

Bao gồm các view hệ thống

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

Loại trừ các view hệ thống

Thiết kế cơ sở dữ liệu

Lợi ích của view

  • Không tốn lưu trữ
  • Dạng kiểm soát truy cập
    • Ẩn cột nhạy cảm, giới hạn những gì người dùng thấy
  • Che bớt độ phức tạp truy vấn
    • Hữu ích cho sơ đồ chuẩn hoá cao
Thiết kế cơ sở dữ liệu

$$ Sơ đồ CSDL Pitchfork Reviews

1 https://www.kaggle.com/nolanbconaway/pitchfork-data
Thiết kế cơ sở dữ liệu

Ayo berlatih!

Thiết kế cơ sở dữ liệu

Preparing Video For Download...