基于用户的网站的mySQL表结构

时间:2010-02-02 17:14:22

标签: php mysql sql database database-design

我正在开发一个网站,其中包含用户个人资料,帐户,帐户设置,收件箱等,就像Facebook或LinkedIn一样,我想知道如何为它设置mySQL表。

我应该为每个功能(个人资料,收件箱等)为每个用户创建一个表吗?

3 个答案:

答案 0 :(得分:4)

你真的需要考虑你在关系方面放入数据库的所有事情(如其他海报所述)。在示例中,您为用户提供了与邮件之类的一对多关系,他们将与用户个人资料建立一对一关系,并且将与许多用户居住在一个城市的“位置”之类的内容建立多对一关系。

在设计数据库时,请始终问自己需要构建哪种关系类型,并尝试在不需要时从不复制多个表中的数据。

当您设置类似用户表的内容时,请确保每行等于用户(而不是每个用户都是表),并且每行都有唯一的自动增量ID。此用户ID(由MySQL生成)将成为您在其他表中用于将数据链接在一起的引用。

因此,当您设置邮件表时,您可能有15行包含电子邮件数据,但这些行中的每一行都将包含一个名为 user_id 的字段,该字段将包含该用户的唯一ID用户表。

开始熟悉LEFT JOIN之类的东西 - 这就是你如何运行单个查询,例如,一次获取用户的数据和所有电子邮件。

答案 1 :(得分:0)

您不会为每个用户创建一个表。

您将为每个用户创建一条记录和一个唯一ID,然后将该用户与其他表关联,并将该ID用作其他表中的外键。

答案 2 :(得分:0)

简而言之,如果需要,每个函数应该在一个表中。在编辑:而不是每个用户的表。每个对应表中的一条记录

这涉及的概念是规范化。考虑个人资料和收件箱。用户只有一个配置文件,但收件箱中会有大量邮件。将收件箱作为另一个表是有意义的,每个邮件都由message-id及其所有者标识,然后是其内容。