我正在ASP.NET MVC中创建一个讨论论坛(各种),并且我有一个要求允许未注册的访问者发布帖子。访客只需要指定要发布的别名,并可以选择提供电子邮件地址和网站网址。数据库中的未注册用户
处理数据库中未注册用户的帖子的最佳做法是什么?
我有点在数据库设计一个新手,但这些方案浮现在脑海中:
- 插入新的用户表中的每个岗位未登记的访客记录。 (当Posts和Users表中的记录将具有1对1关系时,会使查询更容易,但会扩大Users表)
- 为未注册的用户创建新表,并为新的别名 - 电子邮件 - 网址组合创建新条目,重复使用现有的。 (在这种情况下,我将在Posts表中为RegisteredUserId和UnregisteredUserId有两个外键吗?)
- 直接将UnregisteredAlias,UnregisteredEmail和UnregisteredUrl字段添加到Posts表中。 (非常非规范化,但是这又对我来说似乎是一个干净的解决方案。然后,我会使Posts表的UserId字段为空,并将它设置为null(对于这些帖子))。
- 我还没有想到的显而易见的解决方案?
这些解决方案是否会导致映射LINQ To SQL时出现问题?
编辑:
为了澄清,我需要存储一个别名(名称),以及可选的电子邮件地址和网址由未注册访问者执行每个岗位。此信息与帖子一起显示,因此在这种情况下访客!=匿名。
他们还没有注册,但.... “有一个要求允许未注册的访问者发布帖子。” – BIDeveloper 2009-10-20 11:42:51
注册或未注册 - 他们是用户,他们的自然之家是用户表。 – 2009-10-20 12:07:25
@Jim - 是的,但即使未注册的用户也有一些关于它们的信息(Alias,EMail,URL)。除非您想在同一个未注册用户的每篇文章中复制此内容,否则最好的办法是将其存储在Users表中,并且有一个“标志”,用于指示Users表中的给定记录是已注册用户还是未注册用户。 – CraigTP 2009-10-20 12:10:52