การออกแบบฐานข้อมูล
Lis Sulmont
Curriculum Manager
ใน database view คือชุดผลลัพธ์ของ query ที่จัดเก็บไว้ ซึ่งผู้ใช้สามารถ query ได้เหมือนกับ object ถาวรใน database (Wikipedia)
ตารางเสมือนที่ไม่ได้อยู่ใน physical schema
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');
$$
SELECT * FROM INFORMATION_SCHEMA.views;
รวม system views
SELECT * FROM information_schema.views
WHERE table_schema NOT IN ('pg_catalog', 'information_schema');
ไม่รวม system views
$$

การออกแบบฐานข้อมูล