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

Php 基于用户的网站的mySQL表结构,php,mysql,sql,database,database-design,Php,Mysql,Sql,Database,Database Design,我正在开发一个有用户档案、帐户、帐户设置、收件箱等的网站,就像Facebook或LinkedIn一样,我想知道如何为它设置mySQL表 我是否应该为每个功能(配置文件、收件箱等)的每个用户创建一个表?您不会为每个用户创建一个表 您将为每个用户创建一条记录和一个唯一的id,然后将该id用作其他表中的外键,将该用户与其他表关联。您不会为每个用户创建一个表 您可以为每个用户创建一条记录和一个唯一的id,然后将该id用作其他表中的外键,将该用户与其他表关联起来。简而言之,是的,如果需要,每个函数应该位于

我正在开发一个有用户档案、帐户、帐户设置、收件箱等的网站,就像Facebook或LinkedIn一样,我想知道如何为它设置mySQL表


我是否应该为每个功能(配置文件、收件箱等)的每个用户创建一个表?

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


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

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


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

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


这涉及的概念是规范化。考虑配置文件和收件箱。一个用户只有一个配置文件,但收件箱中会有许多邮件。将收件箱设为另一个表是有意义的,其中每条消息都由消息id及其所有者标识,然后由其内容标识。

简言之,是的,如果需要,则每个函数都应位于一个表中。编辑时:不是每个用户都有一个表。每个对应表中有一条记录


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

您确实需要考虑您在关系方面放入数据库的所有内容(如其他海报所述)。在您给出的示例中,用户将与邮件等事物建立一对多关系,他们将与他们的用户配置文件建立一对一关系,他们将与许多用户居住在一个城市的“地点”建立多对一关系

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

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

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


开始熟悉LEFT JOIN之类的东西——这就是运行单个查询并一次获取用户数据和所有电子邮件的方式

你真的需要从关系的角度考虑你放入数据库的所有东西(正如其他海报所提到的)。在您给出的示例中,用户将与邮件等事物建立一对多关系,他们将与他们的用户配置文件建立一对一关系,他们将与许多用户居住在一个城市的“地点”建立多对一关系

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

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

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

开始熟悉LEFT JOIN之类的东西——这就是运行单个查询并一次获取用户数据和所有电子邮件的方式