天天看點

資料庫設計總結(面試官都饞哭了)

一、合理設定字段

在設計表是有個原則,在保證業務的基礎上讓字段盡可能小,能用INT就别用BIGINT,因為mysql的innoDB引擎索引結構是B+樹,它的非葉子節點儲存的是索引和指針,節點容量是固定的(16k),指針大小也是固定的(6位元組),是以索引占用位元組越少,就能讓b+樹的節點儲存更多元素;

還有就是字段盡量設定成NOT NULL,這樣mysql在檢索資料的時候就會少做NULL判斷,進而更好地發揮索引效果。

二、合理設計表結構

其實就是三範式:

第一範式:屬性(字段)的原子性限制,要求屬性具有原子性,不可再分割;

比如個人資訊,個人資訊不能作為一個字段,它可以再分為name、age、sex等;

第二範式:記錄的惟一性限制,要求記錄有惟一辨別,每條記錄需要有一個屬性來做為實體的唯一辨別;

第三範式:字段備援性的限制,即任何字段不能由其他字段派生出來;主鍵沒有直接關系的資料列必須消除,消除的辦法就是再建立一個表來存放他們,當然外鍵除外;

當然,三範式隻是一個規範,實際生産中不一定必須遵循

比如公司資産清點表:名稱、單價、數量、總價;

這是違背了第三範式的,因為總價可以通過單價*數量得出

但是像這種結構我們是可以接受的,如果需要直接查詢總價,就不用再單獨計算,隻是多了一個字段而已;

三、合理利用索引

索引雖然能大幅度提升查詢效率,但是也有副作用:

1、額外增加索引檔案;

2、讀雖然快了,但是寫會變慢;

注意事項:

索引字段應盡可能的小,尤其是主鍵;

如果有組合索引,注意最左比對原則;

針對長字元串型字段,盡量用字首索引;

如果有二級索引,注意避免回表查詢;