在數據庫設計中,我們進行垂直分表或者是某些業務場景需要分多個表但是又得使這些表有聯繫的, 就必須設立一個關聯字段讓兩個表關聯。
這樣就產生了表關係,有一對多 一對一 多對一 多對多等。
一對多,一個用戶對應多個賬戶類型,一個用戶對應多個訂單,多個購物車 等
一對一,這種在一個表字段太多,垂直分表常見,或者 需要分表滿足特殊功能
多對一,多個商品對應一個購買或者獎勵規則,多個用戶對應同一種類型用戶,消息推送分組等
多對多 ,權限配置,權限表,職位表,用戶表
1,在大型系統中(性能要求不高,安全要求高),使用外鍵;在大型系統中(性能要求高,安全自己控制),不用外鍵;小系統隨便,最好用外鍵。
2,用外鍵要適當,不能過分追求
3,不用外鍵而用程序控制數據一致性和完整性時,應該寫一層來保證,然後個個應用通過這個層來訪問數據庫
注 (主外鍵主要是爲了保證程序無法保證的數據完整和一致性 。但是 對於系統性能有影響 , 操作錶慢,刪除表數據時有外鍵刪除不了 )
4 用mybatis持久化系統寫sql最好用聯查代替子查詢
5 用到hibernate持久化系統主外鍵不能亂刪