首先,我会问一个问题:
是否可以通过创建具有不同值类型的不同表并使用简单的联接查询根据列中指定的类型来获取正确的表来使值的类型为“动态”? < / p>
这里是上下文:
我正在构建一种页面构建器,我希望“模块”是动态的,因为我可以创建新模块而不必以任何方式修改数据库。
我设想了4个实体:
一个字段,代表特定类型的单个值,例如文本字段或复选框;
一个条目类型,代表一组用于条目的字段。例如,文章=标题+内容+图片。
一个条目,它是由相应条目类型定义的内容。
一个值,其中包含一个条目的一个字段的数据,由字段的值类型定义。
对于“价值”实体,我计划为每种“价值类型”使用多个表。 “ value_text”,“ value_integer”,“ value_boolean”等。
我想做的(我认为这是关系数据库中的反模式)是在fields表中获取一个值以选择适当的“ value”表。
这是我构想的结构图: (imgur) UML Diagram of DB
因此,我正在寻找一种方法来进行单个查询,以获取特定条目(按ID)的每个字段的正确值。
这意味着我必须访问分配的entry_type,获取与该entry_type相关的所有字段,然后根据字段表的“ value_type”列从值表中获取每个字段的值。
如果可能的话,我该如何实现?如果不可能,那么解决此问题的最佳方法是什么:
首先查询以检索字段,然后查询每个字段以获取正确的值?这需要进行大量查询才能获取单个条目的值...
将数据库的结构修改为更有效的关系集,同时考虑到一切都是动态的...
摆脱使用多个“值类型”的想法,并坚持使用更通用的“一切都是序列化文本”方法。
此外,因为这是我关于StackOverflow的第一个问题,请让我知道我是否提出了错误的信息,以及将来该如何制定。
感谢所有甚至花时间阅读这篇文章的人:)