1. 程式人生 > >數據庫設計入門

數據庫設計入門

名稱 不依賴 都是 歷史 商務 下劃線 密碼 16px -a

數據庫是網絡應用的基礎,良好的表結構設計,對整個應用起著至關重要的作用。

數據庫設計的步驟:
1.需求分析:數據是什麽,有哪些屬性,數據和屬性的特點
2.邏輯設計:使用ER圖對數據庫進行邏輯建模
3.物理設計:選擇數據庫系統,並對邏輯設計進行轉化
4.維護優化:追加,分拆等

實例演示(電子商務網站)

一、需求分析:

用戶模塊:用於登錄和保存用戶信息等
屬性(用戶名、密碼、手機、郵箱、身份證、地址、姓名。。。) 唯一標識(用戶名、身份證、手機) 存儲特點(永久)

商品模塊:用於記錄網站中銷售的商品信息
屬性(編碼、名稱、描述、分類、供應商、價格。。。) 唯一標識(編碼、名稱+供應商) 存儲特點(不在銷售商品可歸檔)

訂單模塊:用於用戶訂購商品的信息
屬性(訂單號、收件人、電話、地址、商品名稱與數量、訂單狀態、支付狀態) 唯一標識(訂單號) 存儲特點(分表分庫)

購物車模塊:用於保存用戶購物時選的商品
屬性(編號、用戶名、商品編號名稱數量價格、加入時間) 唯一標識(購物車編號) 存儲特點(不用永久,可定時歸檔與清理)

供應商模塊:用於保存所銷售商品的供應商信息
屬性(編號、名稱、聯系人、營業執照號) 唯一標識(編號、營業執照號) 存儲特點(永久)

技術分享圖片

二、邏輯設計:

ER圖:矩形(實體);菱形(聯系集);橢圓(屬性【下劃線為主鍵】);線段(連接)
聯系集主要用來將多對多關系轉換為一對多(即建立一張關系表)

技術分享圖片

數據庫設計範式:

第一範式:每一列屬性都是不可分割的原子數據項(即每個屬性不能再分)。
案例:將地址分為省份、城市、區縣、詳細(街道門牌),四個不可分割部分。

第二範式:要求實體的屬性完全依賴於主關鍵字(即為每個實體建立唯一主鍵來區分)。
案例:學生信息表中,學號+課程→成績,成績無法完全依賴於主鍵學號。

第三範式:在2NF基礎上,任何非主屬性不依賴於其它非主屬性(在2NF基礎上消除傳遞依賴,減少數據冗余)
案例:員工信息表中,添加部門編號後,不可再添加部門名稱簡介等依賴部門編號的屬性。

BC範式:在3NF基礎上,任何非主屬性不能對主鍵子集依賴(在3NF基礎上消除對主碼子集的依賴)

三、物理設計

1、選擇合適的數據庫系統

2、定義數據庫、表及字段的命名規範

3、根據數據庫系統設置字段類型(優先數字類型,其次日期和二進制,最後字符串)

4、反範式化設計(方便查詢,提高效率)

列類型 存儲空間
TINYINT 1字節
SMALLINT 2字節
MEDIUMINT 3字節
INT 4字節
BINGINT 8字節
DATE 3字節
DARETIME 8字節
TIMESTAMP 4字節
CHAR(M) M字節,1<=M<=255
VARCHAR(M) L+1字節,L<M&&1<=M<=255

四、維護優化

1、維護數據字典

2、維護索引

3、維護的表結構

4、表的拆分(垂直、水平)

垂直拆分原則:將常用的字段與不常用的字段依據id主鍵拆分為兩個或多個表,減少表的寬度

水平拆分原則:將歷史或過期數據水平拆分成多個表,減少表的長度

數據庫設計入門