2012-02-11 99 views
0

我有一個數據庫模型,使用幾個表來保存業務邏輯數據;其中一個表格包含一個保存用戶ID的用戶表。代碼從這些表中讀取數據並生成應用程序中使用的json字符串。爲了避免重做查詢並重新創建json字符串,我將json字符串存儲在一個只有兩列的JsonCache表中:UserID和JsonCacheWork。每個用戶都有多個JsonCacheWork條目(作爲用戶交互結果添加條目)。爲什麼要鏈接數據庫表?

目前,我的數據庫關係圖與用戶表和JsonCache表之間沒有關係。它似乎工作正常。

爲什麼我需要/想要在兩個表格之間添加關係,以及保留我的DB圖表的原則是什麼,如果有的話。

感謝您的解釋。

+0

通過「數據庫圖表」,你是指數據集設計器,Visual Studio服務器資源管理器中的數據庫圖表,SSMS中的數據庫圖表還是其他內容? – 2012-02-11 20:54:57

+0

@ChrisShain:linq-to-sql ORM – frenchie 2012-02-11 21:25:13

回答

2

您添加表之間的關係告訴了數據庫管理系統的記錄這兩張表是相關的。 DMS可以強制執行這種關係,這意味着您不會因爲UserId不存在而將記錄添加到JsonCache表中。

另外,當另一個表中的相關記錄被刪除(級聯刪除)時,外鍵約束可用於自動刪除一個表中的記錄。所以,當你刪除一個用戶時,DMS會爲你刪除他在JsonCache中的條目。

Sql Server是一個關係數據庫和表之間的關係是數據庫模式的關鍵部分。他們幫助維護數據的完整性

+2

關係和關係是有區別的。 – 2012-02-11 20:57:38

+0

不會有關係提高性能? – frenchie 2012-02-11 21:25:48

+0

@frenchie:只是稍微。任何關係或其他約束都意味着需要執行的性能略有下降。但是沒有他們,你會失去誠信。 – 2012-02-11 21:29:22

1

如果這兩個實體之間存在多對多關係,那麼您將不得不在兩者之間建立連接表。我會說,因爲用戶和JSON是一對一的,所以我會質疑使用兩個單獨的實體。我把JSON放在用戶表中,並簡單地通過用戶ID來查詢它。我沒有看到爲JSON提供兩列的單獨表格的原因。

我可能會改變我的腦海裏,如果JSON有一個保質期:有效日期和到期日期,歷史上爲單個用戶等

+0

會發生什麼是當用戶註銷時刪除json字符串,因此本質上該表非常小,因爲它只包含登錄用戶的數據。每個用戶將在該緩存表中有多個記錄,所以我需要將數據放在不同的表中(即不是用戶表)。 – frenchie 2012-02-11 21:23:11