gpt4 book ai didi

php - MySQL中如何处理动态列计数

转载 作者:行者123 更新时间:2023-11-30 01:10:14 25 4
gpt4 key购买 nike

我们正在开发一个允许用户创建“促销”实例的平台,其中有任意数量的页面和与这些页面关联的“模块”。每个模块都有自己的可定制属性集合。我正在开发的模块之一是输入表单,它是主要组件。

该表单包含一些默认字段,例如姓名、出生日期和电子邮件地址。然后,该模块允许用户添加所需的任何类型的任意数量的附加字段(例如“25 个字或更少”的文本字段、额外的选择加入复选框等)。

我正在尝试计划如何在 MySQL 中的存储方面处理这些 X 个附加字段。需要对这些字段进行排序和过滤。

这似乎是一个已知且已解决的问题,但我没有正确地措辞或找到相关信息。我在搜索的过程中产生了一些想法;但每个人都有一个缺点,这让我认为一定有更好的方法:

  1. 为每个表单模块创建一个新表,其中包含作为新行的附加字段 - 这看起来确实很困惑/笨重。
  2. 将附加信息以 JSON(或其他数据格式)形式存储在额外的行中。将所有数据提取到 PHP 中,扩展 JSON 并使用 PHP 中的所有数据 - 我们设想会有大量条目(5-10k),所以我认为这效率太低了。
  3. 对其他字段设置上限,并向条目表附加一堆行,即“custom1”、“custom2”、“custom3”等。这看起来也很困惑。

再次查看第 2 点,我认为可能有一种方法可以获取额外行中的数据 block 并从中创建派生表,但我没有找到关于这是否可能的信息。例如:

SELECT * FROM( JSON_DECODE(entries.extra) ) ...

如果可能的话,这可能是我的偏好。

解决需要动态数量的附加行问题的正确方法是什么?

最佳答案

正确的解决方案很大程度上取决于您将如何使用数据。所有解决方案都有优点和缺点,您必须明白,您基本上是在尝试做一些关系数据库不是为之设计的事情。

今年早些时候我做了一个关于这个主题的演讲,名为 Extensible Data Modeling ,其中我尝试对不同的解决方案及其优缺点进行调查。

您也可以认输,并使用非关系数据库来存储非关系数据。

关于php - MySQL中如何处理动态列计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19508355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com