2013-08-21 41 views
0
Table employee 
{ 
employeename //employeename is unique 
} 

Table job 
{ 
jobid,job,assignedPerson,status 
} 

assignedPerson是一個外鍵引用employeename(員工)
我想是要知道如何刪除僱員記錄,而不必從作業表即我刪除了他的紀錄意思是我想保住這份工作記錄,看看哪些人被分配即使那人不再是一個員工的工作..外鍵可選配

Table employee 
{ 
employeename 
} 

Table jobemployee 
{ 
jobid,assignedPerson 
} 

Table job 
{ 
jobid,job,status 
} 

即使我這樣做,我將不得不如果要刪除jobemployee記錄我想從「員工」表中刪除員工的記錄,並且不能知道哪個人被分配了工作..
請幫忙..

+0

您必須在作業表中創建一個將存儲員工姓名的列,或者創建一個專用表來存儲員工的姓名和密鑰,並在刪除某條記錄時創建一個鏈接。 – guisantogui

+0

如果我從assignedPerson中刪除外鍵約束,那麼我該如何使用employee表來顯示存儲在其中的所有記錄並使用戶選擇記錄呢?所選記錄必須來自員工表中的一條記錄。然後我將選定的employeeName添加到assignedPerson中,以便執行特定的工作。因此,指派的人員必須是員工表記錄中的一員。因此即使我刪除了外鍵約束,也不會有任何問題。正確?並且很容易刪除僱員記錄,並且仍然在'工作表中保留assignPerson記錄..對嗎? – ash

+0

刪除外鍵和刪除員工記錄將回來困擾你。您在問題結束時自己描述問題。名稱上的獨特約束也不一定是個好主意。 –

回答

1

最好的選擇是給Employee表添加一個標誌deleted

解決方法是將assignedNonEmployee列添加到job表中。在刪除employee之前,請將assignedPerson列設置爲null,並將其值複製到assignedNonEmployee列中。由於後面的列沒有外鍵約束,因此您現在可以刪除employee記錄。

+0

聽起來不錯..謝謝.. :) – ash

+0

如果我從assignedPerson中刪除外鍵約束,我使用employee表顯示存儲在其中的所有記錄並使用戶選擇一條記錄,該怎麼辦?所選記錄必須來自員工表中的一條記錄。然後我將選定的employeeName添加到assignedPerson中,以便執行特定的工作。因此,分配的人員必須是員工表記錄中的一員。因此,即使我刪除外鍵約束,也不會有任何問題。正確?並且很容易刪除僱員記錄,並且仍然在'工作表中保留assignPerson記錄..對嗎? – ash

+0

在你的情況下,這似乎是適當的。但是,刪除約束會導致不一致,如員工在工作中的姓名與員工表之間不匹配。這就是爲什麼不推薦。 – Andomar