为我的网站创建“徽章”,存储用户徽章的最佳方式?使用PHP

时间:2011-12-02 23:56:46

标签: php mysql xml save

我正在向我的网站添加“徽章”,我想知道存储数据的最佳方式是什么。每个徽章都有一个存储在MySQL数据库中的ID。每个用户在MySQL数据库中都有自己的行,每个用户都有一个XML格式的“userdata”文件。所以我可以将它保存在那个XML文件中,或者我可以在“users”行中创建一个新列并将它们保存为“0; 5; 6; 4;” (徽章ID)。

4 个答案:

答案 0 :(得分:1)

这是一个非常广泛的问题,我们真的没办法明确地说出哪些方法对于您的特定网站配置和目标而言“最佳”。无论哪种方式都可能运作良好。或者,您可以添加一个名为badges_users的新mysql瘦/关系表,它将用户ID与已实现的徽章ID相关联(如果我正确理解您的目标将是我建议如何完成它)。

答案 1 :(得分:1)

我和网站做的很相似。我还没有得到一个确凿的答案。但是不要存储像0; 5; 6; 4

这样的徽章

而是有一个名为user_badges的表

Table user_badges
     user_id
     badge_id

并有一张徽章表

 Table badges
    badge_id
    badge_name
    ..
    etc

答案 2 :(得分:0)

取决于任何数量的变量,例如项目时间表,资源和流量。如果要将nosql解决方案合并到文件系统中进行存储,那么您将不可避免地获得更好的性能提升,因为您不会创建数据库连接来检索徽章信息。但是,您可能已经建立了数据库连接以获取其他用户信息,因此您最终可能会获得微不足道的收益。 SQL解决方案可以更快地实现,除非您处理大量流量,否则没有明显的性能下降。

我认为在这种情况下最大的好处是为您的用户信息实现一个缓存层,这样您就不需要为每个用户信息请求点击持久存储。

如果您选择数据库解决方案,您可能需要考虑为徽章创建单独的表,而不是在users表中添加另一列。用户和徽章之间的1:M关系将允许您在将来添加更多徽章,并且您可以扩展徽章而不必弄乱用户架构。

答案 3 :(得分:-1)

对于这种我建议使用数据库的数据,它比读取和编写XML文件更快。