2010-05-25 41 views
1

我的Web應用程序中有很少的字符串列表,我不知道在DB或只是類中存儲的位置。存儲在數據庫中還是不存儲?

即。我有7個主要的瀏覽器用戶進入該網站。我想保存這些統計數據,因此我需要在UserLogin數據庫中創建瀏覽器列。我不想浪費空間和資源,因此我可以在每個登錄行中保存完整的瀏覽器名稱。所以,我要麼需要保存browserID字段,並將其與瀏覽器表掛鉤,這將存儲名稱後面的數據庫規範化規則或具有排序的Dataholder抽象類,其中有一個瀏覽器列表,我可以通過它的ID檢索瀏覽器名稱...

問題該怎麼辦?這幾個數據列表每個包含不超過200個項目,所以我認爲把它們作爲抽象類是有意義的,但是我不知道MS-SQL是否會很好地處理多個連接。想想想法時,我有國家,IP,語言,瀏覽器和幾個統計用戶..

感謝

回答

1

我一直在這個圍欄的兩邊。

我的經驗法則是:

如果這些名單的變化之一,將我所要做的修改代碼,太?

(例如:你的情況,如果有人寫道:「另一個瀏覽器」明天,我需要編寫一個迎合它的代碼?)

如果答案是「最有可能是」或「肯定「你可以把它留在代碼中。 在所有其他情況下(甚至只是「50%-50%」),您最好將其放入數據庫或至少屬性文件中。有基於此數據提供的統計數據(如:「有多少用戶使用資源管理器」),你最好把它放在DB反正:它成爲你的域數據的一部分,因此它必須有


關於。 「域數據」部分

存儲在數據庫中的信息是應用程序的「域數據」,從某種意義上說,它是一個(希望一致的)表示你的應用程序的內容 - 它代表你的應用程序的「已知的宇宙」。 如果你同意這個定義,那麼你還必須接受:在數據庫中有99.9%的「現實」沒有意義,而在其他情況下只有0.1% - 如果沒有其他的話,它會使一些操作變得麻煩您只能存儲smallint,您無法使用類將其解碼爲「Firefox」中的「1」或爲最終用戶提供其他密鑰來對其進行後處理,而無法創建有意義的報告)。 這也使你不可能利用一些固有的數據庫技術,如外鍵(如果你只是使用smallint而不將它與任何其他表相關聯,誰保證「10」在你的域中是可接受的值?)

+0

我不明白「域名數據」是什麼意思?當然,我會使用不同的統計數據,但只有tinyint將存儲在數據庫中,而實際名稱將在類內... 感謝您對其餘的建議。像瀏覽器,國家,語言等數據不會經常改變。所以還有另一個理由讓它在課堂上... – eugeneK 2010-05-25 12:27:23

+0

編輯答案試圖澄清一點更好。 – 2010-05-25 13:49:40

1

MS SQL處理多個連接得很好;這取決於你想要存儲數據的位置。作爲另一種選擇,您也可以考慮使用XML。我會考慮數據庫或XL;與數值在代碼中相比,更改值更容易(必須在生產時重新編譯/部署才能更改)。

HTH。

+0

另一個原因爲什麼我想要抽象類是因爲,例如用戶輸入網站,然後我需要存儲他的登錄,所以我需要得到所有這些小列表的ID之前,我插入登錄信息,這將需要許多小型SQL查詢或將它們全部組合成一個巨大的存儲過程。 我不喜歡這個想法......這是我想切換到代碼內的列表的主要原因。 – eugeneK 2010-05-25 12:23:38

相關問題