将表单数据存储为 JSON

Storing form data as JSON

我已经阅读了很多关于存储 json 和查询速度的限制,但是,我仍在努力设计我的数据库。

目前,我将来自 CMS(带有输入的表单)的数据作为 JSON 存储在列 content

存储的数据如下所示:

{
  "heading": {
    "value": "Taylor Francis"
  },
  "sub_heading": {
    "value": "photographer \/ artist \/ designer"
  },
  "button_caption": {
    "value": "View Work"
  },
  "button_link": {
    "value": "/work"
  },
  "content": {
    "value": "<p style=\"margin-top: 22px; margin-bottom: 22px; padding: 0px;\">A Brief History[...]"
  }
}

该数据只需要在用户更新页面时访问和解析。

保存页面后,会创建一个缓存 HTML 版本,因此我认为在读取页面进行显示时不会出现速度问题。

我的问题是这会在未来造成更多问题吗?我真的不需要搜索这些数据或任何东西。只允许用户偶尔对其进行编辑(并在需要时向其添加更多元素)

或者我应该将其转换为键->值对 "meta" table 并在页面 ID 上进行联接?

或者,我考虑过为每个可能的输入添加列: 标题栏、sub_heading 栏、button_caption 栏等

谢谢!

你的设计应该不错。但是,我会考虑摆脱 "cached HTML version"。您可能 'build' 来自 JSON "fast enough" 的页面。查看此 Whosebug 页面。它没有被缓存。事实上,它是由大量组件构建的,其中许多组件可能是从数据库动态加载的。

"column for every possible input" 很快就会成为维护的噩梦。为您需要搜索的内容制作专栏;将 JSON 用于其他内容,让应用程序处理 parsing/expanding/etc。也就是不要去EAV(Entity-Attribute-Value)设计。