【发布时间】:2012-08-11 02:00:09
【问题描述】:
我正在尝试构建一个自定义 CMS 工具(是的,我知道 - 另一个 CMS),用户可以在其中创建任意数量的嵌套“节点”。
“节点”示例:餐厅、人、鞋子、大陆......任何东西。在每个节点内,可以有任意多个子节点,依此类推。
在浏览 Wordpress、Drupal... 等时,我不断看到诸如“分类”和“术语”之类的表格。
这似乎是一件“正常”的事情,但我无法理解应该如何完成或他们是如何做到的。我假设这些表与整体结构和表关系有关,但是......在线搜索无法解释实际发生的情况或我将如何最好地为这种结构设计我的数据库。
到目前为止我的想法(显然没有被淘汰或者我不会在这里问):
1) 存储已知数据类型和bindModel():
创建像 data_locations 和 data_texts 这样的表,它们将具有各自的数据字段。所以 - 在data_locations 表中,我会有city、longitude 和address。在 data_texts 表中,我有title、subtitle、content、author。
然后,每次他们创建一个新的“节点”时,他们可以选择它应该有什么样的数据类型,我会使用bindModel() 来创建关联(我猜?)。
这不会那么灵活,但可能更易于管理,并且可以更快地在...等上运行查询?不知道。
2) 具有单个“数据”表的每个节点的自定义字段:有一个 data 表和一个 fields 表...每个节点将有许多 fields - 每个都有类型和 maxLength ...等。然后,在管理员中,我会列出这些字段,并且每个数据块title、shoe_size...等在data 表中都会有一行与节点和字段相关。
这个看起来更像是我认为的“分类法”——但同样,我真的不知道。
【问题讨论】:
-
我会给 +50 赏金以获得最佳答案
-
你有没有想过这个问题?我也对这个主题的进一步解释感兴趣。stackoverflow.com/questions/17983137/…
标签: database cakephp database-design content-management-system