數據庫設計之物理刪除與邏輯刪除

物理刪除存在的問題:

1.歷史數據關聯不到刪除的記錄了。

假如A關聯了B,如果物理刪除了表記錄B,那麼A關聯B的就會查詢不到B的信息了。

比如之前查詢A詳情能查詢到關聯的B的數據,有一天B刪除了,A再次查詢詳情查詢不到關聯的B的數據了。

2.級聯刪除存在問題。

假如需要級聯刪除,那麼刪除B就需要先關聯A的所有記錄,這樣是不可行的。

比如刪除商品,就需要刪除所有關聯此商品的訂單。

======

思考及總結:

1.要麼像hibernate那樣,作爲外鍵且被關聯的有記錄的,校驗不讓刪除B。(感覺業務要判斷好多表,也不知道哪個表關聯了B。)(回到商品與訂單的級聯刪除問題,這種方式不可取,我要刪除某個商品,難不成必須得刪除所有關聯此商品的訂單?)
2.要麼B物理刪除再加一個歷史表。(幾乎每個表都會多出一個歷史記錄表)
3.要麼邏輯刪除。(增加一個delete_flag標識)

======

 邏輯刪除存在的問題:

1.唯一索引。

 2.數據表冗餘刪除的記錄,導致查詢緩慢。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章