我正在尝试构建一个自定义 CMS 工具(是的,我知道 - 另一个 CMS),用户可以在其中创建任意数量的嵌套“节点”。
示例“节点”:餐馆、人、鞋子、大陆......任何东西。在每个节点内,可以有尽可能多的子节点,依此类推。
在浏览 Wordpress、Drupal 等时,我不断看到诸如“分类”和“术语”之类的表格。
这似乎是一件“正常”的事情,但我无法理解应该如何做或他们是如何做的。我假设这些表与整体结构和表关系有关,但是......在线搜索无法解释实际发生的情况或我将如何最好地为这种结构设计我的数据库。
到目前为止我的想法(显然没有被淘汰或者我不会在这里问):
1)存储已知的数据类型和bindModel():
创建表data_locations
,data_texts
它们将具有各自的数据字段。所以 - 在data_locations
表中,我有city
, 和longitude
, and address
。在 data_texts 表中,我有title
, subtitle
, content
, author
.
然后,每次他们创建一个新的“节点”时,他们可以选择它应该有什么样的数据类型,我会用它bindModel()
来创建关联(我猜?)。
这不会那么灵活,但可能更易于管理,并且可以更快地在...等上运行查询?不知道。
2)具有单个“数据”表的每个节点的自定义字段: 有一个data
表和一个fields
表......每个节点都会有很多fields
- 每个都有一个类型和 maxLength ......等等。然后,在管理员中,我会列出这些字段,并且每个数据块title
,shoe_size
...等在表中都会有一行data
与节点和字段相关。
这似乎更像我认为的“分类法”——但同样,我真的不知道。