MMTTMM
2018-12-06 11:25:42
怎樣刪除主鍵表的記錄卻不影響外見表相關內容,比如有2個表,分別為“員工表”和“消費明細表”,關聯。
員工表:
ID-----員工姓名
1----- test1
2------test2
消費明細表:
單號--------------------項目--------------服務員工
201401011-----------action1---------------1
201401012-----------action2---------------2
因為員工變動夠大,每當有員工離職j時就要對“員工表”相關記錄進行刪除,但如果我在“員工表”中刪除一條記錄,那么“消費明細表”對應的記錄就會級聯刪除,或外鍵設為為null,無論怎樣“消費明細表”信息都受損。是否有合適的方法去解決這類問題,消費明細表如何永久保存?一些大型系統是如何做的?
8 回答

MMMHUHU
TA貢獻1834條經驗 獲得超8個贊
一般系統的數據都應該不會物理刪除的
都只是一個status而已。
比如你把員工表建一個Status字段,0代表在職,1代表離職。
這樣子表數據你都不用動的(當然在離職的時候。你也可以把子表的數據設置為無效:也同樣加一個status字段)

夢里花落0921
TA貢獻1772條經驗 獲得超6個贊
1.給員工表加個狀態字段,標示 在職 還是 離職 不要做delete操作,只做update操作,你要的"刪除"其實改一下狀態即可。
2.關鍵數據庫表別搞外鍵什么的了,用代碼邏輯來控制

千巷貓影
TA貢獻1829條經驗 獲得超7個贊
從數據完整性上來講,“員工表”的記錄是不能刪除了,這會導致“消費明細表”記錄的描述不準確。抽象來說,當主表記錄被刪除后,從表記錄的存在將失去意義。
“消費明細表”記錄只是員工產生數據的一種方式,在該員工的工作期間,還會有社保信息、公積金信息和所做的項目信息,以及企業內部流程數據等等。一旦員工被真刪,以上所有信息將找不到“操作人”。
在任何系統里,“員工表”的記錄都不能被真刪,拓寬的講,進入了審核流程的業務數據也是不能真刪的(草稿類型的業務數據可以真刪)。
- 8 回答
- 0 關注
- 754 瀏覽
添加回答
舉報
0/150
提交
取消