当前位置: 首页 > 知识库问答 >
问题:

数据库中的嵌套表[重复]

戚永福
2023-03-14

我正在处理一个项目,它有多个进程,每个进程都有不同的数据项要处理。数据项(对于不同的进程)有不同的列(但对于相同的进程总是相同的列)。

一开始,我假设为所有流程创建一个表是很好的,然后,每当创建一个新流程时,也可以创建另一个包含项目数据的表,但事实证明,将会有一种新的流程方法来经常创建新的表。然后我研究了嵌套表,但发现MySQL中没有嵌套表的概念。(我听说这可以用MariaDB完成,有人用过吗?)

为了让它更清楚一点,这里是当前的概念(这里的列和值只是近似的,以使概念更清楚):

process_table:

ID | process_name | item_id | ...
---------------------------------
1  | some_process | 111     | ...    
2  | other_process| 222     | ...    
3  | third_process| 333     | ...    
4  | third_process| 444     | ...
...

item_tables:

item_table_1:
ID | Column1 | Column2 | process_name | ...
--------------------------------------
111| val1    | val2    | some_process | ...
...

item_table_2:
ID | Column4 | Column5 | process_name | ...
--------------------------------------
333| val1    | val2    | third_process| ...
444| val3    | val4    | third_process| ...
...

因此,对于每个新的进程,将有新的item_table,并且对于每个进程,它需要有不同的列名,并且在item table中,特定的项将链接到process表中的'item_id'列。

我认为最简单的解决方案是嵌套表(当总是创建新表不是一个选项时),其中,在process表中,可以有另一列,它将保存item_table值,然后这些值可以根据流程本身有不同的列。

所以最大的问题是:在MySQL中是否至少有类似于嵌套表或其他任何东西可以帮助我实现这样的结构,而不需要一直创建新表,如果没有,那么也许有一些关于MariaDB的提示或评论?也许有人已经用它实现了嵌套表(如果有可能的话)

其中一个解决方案是为'item_table'设置一个表,然后为进程的所有不同值设置一个列,这将以JSON格式存储,但这会使读取表变得更加困难。

例如:

item_table:
ID | process_name | data
--------------------------------------
111| some_process | {values: {column1:val1,column2:val2,...}}

共有1个答案

赖杰
2023-03-14

您是否使用items-table中的值进行处理或类似的操作(您是否针对它们运行查询)?

此表/数据库结构看起来..不起作用和无法维护的海事组织。

这应该只需要两张桌子就可以完成。processs表和包含processs表中的process_id(不是名称)的items表。

如果项的列计数总是相同的,只需为值使用“泛型”名称,如value_1、value_2(或任何最适合流程的名称)或具有JSON字符串的JSON/blob/varchar字段。(取决于是否需要对此数据运行查询)

id process_id data

编辑:您的编辑和第二个解决方案应该是要走的路。“易读性”在功能和性能之上没有优先级。

 类似资料:
  • 问题内容: 我有一个关于桌子设计的问题。我有一个应该认为可行的解决方案,但是没有。 考虑具有两个实体“ Subject”和“ Process”,它们都具有某些属性。每个“主题”可以与多个“进程”相关联。根据选择哪个“过程”,存在不同数量的实体“过程属性”。换句话说,当用户将“过程”与“主题”相关联时,他应该只能编辑专门链接到该“过程”的“属性”。 最终,我希望用户能够执行3件事: 创建新的“流程”

  • 问题内容: 这是我的模型: User.java 我想建立一个这样的用户朋友表: users.jsf 由于用户很多,因此无法一次性转储用户表。 在这种情况下,数据表组件是理想的,因为它具有内置的分页支持。也是理想的,因为可以对列进行排序… 不幸的是,我无法通过Primefaces示例找到改变用户列行距的方法。 如何建立该数据表? 问题答案: 基于@Kerem的答案,这是我想出的解决方案: 为了使嵌套

  • 问题内容: 使用AJAX发出POST请求后,我得到以下JSON响应: 我正在使用数据表来显示数据..但是使用此嵌套的JSON,我无法直接获取数据。我正在使用此https://datatables.net/examples/server_side/post.html https://datatables.net/reference/option/ajax.dataSrc作为参考。 问题答案: 您必须

  • 我试图在spring数据中编写一个findBy,希望所有员工的第一部门状态都处于活动状态。是否可以使用spring数据方法名称,而不使用自定义查询? 类似于List findByDepartmentFirstStatusIsActive(); 我试了几次,但都没用,所以我想没有!!!

  • 问题内容: 在Spark中有一个数据框: 如何将字段重命名为? [更新]: 不适用于嵌套字段,因此我尝试了这种hacky和不安全的方法: 我知道设置私有属性不是一个好习惯,但我不知道其他为df设置架构的方法 我觉得我是在一个正确的轨道,但仍显示为旧名,虽然是 问题答案: 蟒蛇 无法修改单个嵌套字段。您必须重新创建一个整体结构。在这种特殊情况下,最简单的解决方案是使用。 首先是一堆进口商品: 和示例

  • 我在GraphQL中遇到了一些困难,其中模式中的类型包括嵌套类型。所以假设我有一个预订的数据类型: 在模式文件中,我还有一个如下所示的根变异: 我可以在 GraphiQL 中编写一个突变来为预订创建数据,没问题: 到目前为止一切都很好。现在,我需要向原始预订对象添加一个嵌套类型来记录分配给预订的工作人员。因此,我为工作人员添加了类型(输入和输出类型),并将这些类型添加到预订类型和突变中: 预订类型