數據庫設計。 最佳實踐

預計下一個流的開始速率 “數據庫” 準備了一份小作者的材料,其中包含有關數據庫設計的重要技巧。 我們希望這些材料對您有用。

數據庫設計。 最佳實踐

數據庫無處不在:從最簡單的博客和目錄到可靠的信息系統和大型社交網絡。 數據庫簡單還是複雜並不重要,正確設計才重要。 當數據庫的設計不經過深思熟慮並且沒有清晰地了解其用途時,它不僅是無效的,而且進一步使用數據庫將是真正的折磨,對用戶來說是一座不可逾越的森林。 以下是一些數據庫設計技巧,可幫助您創建有用且易於使用的產品。

1. 確定表的用途及其結構

數據庫設計。 最佳實踐

如今,Scrum 或 RAD(快速應用程序開發)等開發實踐可幫助 IT 團隊快速開發數據庫。 然而,在追求時間的過程中,立刻投入到建設基地的誘惑是非常大的,模糊地想像著目標本身是什麼,最終的結果應該是什麼。
 
彷彿團隊的目標就是高效、高速的工作,但這只是海市蜃樓。 您深入項目越深入、越快,識別和糾正基礎項目中的錯誤所需的時間就越多。

因此,首先要決定的是確定數據庫的用途。 該基地是為什麼類型的應用程序開發的? 用戶是否只處理記錄並需要關注交易,或者他對數據分析更感興趣? 基地應該部署在哪裡? 它會跟踪客戶的行為還是僅僅管理他們之間的關係? 

設計團隊越早回答這些問題,數據庫設計過程就會越順利。

2. 我應該選擇存儲哪些數據?

數據庫設計。 最佳實踐

未雨綢繆。 關於數據庫設計的站點或系統將來的用途的想法。 重要的是要超越職權範圍的簡單要求。 只是請不要開始考慮用戶將存儲的所有可能的數據類型。 相反,請考慮用戶是否能夠發布、上傳文檔或照片,或者交換消息。 如果是這樣,那麼在數據庫中您需要為它們分配空間。

與未來支持設計基地的團隊、部門或組織合作。 與不同級別的人員溝通,從客戶經理到部門負責人。 所以藉助反饋,你就會清楚地了解公司的要求。 

即使是同一部門內的用戶的需求也不可避免地會發生衝突。 如果您遇到這種情況,請不要害怕借鑒自己的經驗,找到適合各方並滿足數據庫最終目標的折衷方案。 請確保:將來您將獲得 +100500 的業力和堆積如山的餅乾。

3. 謹慎建模數據

數據庫設計。 最佳實踐

數據建模時需要記住一些關鍵事項。 正如我們之前所說,數據庫的用途決定了建模時使用哪些方法。 如果我們正在設計用於在線記錄處理(OLTP)的數據庫,換句話說,用於創建、編輯和刪除記錄,那麼我們將使用事務建模。 如果數據庫必須是關係型的,那麼最好使用多維建模。

在建模過程中,構建概念 (CDM)、物理 (PDM) 和邏輯 (LDM) 數據模型。 

概念模型描述實體及其包含的數據類型以及它們之間的關係。 將您的數據劃分為邏輯塊 - 這樣生活起來要容易得多。
最主要的是量度,不要過度。

如果一個實體很難用單個單詞或短語進行分類,那麼就需要使用子類型(子實體)。

如果實體擁有自己的生命,具有描述其行為和外觀的屬性,以及與其他對象的關係,那麼您不僅可以安全地使用子類型,還可以安全地使用超類型(父實體)。 

如果您忽略此規則,其他開發人員將對您的模型感到困惑,並且無法完全理解數據以及如何收集數據的規則。

概念模型是在邏輯模型的幫助下實現的。 這些模型就像設計物理數據庫的路線圖。 在邏輯模型中,區分業務數據實體、定義數據類型、控制數據之間關係的規則的關鍵狀態。

然後將邏輯數據模型與預先選擇的DBMS(數據庫管理系統)平台進行比較,得到物理模型。 它描述了數據如何物理存儲。

4. 使用正確的數據類型

數據庫設計。 最佳實踐

使用錯誤的數據類型可能會導致數據不太準確、難以連接表、同步屬性以及文件大小過大。
為了確保信息的完整性,屬性應該只包含它接受的數據類型。 如果將年齡輸入數據庫,請確保該列存儲最多 3 位數字的整數。

創建最少的空列。 如果將所有列創建為 NULL,這是一個錯誤。 如果您需要一個空列來執行特定的業務功能,當數據未知或尚無意義時,請隨意創建它。 畢竟,我們無法提前填寫“死亡日期”或“解僱日期”一欄,我們不是指指點點的預測者:-)。

大多數建模軟件(ER/Studio、MySQL Workbench、SQL DBM、gliffy.com) 數據允許您對數據區域進行原型設計。 這不僅保證了正確的數據類型、應用程序邏輯和良好的性能,而且保證了強制值規範。

5. 偏愛自然

數據庫設計。 最佳實踐

在決定將表中的哪一列用作鍵時,請始終考慮用戶可以編輯哪些字段。 永遠不要選擇它們作為鑰匙 - 這是一個壞主意。 任何事情都有可能發生,而且你必須保證唯一性。

最好使用自然密鑰或業務密鑰(自然密鑰)。 它具有語義意義,因此您可以避免數據庫中的重複。 

如果只有業務鍵不唯一(名字、姓氏、職位)並且在表的不同行中重複或者必須更改,則應將生成的人工代理鍵​​(人工鍵)指定為主鍵。

6.適度正常化

數據庫設計。 最佳實踐

為了有效地組織數據庫中的數據,必須遵循一組最佳實踐並對數據庫進行規範化。 有五種範式可供遵循。
通過標準化,您可以避免冗餘並確保應用程序或網站中使用的數據的完整性。

一如既往,一切都應該適度,甚至正常化。 如果數據庫中有太多具有相同唯一鍵的表,那麼您就會得意忘形並過度規範化數據庫。 過度規範化會對數據庫性能產生負面影響。

7. 儘早測試,經常測試

數據庫設計。 最佳實踐

測試計劃和適當的測試應該是數據庫設計的一部分。

測試數據庫的最佳方法是通過持續集成。 模擬“數據庫生命週期中的一天”場景,並檢查是否處理了所有邊緣情況以及可能發生的用戶交互。 越早發現錯誤,節省的時間和金錢就越多。

這些只是幫助您設計出色的性能和效率數據庫的七個技巧。 如果你遵循它們,你將在未來避免大多數令人頭疼的問題。 這些技巧只是數據庫建模的冰山一角。 有大量的生活竅門。 您使用哪些?

來源: www.habr.com

添加評論