首页 > 解决方案 > 当附加数据取决于外键值时,我应该创建多个表或一个 json 列

问题描述

我想存储票务系统用户采取的行动。根据操作的类型,我可能需要存储额外的数据,并且数据结构将根据操作类型而有所不同。

例如,当用户发布消息时,我想存储消息 ID。

当用户合并两张票时,我想存储原始票号和合并后的票号。

当用户更改状态时,我想存储上一个和下一个状态。

等等。

考虑到这些例子,我注意到以下几点:

使用如下所示的操作表:

行动
ID
动作类型ID
日期
用户身份
票号
动作类型
ID
蛞蝓

有没有比创建尽可能多的表更好的选择,因为有不同的操作类型和必要的列 IE

ActionMessagePosted
ID
动作类型ID
消息ID
ActionTicketMutations
ID
动作类型ID
...(每个可能的字段及其上一个和下一个值)

或者

在我的 Actions 表中添加一个包含所需值的文本列作为 json?(出于技术原因,我无法创建 Json 列)

标签: sqldatabase-design

解决方案


推荐阅读