我正在做一个项目,该项目有多个流程,每个流程都有不同的数据项要处理。数据项(对于不同的进程)具有不同的列(但对于同一进程总是相同的列)。
起初,我认为为所有流程创建一个表就可以了,然后,每当创建一个新流程时,也可以创建另一个包含项目数据的表,但事实证明,会有一种经常创建新表的新流程方式。然后我正在研究嵌套表,但发现 MySQL 中没有嵌套表的概念。(我听说这可以用 MariaDB 完成。有人用过吗?)
为了更清楚一点,这里是当前的概念(这里的列和值只是为了使概念更清晰的近似值):
进程表:
ID | process_name | item_id | ...
---------------------------------
1 | some_process | 111 | ...
2 | other_process| 222 | ...
3 | third_process| 333 | ...
4 | third_process| 444 | ...
...
项目表:
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_id”列。
我认为最简单的解决方案(始终创建新表时不是一个选项)是嵌套表,其中,在进程表中,可能有另一列,它将保存 item_table 值,然后那些可能有基于流程本身的不同列。
所以最大的问题是:是否至少有任何类似于嵌套表或 MySQL 中的其他任何东西可以帮助我实现这样的结构而无需一直创建新表,如果没有,那么也许有一些关于 MariaDB 的提示或评论? 也许有人已经用它实现了嵌套表(如果可能的话)
一种解决方案是为“item_table”设置一个表,然后为进程的所有不同值设置一个列,例如以 JSON 格式存储,但这会使读取表变得更加困难.
例如:
item_table:
ID | process_name | data
--------------------------------------
111| some_process | {values: {column1:val1,column2:val2,...}}