开放式数据和数据类型的数据库结构和关联

时间:2012-08-11 02:00:10

标签: database cakephp database-design content-management-system

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

示例“节点”:餐馆,人,鞋,大陆......任何事情。在每个节点内,根据需要可以有多个子节点,依此类推。

在浏览Wordpress,Drupal等等时,我不断看到像“分类法”和“术语”这样的表格。

这似乎是一个“正常”的事情,但我无法理解它应该如何完成或如何做到这一点。我假设这些表与整体结构和表关系有关,但是...在线搜索很难解释实际发生了什么或者我将如何最好地为这种结构设计我的数据库。


我到目前为止的想法(显然没有冲出来,或者我不会在这里问):

1)存储已知数据类型和bindModel(): 创建像data_locationsdata_texts这样的表格,这些表格会包含各自的数据字段。所以 - 在data_locations表中,我有citylongitudeaddress。在data_texts表格中,我有titlesubtitlecontentauthor

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

这不是那么灵活,但可能更容易管理,并且更快地运行...等等?说不上。

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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