2013-01-04 64 views
0

我有一個數據庫和編輯數據庫參照表沒有外鍵約束

我與被叫地址的地址表(ID,STREETID,NUMBER)

我有街道的表的應用程序名字叫做STREET(ID,STREETNAME,CREATIONUSERID)

我也有我的用戶表被叫用戶

在我的表STREET街道名稱已經填滿(ID,用戶名,密碼)。 該表格被用戶用作查找表 ,以在我的應用程序 某處輸入地址(字段ADDRESS.STREETID),但有時用戶必須輸入新街道 ,該街道將被插入到STREET以供進一步使用。 當用戶向我的表格添加街道時,我希望能夠 跟蹤哪個用戶進行了添加。

現在有2個選擇,我想想:

1:創建一個虛假的用戶其中STREET 的默認街道將把然後創建一個外鍵約束 (STREET.CREATIONUSERID即是指USER.ID)用於創建

第二屆新街道:不創建外鍵約束,離開CREATIONUSERID空 街頭的默認街道和更新只爲創造新的 街道跟蹤每個添加的用戶

哪個更好,爲什麼?

回答

3

這是更好地利用國外key.It將強制實施參照完整性

Check the link for the advantages of foreign key

+0

謝謝你的鏈接。讀它,我只是意識到一個外鍵可以有NULL值,所以這對我來說是最好的解決方案。我將爲CREATIONUSERID創建一個外鍵約束,同時使它成爲'可空' –

0

當系統的某些用戶停止爲一個用戶時,你打算做什麼,並且必須從USER表中刪除?

+0

我也有一個場USER.STATUS這是用戶的狀態的標誌。如果用戶必須刪除,我會將其設置爲「已刪除」。通過這種方式,我保持了這個用戶的歷史,同時使他無生氣。 –