優(yōu)良的數(shù)據(jù)庫(kù)設(shè)計(jì)
- 減少數(shù)據(jù)冗余
- 避免數(shù)據(jù)維護(hù)異常
- 節(jié)約存儲(chǔ)空間
- 高效的訪問(wèn)
數(shù)據(jù)庫(kù)設(shè)計(jì)步驟
1. 需求分析 2. 邏輯設(shè)計(jì) 3. 物理設(shè)計(jì) 4. 維護(hù)優(yōu)化
需求分析
數(shù)據(jù)是什么?有哪些屬性?數(shù)據(jù)和屬性各自的特點(diǎn)有哪些?
- 系統(tǒng)中所要存儲(chǔ)的數(shù)據(jù)
- 數(shù)據(jù)的存儲(chǔ)特點(diǎn)
- 數(shù)據(jù)的生命周期
要搞清楚的一些問(wèn)題
- 實(shí)體及實(shí)體間的關(guān)系(1對(duì)1,1對(duì)多租谈,多對(duì)多)
- 實(shí)體所包含的屬性有什么
- 哪些屬性或?qū)傩缘慕M合可以唯一標(biāo)識(shí)一個(gè)實(shí)體
邏輯設(shè)計(jì)
使用ER圖對(duì)數(shù)據(jù)庫(kù)進(jìn)行邏輯建模
- 將需求轉(zhuǎn)化為數(shù)據(jù)庫(kù)的邏輯模型
- 通過(guò)ER圖的形式對(duì)邏輯模型進(jìn)行展示
- 同所選用的具體的DBMS系統(tǒng)無(wú)關(guān)
關(guān)系 一個(gè)關(guān)系對(duì)應(yīng)通常說(shuō)的一張表
元祖 表中的一行即為一個(gè)元祖
屬性 表中的一列即為一個(gè)屬性
候選碼 表中的某個(gè)屬性組,它可以唯一確定一個(gè)元祖
主碼 一個(gè)關(guān)系有多個(gè)候選碼,選定其中一個(gè)為主碼
域 屬性的取值范圍
分量 元祖中的一個(gè)屬性值
第一第二第三范式
1NF. 第一范式 屬性不可再分割
2NF. 第二范式 滿足1NF,且消除非主屬性對(duì)碼的部分函數(shù)依賴
3NF. 第三范式 滿足2NF,且消除非主屬性對(duì)碼的傳遞函數(shù)依賴 【即屬性不依賴于其它非主屬性】
BCNF. BC范式 滿足3NF适掰,且消除主屬性對(duì)于碼的部分與傳遞函數(shù)依賴
另解
1NF:字段是最小的的單元不可再分
2NF:滿足1NF,表中的字段必須完全依賴于全部主鍵而非部分主鍵 (一般我們都會(huì)做到)
3NF:滿足2NF,非主鍵外的所有字段必須互不依賴
BCNF:滿足3NF,消除表中的多值依賴
物理設(shè)計(jì)
根據(jù)數(shù)據(jù)庫(kù)自身的特點(diǎn)把邏輯設(shè)計(jì)轉(zhuǎn)換為物理設(shè)計(jì)
1.選擇合適的數(shù)據(jù)庫(kù)管理系統(tǒng)
2.定義數(shù)據(jù)庫(kù)、表及字段的命名規(guī)范
3.根據(jù)所選的DBMS系統(tǒng)選擇合適的字段類型
維護(hù)優(yōu)化
新需求建表,索引優(yōu)化攻谁,大表拆分