2011-01-19 23 views
0

我正在尋找真實世界的實現: 用例就是這樣 - >我將用戶登錄詳細信息(模式,會話,瀏覽器,操作系統等)存儲在會話表中。我有一個活動表,我跟蹤活動FKs會話表。連接表或重複數據?

現在,當用戶在諸如「創建照片」之類的對象上進行活動時,我想包括所有的細節,例如用戶用來上傳圖片的瀏覽器,他的IP地址等等。在會話表中。

在美好的一天,您通常會使用照片表FK session_Id並加入以提取該數據。但是,如果我在照片和每個對象表中複製相同的6-7列以防止連接/ FK?

我想知道在大型用戶內容網站上真實世界中的作品。

回答

1

如果您不希望在會話期間更改詳細信息(瀏覽器,IP地址等),爲何要複製數據?只需將每張照片(或更一般地說,每個活動實例)與其上傳的session_id相關聯即可。另一方面,如果您希望某人登錄後可以更改詳細信息(可能會發生這種情況 - 想想有人在他們登錄到網絡1上的網站時擁有新的IP地址,請將其筆記本電腦,移動到一個新的網絡,然後取消睡眠,使得它們的瀏覽器保留了餅乾,即使IP地址更改),我要麼:

  • 對待那些不同的會話或

  • 創建一個CLIENT_INFO表並使其與1:M關聯,因此 您可以維護一個邏輯 會話,但支持多個CLIENT 實例。

如果我是你,我真的需要這些細節,我可能會做後者。

+0

它不會改變一次記錄。但接下來的問題是,拉出說IP地址(這些將在網站上顯示,以供其他人在頁面加載時看到)系統必須始終與會話表一起加入以獲取數據。我試圖阻止任何連接發生流暢的流動,因爲連接會降低性能。 – JonnyK 2011-01-19 19:18:03