我想知道为多个用户设计数据库表的最佳方法,例如任何需要用户登录才能开始发布任何内容的网站。
我的代码是否应为每个用户或不同的用户创建单独的表?
答案 0 :(得分:1)
通常,所有用户都存储在一个表中,每个用户都在一个单独的行中。
基本列包括:user_id,user_name,user_password,dob,user_ip,avatar等......
我建议您查看现有的数据库结构,无论是论坛还是CMS,并注册一些测试帐户,看看它们是如何放入数据库中的。
答案 1 :(得分:0)
通常,您只需在任何需要引用用户的表中使用user_id
列。如果你想要更多细节,你必须更具体地说明你遇到的那类问题。
答案 2 :(得分:0)
基本上,您需要查看您正在使用的实体以及它们之间的互动方式。
如果我们考虑一个基本的例子,我们有一个简单的网站,注册用户可以在一个板上发布消息。这里我们的实体是用户和消息,每个用户可以发布许多消息(1:M关系)。因此,我们需要一个用户表和一个消息表。
此示例的表结构为:
Users(PK user_id, forename, surname, ... )
Messages(PK message_id, FK user_id (references Users), timestamp, message_text, ... )
然后,如果我们想扩展这个以便用户可以发布对消息的评论,我们就不能将评论存储在消息记录中,因为这将呈现多对多的关系(许多用户可以评论许多消息)并且需要序列化或其他什么,所以我们使用另一个表引用用户和消息的表。
Comments(PK comment_id, FK user_id (references Users), FK message_id (references Messages), timestamp, comment_text)
(PK - 主键,FK - 外键,...... - 您想要存储的任何其他内容)
上面我为了简单起见使用了代理主键,尽管为了规范化,你可以摆脱这些并使用复合键(比如消息时间戳,user_id和文本)。