JSON 与 PostgreSQL 中的表

JSON vs. Tables in PostgreSQL

我正在尝试制作一份调查问卷并正在考虑 2 种数据结构:

JSON:我可以使用 JSON 来存储不同的问题,如下所示:

{
    "questions": [
        {
            "question": "how old are you?",
            "type": "input_int",
        },
            "question": "what is your name",
            "type": "input_string",
        },
        {
            "question": "how are you today?",
            "type": "multiple_choice",
            "options": [
                "good",
                "bad"
            ]
        },
    ]
}

或每个类型的问题 table:

InputIntTable
- Question
- Order

InputStringTable
- Question
- Order

MultipleChoiceTable
- Question
- Options
- Order

我正在使用 Django。哪种方式在计算、结构和托管成本方面都更好。哪个会占用更多存储空间?谢谢!!

如果您不需要对问题类型或任何其他问题字段进行频繁过滤,您可以使用 Json 结构。但是如果将问题保存为 Json 则无法查询。所以我认为你应该使用表格。 Json 应该只用于保存仅用于显示或需要用作字典恕我直言的数据。但是如果你需要像 ORM 提供的那样查询,你应该使用 tables

你应该有这样的模型:

问题

  • 问题
  • 订单
  • 类型
  • options(字符串列表,在 "input_int" 或 "input_string" 类型的情况下为 null)

不需要为不同的类型创建不同的模型,因为那样你所有的问题都会在不同的表中。

如果您将问题另存为 Json,您也无法使用列表、创建详细信息等其他视图。

总之请使用表格

---- 编辑 ----

问题

  • 问题
  • 订单
  • 类型

选项

  • 选项(字符串列表)
  • 问题(问题模型的外键)