數據庫設計的 10 個最佳實踐

作者丨 Emily Williamson  譯者丨孫薇

來源 | CSDN

數據庫是應用及計算機的核心元素,負責存儲運行軟件應用所需的一切重要數據。爲了保障應用正常運行,總有一個甚至多個數據庫在默默運作。我們可以把數據庫視爲信息倉庫,以結構化的方式存儲了大量的相關信息,併合理分類,方便搜索及使用。

因此,數據庫設計成爲軟件開發中的重要一環,對於開發者來說,設計一個高效的數據庫至關重要。那麼,爲什麼數據庫設計很重要,“好” 的標準又是什麼?本文將做以介紹。

爲什麼數據庫設計很重要?

用我們訂購襯衫的在線商城網站舉例。如今,從網站上訂購襯衫的過程似乎很簡單,但涉及了很多信息交換。例如:第一次瀏覽網頁時,系統會展示給你一系列信息,包含產品分類,所有可用商品、相應價格、可用尺碼、顏色以及其他相關信息。網站會從存儲數據的數據庫中檢索,當用戶選中所需商品並繼續操作購買時,網站會詢問個人詳細信息、送貨地址、付款詳細信息,並確認訂單。目前在此過程中產生的新數據,如用戶詳細信息、訂單詳細信息、購買及付款都會在同一個數據庫中添加及更新。

數據庫設計很重要,因爲對構建可伸縮且能夠在高工作負載下運行的軟件應用來說,它是至關重要的。設計數據庫首先來說,選擇數據庫軟件很關鍵。目前可用於構建應用的數據庫軟件有數百種可供選擇,我們可以從一些最好的免費數據庫軟件中選擇,之後便是設計符合要求的數據庫了。下面列出了 10 個最優的數據庫設計實踐。

數據庫設計的 10 個最佳實踐

將所有人的觀點列入考量

要設計好的數據庫,必須考慮所有相關利益者的觀點。在構建數據庫之前,先去收集信息,瞭解他們對數據庫的期望以及對數據庫的操作熟練度。這樣就能得出數據庫應當採用的技術水平,以及是否要就數據庫的功能來訓練用戶。

選擇符合需求的數據庫類型

數據庫有多種類型,選擇正確類型則是數據庫設計的關鍵。我們可以將數據庫以兩種方式分類。一是基於數據庫用以定義和操作數據的查詢語言。使用 SQL 的數據庫是結構化數據最常用的類型。然而,由於 NoSQL 數據庫的可伸縮性、靈活性和速度更優,它們更適合機器學習、網絡分析以及物聯網(IoT)使用。

第二種分類方式則是基於數據模型。這樣分類會有四種類型:關係數據庫、分層數據庫、網絡數據庫以及面向對象的數據庫。

研究數據庫的不同類型,並針對應用需求作出選擇,這是必要的初始步驟。

以一致的方式來定義與標記表和列

在定義數據項以及標記表與列時,遵從一致性原則非常重要,可以幫助我們更好地理解數據。命名錶與列的最佳實踐之一便是使用簡單的名字來定義其包含的數據。比如:只需將包含用戶名稱的列標記爲 “CustomerName”(“用戶名”)即可。

應當避免使用複數名(如 CustomerNames)、縮寫(如 CN),並且名稱中不得使用空格(如 Customer Name)。如果堅持遵守這些規則,則將來的用戶在使用數據庫時會更容易。

規範化是關鍵

數據庫的規範化指的是將數據庫中的所有信息組織起來,避免數據重複和冗餘。簡單來說,規範化是將數據打散分配到多個較小的相關表中,而不是統統存在一個大表裏。

將數據規範化是很好的數據庫設計實踐,有助於提高效率。但是請確保不要過度規範化,否則將會把數據分散到太多的小表中,反而造成混亂。

數據庫設計的文檔化很重要

事實上,文檔化並非人見人愛,因爲實在太煩了。但要記得,文檔化對於良好的數據庫設計至關重要,可以追蹤所有的小細節。數據庫設計應當附有指示說明、ER 圖、存儲過程及所有其他相關的信息。文檔還應當爲編程者和終端用戶提供足夠信息量,確保他們能夠理解並使用。

隱私是首要考量

很多時候,存儲在數據庫中的信息是加密信息,隱私就成了一個值得關注的問題。爲了獲得最大程度的安全性,我們應當對密碼加密,使用身份驗證來限制數據庫的訪問,並使用另一個服務器來存放數據庫,而不是應用所在的服務器。這將確保你的數據不受攻擊和隱私侵犯的威脅。

考慮長期需求

優秀的數據庫設計應當具備可伸縮性,即:在使用量增加的情況下,仍然能承受較高的工作負載,並保障應用的運行。對工作量可能會有所改變的企業來說,在設計數據庫時牢記此項至關重要。例如:如果一個電子商務網站預計當銷售量增長時,訪客會在一個月內急速增加,那麼在設計數據庫時應當將這一點列入考量,以便數據庫可以響應迅速增長的訪客,並保持在高工作負載的情況下運作。

代碼以及使用預存程序

數據庫設計中的常見錯誤之一,就是不使用預存程序。預存程序指的是,在操作數據時手邊隨時可用的提前預存代碼串。例如,如果有個 SQL 查詢是常用的操作指令,則將它提前寫入預存程序,而不是在用的時候重新來寫,就會讓工作簡單起來。一旦有了預存程序,就可以在需要時一步執行並載入這個 SQL 查詢了。

編寫大量預存程序是個喫力的工作,但如果花時間完成並用文檔記錄下來的話,對終端用戶來說,使用數據庫就更加輕鬆了。

在數據庫建模和設計上投入時間

優秀數據庫設計的專業技巧之一是在數據庫建模和設計上投入時間和精力。開發者常見的錯誤就是忽略這一步以節省時間,將重點放在軟件開發更重要的其他方面上。但是,數據庫設計對於保障應用的功能來說非常關鍵。如果一味想節省時間,不仔細思考設計的話,未來就會需要花費更多時間來維護數據庫,甚至重新設計。

測試設計

測試也是數據庫設計很關鍵的步驟,而且經常會被疏忽對待,甚至完全跳過,只爲了趕 DDL。我們應當在發佈項目前,花些時間來徹底測試數據庫設計,以確保其滿足了所有計劃中的需求,且正常運行。

結語

對於以數據爲中心的項目來說,數據庫設計極爲重要,開發過程中我們也應當慎重對待。文中提到的數據庫設計實踐,如針對長期需求進行適當的計劃,選擇正確的數據庫類型,使用一致性的名稱與標籤,數據規範化,數據庫設計文檔化,並提前測試,這些都是我們在設計優秀數據庫時需要考慮的關鍵問題。

原文:https://medium.com/quick-code/10-best-database-design-practices-1f10f3441730


感謝您的閱讀,也歡迎您發表關於這篇文章的任何建議,關注我,技術不迷茫!

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/Bsc8bziUPj-7p2fmYIBYWw