資料庫是網路應用的基礎,良好的表結構設計,對整個應用起著至關重要的作用。 資料庫設計的步驟: 1.需求分析:數據是什麼,有哪些屬性,數據和屬性的特點 2.邏輯設計:使用ER圖對資料庫進行邏輯建模 3.物理設計:選擇資料庫系統,並對邏輯設計進行轉化 4.維護優化:追加,分拆等 實例演示(電子商務網站) ...
資料庫是網路應用的基礎,良好的表結構設計,對整個應用起著至關重要的作用。
資料庫設計的步驟:
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主鍵拆分為兩個或多個表,減少表的寬度
水平拆分原則:將歷史或過期數據水平拆分成多個表,減少表的長度