一、設(shè)計表示常會思考的問題
- 用戶都需要什么數(shù)據(jù)?
- 需要在數(shù)據(jù)表中保存哪些數(shù)據(jù)?
- 哪些數(shù)據(jù)是經(jīng)常訪問的數(shù)據(jù)?
- 如何提升檢索效率?
- 如何保證數(shù)據(jù)表中數(shù)據(jù)的正確性龄砰,當(dāng)插入盟猖、刪除讨衣、更新的時候該進(jìn)行怎樣的約束檢查?
- 如何降低數(shù)據(jù)表的數(shù)據(jù)冗余度,保證數(shù)據(jù)表不會因為用戶量的增長而迅速擴(kuò)張?
- 如何讓負(fù)責(zé)數(shù)據(jù)庫維護(hù)的人員更方便地使用數(shù)據(jù)庫?
二式镐、“三多一少” 原則 ---- 簡單可復(fù)用
1.核心思想
- 簡單
指的是用更少的表反镇、更少的字段、更少的聯(lián)合主鍵字段
來完成數(shù)據(jù)表的設(shè)計娘汞。 - 可復(fù)用
則是通過主鍵歹茶、外鍵的使用來增強(qiáng)數(shù)據(jù)表之間的復(fù)用率。因為一個主鍵可以理解是一張表
的代表你弦。鍵設(shè)計得越多惊豺,證明它們之間的利用率越高。
2.三多一少
1.數(shù)據(jù)表的個數(shù)越少越好
RDBMS 的核心在于對實體和聯(lián)系的定義禽作,也就是 E-R 圖 (Entity Relationship Diagram)尸昧,數(shù)據(jù)表越少,證明實 體和聯(lián)系設(shè)計得越簡潔领迈,既方便理解又方便操作彻磁。2.數(shù)據(jù)表中的字段個數(shù)越少越好字段個數(shù)越多
數(shù)據(jù)冗余的可能性越大。設(shè)置字段個數(shù)少的前提是各個字段相互獨立狸捅,而不是某個字段的取值可以由其他字段計算出來衷蜓。當(dāng)然字段個數(shù)少是相對的,我們通常會在數(shù)據(jù)冗余和檢索效率中進(jìn)行平衡尘喝。3.數(shù)據(jù)表中聯(lián)合主鍵的字段個數(shù)越少越好
設(shè)置主鍵是為了確定唯一性磁浇,當(dāng)一個字段無法確定唯一性的時候,就需要采用聯(lián)合主鍵的方式(也就是用多個字段來定義一個主鍵)朽褪。聯(lián)合主鍵中的字段越多置吓,占用的索引空間越大,不僅會加大理解難度缔赠,還會增加運行時間和索引空間衍锚,因此聯(lián)合主鍵的字段個數(shù)越少越好。4.使用主鍵和外鍵越多越好
數(shù)據(jù)庫的設(shè)計實際上就是定義各種表嗤堰,以及各種字段之間的關(guān)系戴质。這些關(guān)系越多,證明這些實體之間的冗余度越低踢匣,利用度越高告匠。這樣做的好處在于不僅保證了數(shù)據(jù)表之間的獨立性,還能提升相互之間的關(guān)聯(lián)使用率离唬。