数据库的设计原则
1.三大范式
第一范式(確保每列保持原子性);
第二范式(確保表中的每列都和主鍵相關,避免低級冗余);
第三范式(第二范式的基礎上,確保非主鍵之間不存在依賴關系,避免高級冗余和低級冗余)。
高級冗余:派生字段;低級冗余,別的表也有的字段。
?
?
2.OLTP(Transactional)還是 OPAP(Analytical)
OLTP關注數據的CRUD。
OLAP關注數據分析、報表、趨勢預測。“插入” 和 “更新” 操作相對比較少。目的是更加快速地查詢、分析數據。
3.不用絕對遵循“避免冗余”
如果對性能有迫切的需求,考慮一下打破常規。常規情況下你需要做多個表的連接操作,而在非常規的情況下這樣的多表連接是會大大地降低性能的。
4.若兩個實體之間存在多對多的關系,則應消除這種關系。消除的辦法是,在兩者之間增加第三個實體。這樣,原來一個多對多的關系,現在變為兩個一對多的關系。
eg:在“圖書館信息系統”中,“圖書”和“讀者”。一本書被多人借閱,一個借多本書。要在二者之間增加第三個實體,該實體取名為“借還書”,屬性為:借還時間、借還標志(0表示借書,1表示還書),兩個外鍵(“圖書”的主鍵,“讀者”的主鍵)。
5.主鍵與外鍵在多表中的重復出現,不屬于數據冗余。非鍵字段的重復出現, 是一種低級冗余,即重復性的。高級冗余不是字段的重復出現,而是字段的派生出現。
總結
- 上一篇: [翻译] python Tutorial
- 下一篇: 解决mysql表被crash的一次维护始