在以下场景中哪个最好:post_meta vs自定义表vs父/子帖子

时间:2017-11-04 作者:Mick R

我正在寻找一些关于如何处理发展问题的建议。

我正在建立一个社区网站,订阅者可以在这里创建自己的私人帖子。他们输入的数据分为两组:

主数据存储为post\\U元表中每个专用post的自定义字段辅助数据也可以由帖子作者编辑/删除。查看私人帖子时,还会显示辅助数据。下面是我试图实现的一个示例-不是实际情况,但原则是相同的:

Primary data : 姓名、地址。

Secondary data : 用户可以随时输入任意数量的天气报告。每个报告由3个字段组成:

日期(固定格式/长度)

  • 时间(固定格式/长度)
  • 报告(可变文本长度)
    • 我正在尝试找出存储/检索/更新/删除辅助数据的最有效方法。删除选项删除整个记录,即所有三个字段。到目前为止,我考虑的选项包括:

      1. Add additional post_meta custom fields 并将每个天气报告存储为一个包含三个字段的数组,如果是这样,我应该使用重复键(例如:“weather”)或为每个报告提供唯一键,例如:weather1、weather2、weather3等

      2. Create a custom table 并将每个报告存储为一个具有唯一键或重复键的数组,或可能为三个字段中的每个字段存储单独键,并使用通用日期/时间戳对其进行分组,并为作者帖子ID添加一列作为参考,以检索特定用户的天气报告。

      3. Create child posts (最初的私人帖子是父帖子),对于每个天气报告,在每个新的子帖子中创建3个自定义字段。

      选项1和3很整齐,因为它们遵循WP默认结构,但选项2可能会导致更快的DB查询?尽管如此,我还是倾向于父母/孩子的选择,但我不确定。解决方案必须具有可扩展性,因此假设增长,最终可能会出现成千上万的主要帖子和任意数量的天气报告。

      对上述问题有什么想法,或者我可能没有想到的其他选择?欢迎提出任何建议。

      谢谢

      米克

    1 个回复
    SO网友:janh

    由于您可能希望最终对数据进行一些报告,例如在区域X中打印去年本月的平均温度,因此我从一开始就选择自定义表格。我说的是表,因为我不明白为什么不将位置也放在自定义表中。如果您想执行诸如计算距离之类的操作(并且存储了位置的纬度和长度),这将使您的SQL更干净,更易于编写。

    Post元数据没有规范化,如果您有更复杂的场景,那么使用Post元数据会很痛苦。它也不包含有用的索引,因为它没有关联的数据类型。不过,这在一开始可能不是问题,因为您的数据集仍然很小。

    在这种情况下,元字段的唯一用途是可以直接使用WP\\u查询,而无需太多麻烦。但我很有信心,您可以通过过滤器向wp\\u查询添加一些功能,并且无论如何,您都必须使用这些高级的东西来操作自动生成的SQL。

    也就是说,这还取决于您(以及其他可能与您一起工作的人)在使用特殊表开发时的速度,以及与一些纯基于WP的解决方案相比的速度。你总是可以从3开始,如果项目开始,你会投入更多的时间,让它变得漂亮、干净,然后选择2。数据转换应该不是什么大问题。

    结束

    相关推荐

    SQL database export-import

    我开发的网站包含WordPress博客以及我设计的其他PHP页面。当我在测试服务器上本地更改站点时,我使用myPHPAdmin进行SQL数据库转储。如何避免覆盖客户端WordPress日历条目和其他日历设置的内容?如果我只是在localhost db dump上取消选择日历表,那么在导入之后,客户端的db会维护远程服务器上表的这些客户端条目吗?提前感谢