什麼是資料庫設計?
簡單來說,資料庫設計就是根據業務系統的具體需要,結合我們所選用的dbms(資料庫管理系統),為
這個業務系統構造出最優的資料儲存模型。並建立好的資料庫中的表結構及表與表之間的關聯關係的過程。
使之能有效的對應用系統中的資料進行儲存,並可以高效的對已經儲存的資料進行訪問。
資料庫設計的步驟
需求分析--
邏輯設計--
物理設計--
維護優化1.
需求分析
分析模組屬性
可選唯一標識屬性
儲存特點
eg:如註冊
包括屬性:使用者名稱、密碼、**、郵箱、身份證號、位址、姓名、暱稱
可選唯一標識屬性:使用者名稱、身份證、**
儲存特點:隨系統上線時間逐漸增加,需要永久儲存2.
邏輯設計
第一正規化--
二維表定義由行和列組成的
資料庫表中所有欄位都是單一屬性不可再分由基本資料型別所構成。
第二正規化--
所有單關鍵字段的表都符合每二正規化
資料庫的表中不存在非關鍵字段對任一選關鍵字段的部分函式依賴。
eg:商品名稱
**重量
**商名稱
**商**
可以拆分成
商品表和**商表
以及關聯倆個表的商品**商id表
第三正規化
如果資料表中不存在非關鍵字段對任意候選關鍵字段的傳遞函式依賴則符合第三正規化
eg:商品名稱
**分類
分類描述
分類關聯著分類描述不符合第三正規化
拆分為商品表
分類表關聯商品和分類id表
第三正規化擴充套件--
bc正規化
在第三正規化的基礎之上,資料庫表中如果不村子任何欄位對任一候選關鍵字段的傳遞函式依賴則符合bc正規化
也就是說復合關鍵字,則復合關鍵字之間也不能存在函式依賴關係。
eg:**商
商品id
**商聯絡人
商品數量
飲料一廠1張三
10飲料二廠1李四
20**商
-> **商聯絡人
**商聯絡人
->**商
如果飲料二廠剛簽完合同沒有提供商品
則看不到二廠的資訊
聯絡人等
拆分成**商商品表
和**商聯絡人表3.
物理設計
建立資料庫表結構
選擇資料庫eg:
oracle
mysql
sqlserver
定義資料庫、表及字段的命名規範
建表建庫選擇字段型別
正規化化設計
選擇資料庫考慮成本
mysql
開源資料庫
適合網際網路專案
oracle
sqlserver商業資料庫
適合企業專案
如金融類專案
表及字段命名規則1.
可讀性原則2.
表意性原則3.
長命原則
eg:pwd
password
如何選擇主鍵?1.
區分業務主鍵和資料庫主鍵
業務主鍵進行表與表之間關聯資料庫主鍵為了優化資料庫儲存2.
根據資料庫的型別,考慮主鍵是否要順序增長
有些資料庫是按主鍵的順序邏輯儲存的
可以設定自動增長3.
主鍵字段型別所佔空間要盡可能的小
對於使用聚集索引方式儲存的表
,每個索引後都會附加主鍵資訊外來鍵1
.降低資料匯入惡效率2.
增加維護成本3.
雖然不建議使用外來鍵約束
,觸發器1.
降低資料匯入的效率2.
可能會出現意想不到的資料異常3.
使業務邏輯變得複雜
嚴禁使用預留字段
後期維護成本高4.
維護優化
維護和優化要做什麼?1.
維護資料字典2.
維護索引3.
維護表結構4.
在適當的時候對錶進行水平拆分或垂直拆分
可以使用第三方工具對資料字典進行維護
通過 UML OO 進行資料庫設計
程式開發中使用 的語言和方式,自然的養成了 的思想,那麼在設計資料庫datamodel時,完成可以繼續發揚光大。用oo的方式發現物件,發現class,找到class之間的關係,完成uml的類圖。結合這個類圖,根據一對一,一對多,和多對多的,物件關係。來設計資料的datamodel 這個過程很清楚也很...
如何進行資料庫優化
1.優化索引 sql 語句 分析慢查詢 如有條件,資料可以存放於redis,讀取速度快 2.設計表的時候嚴格根據資料庫的設計正規化來設計資料庫 3.使用快取,把經常訪問到的資料而且不需要經常變化的資料放在快取中,能 節約磁碟io 4.優化硬體 採用ssd,使用磁碟佇列技術 raid0,raid1,r...
如何跨資料庫進行資料操作
從乙個資料庫表匯入到另乙個資料庫表或者說 將乙個庫中的表的資料新增到另乙個庫的表中 其實不用資料匯入匯出那麼複雜,目前有兩種跨資料庫操作 1 不同的服務位址 eg 192.168.0 data01.dbo.testtable01 192.168.1 data01.dbo.testtable02 1 ...