加入表格或重复数据?

时间:2011-01-19 18:56:52

标签: database database-design schema

我正在寻找实际的实现: 用例就是这个 - >我将用户登录详细信息(模式,会话,浏览器,操作系统等)存储在会话表中。我有一个活动表,我跟踪FK到会话表的活动。

现在,当用户在“创建照片”这样的对象上进行活动时,我想要包含所有细节,例如用户用来上传图片的浏览器,他的IP地址等。所以所有字段都在会话表。

在美好的一天,您通常会使用照片表FK session_Id并加入以获取该数据。但是如果我在照片和每个对象表中复制相同的6-7个colunms以防止连接/ FK呢?

我想了解大型用户内容网站在现实世界中的作用。

1 个答案:

答案 0 :(得分:1)

如果您不期望在会话期间更改详细信息(浏览器,IP地址等),为什么要复制数据?只需将每张照片(或更一般地说,每个活动实例)与上传的session_id相关联。

另一方面,如果您希望更改详细信息,但是一旦有人登录(可能发生这种情况 - 想到有人在网络1上登录您的网站时有新的IP地址,请睡一下他们的笔记本电脑,移动到一个新的网络,然后取消睡眠,这样即使IP地址发生变化,他们的浏览器也会保留cookie,我会:

  • 将这些视为不同的会话或

  • 创建一个CLIENT_INFO表并生成 它是与SESSION的1:M关联,所以 你可以保持一个逻辑 会话,但支持多个CLIENT 实例

如果我是你,我真的需要这些细节,我可能会做后者。