淺談數據庫設計數據庫
數據庫設計的重要性:好的數據庫設計有下面的一些做用:數據結構
一、首先充分體現系統的需求,數據庫是爲應用服務的,好的數據庫設計應該首先能知足應用系統的業務需求,準確的表達數據間關係。
二、保證數據的準確性和一致性,經過主外鍵、非空、限制、惟一索引等保證數據的健壯。
三、提升數據的查詢效率,經過合理表結構,安排物理存儲分區、增長索引等方式,提升數據的讀取速度,提升查詢效率。
四、有好的擴展性,在必要時能根據需求擴展數據結構。
在系統設計中對數據庫的設計應考慮哪些設計原則
數據庫是整個軟件應用的根基,是軟件設計的起點,它起着決定性的質變做用,所以咱們必須對數據庫設計高度重視起來,培養設計良好數據庫的習慣,是一個優秀的軟件設計師所必須具有的基本素質條件! 那麼咱們要作到什麼程度纔是對的呢?下面就說說數據庫設計的原則: 數據庫設計
一、數據庫設計最起碼要佔用整個項目開發的40%以上的時間
數據庫是需求的直觀反應和表現,所以設計時必需要切實符合用戶的需求,要屢次與用戶溝通交流來細化需求,將需求中的要求和每一次的變化都要一一體如今數據庫的設計當中。若是需求不明確,就要分析不肯定的因素,設計表時就要事先預留出可變通的字段,正所謂「有備無患」。 性能
二、數據庫設計不只僅停留於頁面demo的表面 測試
頁面內容所須要的字段,在數據庫設計中只是一部分,還有系統運轉、模塊交互、中轉數據、表之間的聯繫等等所須要的字段,所以數據庫設計絕對不是簡單的基本數據存儲,還有邏輯數據存儲。
三、數據庫設計完成後,項目80%的設計開發在你腦海中就已經完成了
每一個字段的設計都是有他必要的意義的,你在設計每個字段的同時,就應該已經想清楚程序中如何去運用這些字段,多張表的聯繫在程序中是如何體現的。換句話說,你完成數據庫設計後,程序中全部的實現思路和實現方式在你的腦海中就已經考慮過了。若是達不到這種程度,那當進入編碼階段後,才發現要運用的技術或實現的方式數據庫沒法支持,這時再改動數據庫就會很麻煩,會形成一系列不可預測的問題。 大數據
四、數據庫設計時就要考慮到效率和優化問題
一開始就要分析哪些表會存儲較多的數據量,對於數據量較大的表的設計每每是粗粒度的,也會冗餘一些必要的字段,已達到儘可能用最少的表、最弱的表關係去存儲海量的數據。而且在設計表時,通常都會對主鍵創建彙集索引,含有大數據量的表更是要創建索引以提供查詢性能。對於含有計算、數據交互、統計這類需求時,還要考慮是否有必要採用存儲過程。 優化
五、添加必要的(冗餘)字段
像「建立時間」、「修改時間」、「備註」、「操做用戶IP」和一些用於其餘需求(如統計)的字段等,在每張表中必須都要有,不是說只有系統中用到的數據纔會存到數據庫中,一些冗餘字段是爲了便於往後維護、分析、拓展而添加的,這點是很是重要的,好比黑客攻擊,篡改了數據,咱們便就能夠根據修改時間和操做用戶IP來查找定位。 編碼
六、設計合理的表關聯
若多張表之間的關係複雜,建議採用第三張映射表來關聯維護兩張表之間的關係,以下降表之間的直接耦合度。若多張表涉及到大數據量的問題,表結構儘可能簡單,關聯也要儘量避免。
七、設計表時不加主外鍵等約束性關聯,系統編碼階段完成後再添加約束性關聯
這樣作的目的是有利於團隊並行開發,減小編碼時所遇到的問題,表之間的關係靠程序來控制。編碼完成後再加關聯並進行測試。不過也有一些公司的作法是乾脆就不加表關聯。 spa
八、選擇合適的主鍵生成策略。設計