首页 > 解决方案 > 在 sql 中对具有状态的实体进行建模,其中实体在推进状态时具有更多属性(休眠)

问题描述

我需要能够对可以处于不同状态的单个实体进行建模。问题在于,在每个州,实体都有更多的字段归属于它。

就我而言,我有一个 Match 实体,其状态为“待定”、“准备就绪”、“正在运行”和“已完成”。未决比赛保存比赛开始的日期和时间以及将托管在哪个服务器上,准备好的比赛保存将参加比赛的球队,正在运行的比赛保存比赛的实时比分,因为它正在运行,并且结束的比赛将保持比赛结束和获胜者的时间。

总而言之,匹配实体经历了一种管道,在不同的阶段,新的字段被添加到其中。

一种方法是有一个大的匹配表,其中包含所有状态的所有字段,这些字段随着匹配推进一个状态而被填写。这意味着该表将有许多空值,但它们最终都会在匹配处于其最终状态时被填满。

另一种方法是为每个匹配阶段(PendingMatch、ReadyMatch、RunningMatch 等)创建一个表,其中仅包含与每个阶段相关的字段。由于我使用的是休眠,每个状态都有自己的类,所以当加载匹配时,您只能访问与该状态相关的字段。然而,这种方法的问题是我将跨表重复列,并且为了推进匹配状态,我必须将其从当前表中弹出并将其插入到下一个表中,其中包含该状态的新数据。

这两种解决方案似乎都不理想,但我看不到任何其他建模方式。我敢肯定这是一个常见的问题,但由于它的确切描述是如此的拗口,所以很难在上面找到任何东西!

如果有人可以解释哪种方法最好,或者可能是一种全新的方法,那将不胜感激。

提前致谢!

耶帕迪

ps 我正在使用休眠 ORM 工具对此进行建模

标签: sqlhibernatestate

解决方案


推荐阅读