為了正規化資料庫資料表,常常會將高層次資料表中的冗餘欄位抽取到獨立的子資料表中。這通常是由於某些欄位與父實體之間存在一對多的關係所導致的。例如,請參考以下使用 Navicat Data Modeler 產生的模型:

評估一開始是 ups 資料表的一部分,但這導致了資料冗餘,因為在一次存取可以評估多輛車。因此,從 ups 資料表中移除車輛的欄位並將它們放在自己的資料表中是明智之舉。
正規化至第三正規化(3NF)的缺點是最終會在主資料表中產生許多 ID 欄位。作為一名要查看資料表的資料庫從業者,很難知道每個 ID 欄位指向哪個實體。舉個例子,請看上述模型圖中的 ups 資料表,並注意 CSR、customer 和 vehicle 都被簡化為數字 ID,這些 ID 無助於辨認基礎實體:

這部分與使用自動遞增 ID 以及正規化有關,但無論如何,透過建立檢視,我們可以使資料更容易閱讀。資料庫檢視是資料庫的一個子集,並基於在一個或多個資料庫資料表上執行的查詢。資料庫檢視以命名查詢的形式儲存在資料庫中,可用於儲存經常使用的複雜查詢。
在 Navicat 16 中,我們可以從主功能表中選擇「檔案」->「新增」->「檢視…」來建立一個新檢視:

這樣會加入一個新的檢視索引標籤。
下一步是加入會產生檢視欄位的 SQL 陳述式:

如果你在撰寫陳述式時需要協助,索引標籤工具列上有「預覽」、「解釋」、「檢視建立工具」和「美化 SQL」按鈕。
假設我們不想等待檢視建立完成就看結果,可以按一下「預覽」按鈕立即查看結果:

現在,ID 欄位包含更具描述性和有意義的文字資料。
在索引標籤按鈕下面,還有三個索引標籤 - 定義、進階和 SQL 預覽。「進階」索引標籤包含其他選項,例如演算法、定義者、安全性和檢查選項,而「SQL 預覽」索引標籤則顯示產生的 CREATE VIEW 陳述式:

新的檢視在儲存之前的名稱為「Untitled」。在儲存時會彈出一個對話方塊,可以在這裡指定檢視名稱:

儲存後,新檢視將加到左邊的導覽窗格中,並可隨時呼叫:

在 Navicat 16 中建立檢視的結語
在今天的文章中,我們學習了關於資料庫檢視的知識,並介紹了如何製作一個檢視,透過 ID 欄位將一個資料表與多個相關資料表連結以協助識別該資料表的記錄。