【问题标题】:How to implement multiple JSON schemas per JSON data column in MySQL如何在 MySQL 中为每个 JSON 数据列实现多个 JSON 模式
【发布时间】:2021-02-12 09:02:44
【问题描述】:

我正在使用基于 javascript 的 CAD 配置器来加载要配置到新产品(单独的表格 - 即小部件)中的产品(即材料)。我的 JSON 数据列需要适应并适用于在客户端配置器中使用的材料,以创建不同类型的新小部件。

我的想法是添加一个“data_type”列,其中每个“data_type”都与一个 JSON Schema 示意图相关联。此列可以是外键或字符串,因为 JSON 架构可以存储在表(data_types 表中的 json“架构”列)或目录(tablename-datatype.schema.json)中。

在这个阶段,我认为 data_types 表会更灵活,更容易维护和提供模式。此外,这将使模式能够在表之间共享,并且我可以实现一个版本控制系统来促进配置器的发展。

有哪些选项可以在 MySQL 中为每列实现多个 JSON 模式?有没有更好的方法来完成我的目标?

【问题讨论】:

  • 这会解决什么问题?
  • 我正在使用基于 JavaScript 的 CAD 配置器将产品(即材料)加载到新产品(单独的表格 - 即小部件)中。我希望能够使用小部件的配置器创建可以在客户端配置为小部件的新材料。这将解决的问题是使 JSON 数据列能够适应并适用于在客户端配置器中用于创建不同类型的新小部件的材料。
  • 这超出了我的薪酬等级,但我会编辑问题以在问题正文中包含上下文。
  • 谢谢,我将编辑以包含上下文

标签: mysql json


【解决方案1】:

在这个用例中:

我正在使用基于 javascript 的 CAD 配置器来加载要配置到新产品(单独的表格 - 即小部件)中的产品(即材料)。我的 JSON 数据列需要适应并适用于在客户端配置器中使用的材料,以创建不同类型的新小部件。

为了促进灵活的 JSON 模式,可以验证和使用与多个表中的单个 JSON 数据列的关系,我将实现的结构是:

  • JSON 数据仅适用于客户端进程。此数据与具有在更高级别查询的列和关系的 MySQL 条目相关。 JSON 数据需要灵活的架构来实现客户端功能。

  • 创建一个datum_schema 表。列可能包括键(id)、字符串(名称)、整数(版本)和 json(模式)列。架构可以共享,确保向后兼容性,并为多种客户端技术提供服务。

  • 条目需要单个 JSON 数据记录的表。创建 json 列和对 datum_schema 记录的引用。在用例中,这将是配置器和小部件:

创建配置器:您创建配置器和 datum_schemas 记录。在用例中,我将创建两个模式:一个用于设置,一个用于输入。加载配置器实例的特定设置存储在配置器表中的 json 列中。

配置器表条目存储对其设置和输入架构的引用。用户权限将允许一些用户仅创建配置器条目,而其他用户则可以创建条目和定义模式。

创建小部件:当您使用配置器创建小部件时,小部件 json 数据将是重新创建自身所需的输入值和对其配置器记录的引用。

表格,其中单个条目可能需要多个 JSON 数据记录。

创建一个单独的表来存储对第一个表的引用的 json 数据。在用例中,这将是材料。

创建材料:在材料表中,创建一个条目来存储任何更高级别的可查询信息(即类别)。在单独的 material_data 表中,条目包括对材料的引用、json 数据和对 datum_schema 的引用。如果材质在配置器中使用,则 json 数据将根据配置器创建的 datum_schema 记录进行结构化。

想要创建新类型的小部件?定义配置器、必要的架构和相关的材料类别。

我相信这是一个合理的解决方案,但是,由于我是 MySQL 和数据库设计的新手,我希望能得到反馈。

【讨论】:

    猜你喜欢
    • 2012-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-22
    • 2021-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多