我正在处理的系统有许多屏幕,用户在数据移动通过系统时会保存这些屏幕。
当他们保存时,数据会保存到StagingTable。当他们到达用户旅程结束并提交应用程序时,他们填写的数据将被复制到表格的实时版本。还有用于实时和临时表的相应审计表
Car的登台表示例如下:
CarId
Manufacturer
Model
Colour
UserId
DateModified
DateCreated
Car的相应实时表格是:
CarId
Manufacturer
Model
Colour
UserId
DateModified
DateCreated
StagingCarId
对我而言,这似乎是一个糟糕的设计,因为数据库中几乎每一块数据都是重复的。我对架构师的建议是在表中添加一个bool IsSubmitted,然后在提交时将其设置为true。
用户可以多次提交应用程序 - 架构师正在指出如果用户提交数据 - 在我的情况下将检查IsSubmitted为true。如果他们然后回到应用程序并执行删除并保存 - 这将删除表中的行 - 但如果他们没有提交(有效的方案) - 这将意味着实际提交的数据将是错误的 - 它将是比他们实际提交的要少一行
只是想知道这个场景是否比使用Staging和Live表更好的方法,这些表大部分都是彼此的镜像
答案 0 :(得分:1)
如上所述,你的问题的答案是否定的。你不能合理地反对这个作为反模式本身。
这是一个建模问题,无法作为“最佳实践”来回答。例如,“贷款申请”是与“贷款”不同的东西,它应该在一个单独的表中。这取决于您的建模内容,以及您的开发人员和用户对该域的看法。