0

我有一个自由 Web 应用程序,可让用户注册活动。在我的数据库中,我有一个 t_events_applicants 表,其中包含 t_events_applications.user_id 列,外键约束链接到 t_users.user_id 列。所以这意味着只有注册了我的 Web 应用程序的用户才能注册我的 Web 应用程序的事件。

我的客户现在希望允许未注册用户,即在我的 t_user 表中没有条目的用户注册事件。这些非注册用户只需要提供他们的姓名和电子邮件地址即可注册活动。

我应该创建一个包含列名称和电子邮件的 t_temporary_user 表,然后删除 t_events_applicants.user_id fk 约束吗?或者我应该将未注册的用户添加到 t_user 表中,然后添加一个名为 t_user.type 的列,其中类型可以是“已注册”或“未注册”?

我如何决定采用哪种方法?

很多时候,我对任何一种方法都犹豫不决。我问自己,“如果以后允许一个临时用户成为一个完全注册的用户怎么办?那么也许我应该只有一个 t_user 表。但是我也不觉得存储很多临时用户好在 t_user 中。”

4

3 回答 3

2

那基本上不是一个角色吗?

创建一个 users 表,给他们一些角色(many to many users_roles)。
在角色表中,您将添加一个角色,该角色允许在您的网站的其余部分注册事件和角色以获得各种权限。
这样就很容易将仅事件用户提升为成熟用户(添加正确的角色),并且以后可以添加其他内容(其他事件、特殊订阅等)。
无论如何,您很可能已经有了这样的系统。

于 2010-03-09T12:48:16.200 回答
0

我会采用您的第二种方法:将它们添加到同一个表中,但使用 Type 列。如果您创建两个用户表,则必须始终检查两者以查找用户等。对于两个表,您将如何约束用户对其创建的内容?保持简单,他们是用户,只是不同的类型。

如果用户(或其他)表中有 CreateDate 或 LastLogin 日期,则可以在一定时间后删除临时用户。

于 2010-03-09T12:41:56.720 回答
0

鉴于新的系统要求,听起来注册用户与非注册用户已成为一种错误的区分。我会把它们放在一张桌子上。将网站注册信息保存在单独的表格中。您甚至不需要组合表中的类型列,因为您可以确定用户是否通过 JOIN 注册到站点注册表。

于 2010-03-09T12:53:38.300 回答