九、規(guī)范數(shù)據(jù)庫設(shè)計
1.為什么需要設(shè)計姨蝴?
1)糟糕的數(shù)據(jù)庫設(shè)計:
①數(shù)據(jù)冗余,浪費空間肺缕。
②數(shù)據(jù)庫插入和刪除都會很麻煩左医、出現(xiàn)異常(屏蔽使用物理外鍵)授帕。
③程序的性能差。
2)良好的數(shù)據(jù)庫設(shè)計:
①節(jié)省內(nèi)存空間浮梢。
②保證數(shù)據(jù)庫的完整性跛十。
③方便開發(fā)系統(tǒng)。
3)軟件開發(fā)中秕硝,關(guān)于數(shù)據(jù)庫的設(shè)計:
①分析需求:分析業(yè)務(wù)和需要處理的數(shù)據(jù)庫需求芥映。
②設(shè)計概要:設(shè)計關(guān)系圖E-R圖。
4)設(shè)計數(shù)據(jù)庫的步驟: 以個人博客為例
①收集信息缝裤,分析需求屏轰。
Ⅰ用戶表(用戶登錄注銷、用戶的個人信息憋飞、寫博客霎苗、創(chuàng)建分類)
Ⅱ分類表(文章分類、誰創(chuàng)建的)
Ⅲ文章表(文章的信息)
Ⅳ友鏈表(友鏈信息)
Ⅴ自定義表(系統(tǒng)信息榛做、某個關(guān)鍵字或一些主字段)
②標識實體(把需求落實到每個字段)唁盏。
③標識實體之間的關(guān)系。
Ⅰ寫博客:user——>blog
Ⅱ創(chuàng)建分類:user——>category
Ⅲ關(guān)注:user——>user
Ⅳ友鏈:links
Ⅴ評論:user——>user——>blog
2.三大范式
為什么需要數(shù)據(jù)規(guī)范检眯?
不規(guī)范可能造成的問題:信息重復厘擂、更新異常、插入異常(無法正常顯示信息)锰瘸、刪除異常(丟失有效信息)
1)第一范式(1NF)
原子性:保證每一列不可再分刽严。
2)第二范式(2NF)
前提:滿足第一范式。
每張表只描述一件事情避凝。
3)第三范式(3NF)
前提:滿足第一范式和第二范式舞萄。
需要確保數(shù)據(jù)表中的每一列數(shù)據(jù)都和主鍵直接相關(guān),而不能間接相關(guān)管削。
(規(guī)范數(shù)據(jù)庫的設(shè)計)
參考博客園鏈接:https://www.cnblogs.com/wsg25/p/9615100.html
4)規(guī)范性和性能的問題
阿里規(guī)定:關(guān)聯(lián)查詢的表不得超過三張表倒脓。
①考慮商業(yè)化的需求和目標(成本、用戶體驗)含思,數(shù)據(jù)庫的性能更加重要崎弃。
②在考慮性能的問題的時候,需要適當?shù)目紤]一下規(guī)范性含潘。
③故意給某些表增加一些冗余的字段(從多表查詢變?yōu)閱伪聿樵儯?br>
④故意增加一些計算列(從大數(shù)據(jù)量降低為小數(shù)據(jù)量的查詢:索引)饲做。