一、 三範式
主鍵: 創建表時可以不設置主鍵 , 但是沒有設置主鍵的表 , 底層會認爲所有的鍵都是主鍵 ,所以在創建時使用了所有的字段創建索引 , 在查詢時索引的存在幾乎沒有意義 。
複合主鍵: 兩個或兩個以上的字段作爲評價一條數據記錄的唯一性標誌 。
第一範式:
- 強調列的原子性 , 即:列不能分成幾列
- 只要是關係型數據庫 , 就自然的遵循第一範式
第二範式:
- 首先滿足第一範式
- 必須有主鍵
- 沒有包含在主鍵中的列必須完全依賴於主鍵, 而不能只依賴主鍵的一部分
第三範式:
- 首先滿足第一範式
- 也屬於第二範式的一種情況
- 任何非主鍵字段不能依賴於其他非主鍵字段
三範式是在數據庫初期使用(時間換取空間) , 能外鍵關聯就外鍵關聯 , 能不冗餘數據設計 , 就不冗餘。
但是現在的系統對性能要求高, 對存儲要求低(空間換時間)
二、 反範式
- 但是現在的系統對性能要求高, 對存儲要求低(空間換時間) , 所以出現了一套反範式
- 反範式: 只要違反了第二範式和第三範式 , 就能做到空間換時間 , 獲的最大的效率 。