2011-01-19 65 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