2

我想构建一个自定义CMS工具(是的,我知道 - 另一个CMS),用户可以根据需要创建任意数量的嵌套“节点”。开放式数据和数据类型的数据库结构和关联

示例“节点”:餐厅,人物,鞋子,大洲......任何东西。在每个节点内,根据需要可以有多少个子节点,等等。

在通过Wordpress,Drupal等等进行浏览时,我总是看到类似“分类法”和“术语”的表格。

这似乎是一个“正常”的事情,但我无法围绕应该怎么做,或者他们如何做。我认为这些表格与整体结构和表格关系相关,但是......在线搜索很难解释实际上正在发生的事情,或者我如何最好地设计我的数据库来获取这种结构。


想法我已经到目前为止(这显然不是冲出不然我也不会在这里问):

1)店铺已知的数据类型和bindModel(): 创建像data_locationsdata_texts这样的表,它们将具有各自的数据字段。所以 - 在data_locations表中,我有city,longitudeaddress。而在data_texts表中,我会有title,subtitle,content,author。然后,每次他们创建一个新的“节点”时,他们可以选择它应该具有的数据类型,我会使用bindModel()来创建关联(我猜?)。

这不会很灵活,但也许更容易管理,并更快地运行查询......等等?不知道。

2)单“数据”表中的每个节点的自定义字段:有一个data表和fields表...每个节点将haveMany fields - 每一个类型和最大长度...等。然后,在管理员中,我会列出这些字段,并且每个数据块titleshoe_size ...等将在data表中与该节点和该字段相关的行中有一行。

这一个看起来更像是我认为“分类学”的东西 - 但是,我真的不知道。

+0

我会给+50赏金的最佳答案 – Dave 2012-08-11 03:58:59

+0

你有没有想过这个?我也有兴趣在这个问题上进一步的解释。http://stackoverflow.com/questions/17983137/saving-data-with-varying-keys-and-values – styks 2013-08-01 00:13:37

回答

1

您正在考虑哪个数据库?在我看来,图形数据库往往对于这类事情更自然。

在关系数据库中它很棘手。嵌套任意深度的查询并不自然(但可行),动态模式也不自然(请参阅'EAV模式'通过谷歌来查看围绕它的参数),并且很难很好地查询。

看看neo4j。我认为你可以直接自然地表达你的要求。

+0

EAV帮助我http:// stackoverflow。COM /问题/ 17983137 /保存数据,与变密钥和值/ 17983955#17983955 – styks 2013-08-01 03:16:24