近期一直在負責乙個專案的資料庫設計,磕磕碰碰這麼久,總算將大致的資料結構設計完畢。整個設計階段走下來,主要有以下感想:
熟悉系統業務。這是肯定要掌握的,對業務的熟悉度越高越能設計出合理的資料結構。掌握的至少包括功能模組的劃分、各個模組的臨界點以及各模組的關係。這裡清理清楚,就能儘量減少模組之間的耦合度。
設計系統架構。這也需要根據專案需求來設計部署方式與架構方式。例如多資料來源、負載均衡、快取、資料庫型別、資料量等。了解這些可以幫助對資料結構的設計有極大的幫助,對錶結構與字段冗餘有很大的影響。
掌握基本的資料庫設計原則以及思想。例如主外來鍵關係、三正規化原則、一對多關係設計、多對多關係設計、索引、表分割槽、冗餘等。最好了解提高資料庫效率的一些方式方法。
上面幾點是基本的準備工作。下面才是實際進行資料庫表結構的設計。
首先,繪製e-r圖。
其次,資料庫字段設計。這一步是開始實際的設計了。依據上面的準備工作,進行設計。內容包括:人員、角色、許可權表的基礎表設計;專案用到的其他輔助表,例如動態資料來源的表設計,定時任務的表設計,日誌記錄表等表;最後,才是業務表設計,這時候就要考驗對業務的理解程度了。在我負責的專案中,我做的工作有:
1)根據需求文件以及原型整理出功能需求樹(用excel方式整理每個功能)
2)在稍微大點的專案中,提煉出專案中各種型別的型別資料,放入資料字典中,並設計合適的資料字典表。
3)公共欄位的設計,比如每條資料的建立時間、修改時間、建立人(賬號)、修改人(賬號)、刪除標誌(邏輯刪除)
4)完全按照三正規化規範設計出業務表
5)考慮資料量、硬體成本、開發成本、維護成本、資料一致性、查詢效率等問題,然後選擇對業務表進行字段冗餘設計,甚至表冗餘。
6)依據業務、基本原則、經驗等來確定欄位的型別以及長度。mysql5.5以上版本中varchar(x),長度x指的是當前資料庫表所用字符集的實際長度,比如utf-8,
長度x指的是漢字的實際長度以及字母的實際長度,mysql5.5以下版本沒有測試過。
7)資料庫表字段設計完成之後,就做一些其他工作。例如,制定編碼規則,整理資料字典內容,收集系統角色以及許可權等。
3. 最後,製作資料庫模型圖。
資料庫學習感悟
這學期的課還蠻有意思的,資料庫按往常來說會開成access,不過老師比較有趣,直接給我們開sql,說是同時把兩門學會,資料庫的課每週有一次,三節小課連上,我聽得還算認真把。反正就是一直在認真聽,沒有多少走神的時間。首先要明白什麼是資訊和資料,資訊就是對客觀世界的一種描述,而資料則是資訊的具體形式 但...
資料庫SQL,NoSQL之小感悟
最近遇到乙個問題,就是單錶資料過1000萬的儲存及查詢問題。舉個例子 1000萬的資料存在乙個表中,欄位4 5個樣子,日常 開發中難免要做過濾 排序 分頁。如果把這幾個放在一起即要過濾又要排序,還要分頁那麼資料量大一些就會發現特別慢。10多年前剛入行時就聽許多的人討論分頁,說什麼1000萬大表分頁儲...
資料庫設計 設計資料庫之前
1.考察現有環境 在設計乙個新資料庫時,你不但應該仔細研究業務需求而且還要考察現有的系統。大多數資料庫 專案都不是從頭開始建立的 通常,機構內總會存在用來滿足特定需求的現有系統 可能沒有實 現自動計算 顯然,現有系統並不完美,否則你就不必再建立新系統了。但是對舊系統的研究 可以讓你發現一些可能會忽略...