關於數據庫設計的人員離職管理(你們都會碰到哦!!!)


由於是數據庫關聯的問題,如要保留此人原先的數據,那么這個人的信息就不能刪除了
這樣就會出現一個問題,在錄入數據的時候,這個離職的人就一直會存在

舉個例子,由於人員太多,用人員編碼來錄入不方便(人太多了,錄入的人記不住)要錄入關於人員的信息時候采用是把數據按部門填入到下拉列表了,讓錄入的人來選擇,問題就在這里,如果這個人離開了企業,但是他的個人信息還在數據庫,下拉列表里還會出現這個人的名字了!!!!!!

我的做法是給這個人加個字段信息,離職否,如果離職了,就不把此人的信息填入到下拉列表了,不知道大家都是用什么方法來解決的,大家說說哈



還有一個問題,一般都把人員的id做為主關鍵字和外關鍵字,這樣如果這個id被某個人用了,就不能被其他人用了,比如001,現在我想把001給新來的人用怎么辦呢???
我的做法用級連更新,把原先人的id改成另外一個,比如999,然后把001給新來的人用,不知道大家用什么辦法,大家都討論一下,呵呵

10 个解决方案

#1


第一個問題樓主正解

“現在我想把001給新來的人用怎么辦呢???”
這樣的ID不適合做主鍵

另外弄一個標識做主鍵和外鍵

#2


做個觸發器應該要簡單些吧~!

#3


其實我感覺用觸發器有時在搞破壞,主要是使得的程序的靈活性和可變性很差

以前搞過的,后來發現程序和數據要改很多,改得時候才發現完了,由於有很多觸發器,經常往數據庫里數據做些處理就觸發觸發器造成一些想不到的結果。
比如算好往a表做些操作,就往b表做些操作
后來改得時候發現要往a標做些操作,而不往b表操作,就不行

主要是觸發器使得數據表操作性的靈活性變得很差,那種情況可以用程序控制,用事務來保證數據的一致性



后來的那個東西,我幾乎是推倒重來一遍阿,血的教訓

#4


這個就是數據分析和數據庫的設計問題了。

每個人一條記錄,每條記錄有一個狀態,比如0表示無效,1表示有效,2表示離職。這樣不是可以解決了麼?

還有一個問題是已經從這個企業離職人員,以後他還可以進來。那麼他再進來時要給他一條新的人員信息記錄,不能用原來的記錄。

#5


還有每個只有一個id,這個id用後,以後永遠再也不能夠有人使用,這個便於以後查詢離職人員。

#6


看你那個人數的多少而設計每個人的工號位數,如果是4位的,從1001開始;如果是5位的從10001開始,一般不要從1開始,那樣做工號位數整齊。

這就是我的建議

#7


第一個問題樓主正解

“現在我想把001給新來的人用怎么辦呢???”
這樣的ID不適合做主鍵

另外弄一個標識做主鍵和外鍵
------------------------------------------------
那在程序中怎么實現呢?

如果用001做主鍵,那么在輸入一個001,就可以通過這個主鍵等到這個姓名

如果001不是主鍵,那么在錄入的時候你錄一個001,有可能就會有兩個以上姓名與其對應,怎么決定你敲一個001,就可以出現唯一的姓名呢????

#8


哈哈,受教了,其實那次在試用觸發器的時候就被搞暈了~~!

#9


1。我是這樣做的:
   設字段:
   離職日期(Vachar(10))默認值('')
   離職人員將其離職日期強制轉換成格式化字符串保存
   這樣既可以通過 離職日期='' 條件篩選在職人員
   也可以追溯離職人員的離職日期

2。同意一樓:
   我們在數據庫設計當中,絕大多數表
   都有一個抽象字段:ID(標識/自增1)
   它沒有任何現實意義,僅僅起標識作用
   樓主應該另設字段:工號 來給員工編號

#10


1同一樓主
2.用自動編號作主鍵,不要采用自己的id做

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com