2015-04-25 49 views
0

據我的理解,不可能在來自兩個不同數據庫的表之間強制引用活動(和級聯更新)(即使表中的所有表都在分裂後面 - 結束)這是正確的嗎?微軟訪問關係:參照完整性不同數據庫鏈接表

如果您的表格設置正確(IE全部歸一化),是否有必要強制引用活動?我問,因爲如果前端使用(比方說)組合框從部門表中獲取行源,並且控制源將外部關鍵字(IE部門ID)存儲在employee表中,那麼爲什麼參考完整性是關鍵執行呢?

IF的確很重要,然後我是絕對必須找到一種方法來強制執行來自不同的數據庫文件表之間的參照完整性..必須有一個辦法......

最後,將修復是保持所有後端表在一個單一的數據庫文件?基本上每個數據庫都使用Employee表和Department表......但其餘表通常只與在特定前端數據庫中使用的其他表相關。

回答

1

引用完整性並不是真的引用查找表,它是關於父/子表或某種類型的重要關係,它們應該始終在同一個數據庫中。無論您是否使用RI,您的桌面應始終設計爲最適合應用程序。

重點在於相關表具有另一個表指向的密鑰ID,並且如果該相關記錄受到影響,則不會破壞該關係。查找表可以被構建爲具有唯一標識符,因此如果原始記錄丟失,並且添加了新的記錄,即使密鑰已更改,唯一標識符也不會因爲您將其重新放入。

作爲一般規則,如果一個表中的記錄依賴於另一個表中的記錄,則需要參照完整性,並且它們必須位於同一個數據庫中。這樣,數據庫本身就執行,程序員不必這樣做。

+0

謝謝taxidev。這主要回答我的問題。讓我澄清一下,以確保: 即使我有兩個不同的'前端'數據庫,讓我們說一個用於會計,另一個用於...薪水,如果他們都使用員工表和部門表,那麼來自這兩個連接到這些公共表的所有表應該位於相同的後端數據庫中。 - 儘管從前端角度來看它們並不相關。 (?) –

+0

是的,所有相關的表格,無論它們在前端如何使用,都應該放在同一個數據庫中。 – taxidev