我们正在开发一个平台,允许用户创建“促销”实例,其中有任意数量的页面和与这些页面相关联的“模块”。每个模块都有自己的可自定义属性集合。我正在开发的模块之一是输入表单,它是主要组件。
表单包含一些默认字段,例如姓名,出生日期和电子邮件地址。然后,该模块允许用户添加他们需要的任何类型的其他字段(例如,“25个字或更少”文本字段,额外的选择加密复选框等)。
我正在尝试计划如何在MySQL存储方面处理这些X附加字段。对这些字段进行排序和过滤是必需的。
这似乎是一个已知和已解决的问题,但我没有任何运气,无论是正确措辞还是遇到相关信息。我在搜索时有些想法;但是每个人都有一个垮台让我认为必须有一个更好的方法:
再看第2点,我认为可能有一种方法可以在额外的行中获取数据块并从中创建一个派生表,但我没有找到有关这是否可能的信息。例如:
SELECT * FROM( JSON_DECODE(entries.extra) ) ...
如果可能,那可能是我的偏好。
解决需要动态数量的额外行的问题的正确方法是什么?
答案 0 :(得分:0)
正确的解决方案很大程度上取决于您将如何使用数据。所有解决方案都有优点和缺点,您必须明白,您基本上是在尝试做一些关系数据库不适用的事情。
我在今年早些时候发表了一篇名为Extensible Data Modeling的关于这个主题的演讲,其中我试图提供一个关于不同解决方案及其利弊的调查。
您也可以放弃,并使用非关系数据库来存储非关系数据。