2

我正在尝试构建一个自定义 CMS 工具(是的,我知道 - 另一个 CMS),用户可以在其中创建任意数量的嵌套“节点”。

示例“节点”:餐馆、人、鞋子、大陆......任何东西。在每个节点内,可以有尽可能多的子节点,依此类推。

在浏览 Wordpress、Drupal 等时,我不断看到诸如“分类”和“术语”之类的表格。

这似乎是一件“正常”的事情,但我无法理解应该如何做或他们是如何做的。我假设这些表与整体结构和表关系有关,但是......在线搜索无法解释实际发生的情况或我将如何最好地为这种结构设计我的数据库。


到目前为止我的想法(显然没有被淘汰或者我不会在这里问):

1)存储已知的数据类型和bindModel(): 创建表data_locationsdata_texts它们将具有各自的数据字段。所以 - 在data_locations表中,我有city, 和longitude, and address。在 data_texts 表中,我有title, subtitle, content, author.

然后,每次他们创建一个新的“节点”时,他们可以选择它应该有什么样的数据类型,我会用它bindModel()来创建关联(我猜?)。

这不会那么灵活,但可能更易于管理,并且可以更快地在...等上运行查询?不知道。

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

这似乎更像我认为的“分类法”——但同样,我真的不知道。

4

1 回答 1

1

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

在关系数据库中,这很棘手。任意深度的嵌套查询不自然(但可行),动态模式也不自然(通过谷歌查看“EAV 模式”以查看相关论点)并且很难很好地查询。

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

于 2012-09-22T09:49:48.800 回答