2012-08-27 38 views
1

我有一個相對較大的數據庫應用程序,它擁有一個用戶表,併爲每個員工提供記錄。跨數據庫表?

我有另一個很小的數據庫,它是所有教職員工參加的教育課程的記錄。這個數據庫實際上只是從遺留應用程序遷移的一小部分表格,現在是獨立的。

這兩個應用程序除了用戶之外沒有什麼共同之處。

簡單地將較小的數據庫表導入較大的數據庫並更新應用程序,還是可以在關係中訪問/使用大型數據庫中的用戶表是「最佳」?

感謝

+0

你可以將大量和小的行數等同嗎? – StingyJack

+0

相對較大=約150張表,最大的有數百萬條記錄。小小的=大約20張桌子,有幾千條記錄。 – Danny

回答

3

假設小型數據庫永遠不會寫入大型數據庫,我會在小型數據庫上設置一個視圖,以提供所需的確切信息。如果兩個數據庫都託管在同一臺服務器上,則視圖可以通過指定表的全名(server.database.schema.table)從大數據庫中進行選擇,假定用戶具有適當的訪問權限。如果它們位於單獨的數據庫服務器上,則還需要設置鏈接的數據庫。

+0

因此,我可以簡單地在較小的數據庫中創建一個視圖,並對大數據庫表進行完全分隔的引用? – Danny

+1

這是正確的。 –

1

可以使用完全合格的名稱在另一個數據庫(在同一個服務器)訪問表:

<database name>.<schema>.<table name> 

您需要確保所使用的登錄具有正確的權限,雖然。

使用linked servers您還可以訪問不同服務器上的數據庫。

您必須記住,這會將一個數據庫連接到另一個數據庫 - 無論這個數據庫是否正確,取決於數據庫,應用程序以及它們的使用方式。

1

在幾個應用程序之間共享數據庫並不少見。假設沒有名稱衝突,只有20個小表我建議將較小的數據庫的表導入較大的表。

不必擔心依賴數據庫(或鏈接服務器)的管理和故障排除以及可能出現的所有安全和維護問題(以及完整性!),您可以擁有單個數據庫並緩解大多數潛在問題。