Php 存储用户设置的有用体系结构是什么?

Php 存储用户设置的有用体系结构是什么?,php,database-design,laravel-5,Php,Database Design,Laravel 5,我想存储一些用户设置,我想到了3个选项,因为这是我的第一个项目,我想以正确的方式启动它,我不知道哪种方法是最好的 将单个设置直接存储在用户表的列中 有一个用户设置表,其中包含设置名称、设置值和用户id的列 将JSON字符串存储在用户表中名为“user\u settings\u JSON”的列中 在一次设计分析中,我注意到wordpress将其存储在一个单独的表中,但我不确定这对每个应用程序都是必要的(因为我的用户设置没有wp那么多) 我使用的是Laravel、PHP、javascript/jqu

我想存储一些用户设置,我想到了3个选项,因为这是我的第一个项目,我想以正确的方式启动它,我不知道哪种方法是最好的

  • 将单个设置直接存储在用户表的列中

  • 有一个用户设置表,其中包含设置名称、设置值和用户id的列

  • 将JSON字符串存储在用户表中名为“user\u settings\u JSON”的列中

  • 在一次设计分析中,我注意到wordpress将其存储在一个单独的表中,但我不确定这对每个应用程序都是必要的(因为我的用户设置没有wp那么多)

    我使用的是Laravel、PHP、javascript/jquery


    你们认为在设计、可维护性和性能方面,哪一个最有用,总体上更好

    存储JSON字符串?不

    如果希望能够隔离设置,只需查询所需内容即可。因此,请将其保存在单独的列中

    至于这个问题,如果你必须单独安排一张桌子,不,你不必。当您刚刚获得一些简单的设置时,您可以将这些列添加到现有的用户表中。请注意此处的限制。如果您确实需要高级设置,我建议使用单独的表。最好做得太早。并非每个设置都适用于每个用户。例如,当您拥有可以进行更多设置的高级帐户时。所以,我会把它分开

    顺便说一句,如果列已经位于名称中包含“setting”的单独表中,我不会让它们以“setting”开头


    结论:选项2:)存储JSON字符串?不

    如果希望能够隔离设置,只需查询所需内容即可。因此,请将其保存在单独的列中

    至于这个问题,如果你必须单独安排一张桌子,不,你不必。当您刚刚获得一些简单的设置时,您可以将这些列添加到现有的用户表中。请注意此处的限制。如果您确实需要高级设置,我建议使用单独的表。最好做得太早。并非每个设置都适用于每个用户。例如,当您拥有可以进行更多设置的高级帐户时。所以,我会把它分开

    顺便说一句,如果列已经位于名称中包含“setting”的单独表中,我不会让它们以“setting”开头


    结论:选项2:)

    当然是选项1!想想酸性和正常化的好处这是“个人偏好”和“可搜索性”的混合体。是否要查找具有特定设置(例如,电子邮件“选择退出”或“选择加入”)的用户?这几乎排除了选项3。您是否有很多设置可能会更改,或者可能与某些用户无关?那就砍掉了第一名。您使用的ORM不容易处理联接或透视表吗?那就删掉了第二条。就我个人而言,第2项是我的首选,但这确实取决于具体情况。@bub选项1在您有足够的设置(或设置不适用于所有用户)后会很糟糕。我不希望有一个包含100+列的表是半空的。@samlev然后生成5个包含20列的表,如果您有100个设置,并且您不希望只有1个table@bub-我真的希望你是在挖苦人。当然选择1!想想酸性和正常化的好处这是“个人偏好”和“可搜索性”的混合体。是否要查找具有特定设置(例如,电子邮件“选择退出”或“选择加入”)的用户?这几乎排除了选项3。您是否有很多设置可能会更改,或者可能与某些用户无关?那就砍掉了第一名。您使用的ORM不容易处理联接或透视表吗?那就删掉了第二条。就我个人而言,第2项是我的首选,但这确实取决于具体情况。@bub选项1在您有足够的设置(或设置不适用于所有用户)后会很糟糕。我不希望有一个包含100+列的表是半空的。@samlev然后生成5个包含20列的表,如果您有100个设置,并且您不希望只有1个table@bub-我真的希望你是在挖苦人。我在这里要注意,根据用户数量,某些设置适合升级到列(我说的是几十万),以及具体操作的速度。当然,相互关系密切的设置可以以字符串或某种形式连接起来。@bub,为什么会这样?我们讨论的意义有多大?可能不是一次需要所有设置。当然,这取决于存储的数据量,想象一下非常常见但特殊的情况当您进行查询以找出一组具有相似设置的用户时。好的,让我们以比较用户之间的设置为例。一个关联字符串可能具有不同的顺序,标记起来非常困难。您必须进行反序列化,这也需要时间。对吗?我将在这里做一个说明,某些设置适合于p根据用户的数量(我说的是几十万)自动切换到列,以及具体操作的速度。当然,相互关系密切的设置可以以字符串或某种形式连接起来。@bub,为什么会这样?我们讨论的意义有多大?可能不是一次需要所有设置。当然,这取决于存储的数据量,想象一下非常常见但特殊的情况当您进行查询以找出具有相似设置的一组用户时。好的,让我们以比较用户之间的设置为例。一个关联字符串可能具有不同的顺序,标记起来非常困难。您必须反序列化,这也需要时间。对吗?