我有一个包含报告表的数据库。此表表示报告数据,并具有约束。 现在应用程序被消防员使用,他们可能不得不逃跑并扑灭一些火灾。 因此,在填写此表的数据时,它们可能必须运行。 我们所做的是当会话用完时我们将数据保存到草稿表中,我们只是序列化对象图,没有约束(因为我们无法知道所有内容是否都处于有效状态)。 当消防员后来想要取回数据时,我们只需再次取出草案。
这很好用! 然而,消防员现在希望能够搜索表格和草稿表格。 所以在这里我想将所有数据(包括草稿)存储到我搜索的一个表中,所以我不必从两个表中整合搜索...
草稿是否有某种数据库模式? 我想要的是一种模式,用于存储没有约束的数据(在草稿模式下)和约束(在最终模式下)。
答案 0 :(得分:3)
我不知道这是否有资格作为模式,但我认为最简洁的方法是创建一个视图,对两个表进行联合并搜索它。
答案 1 :(得分:1)
我不知道草稿的数据库模式,但如果您需要验证并只是在两个表上搜索,我建议保留您的单独表格。
答案 2 :(得分:1)
使用简单的解决方案:创建一个View,它只是两个表的联合(它应该是相当直接的,因为我们假设它们都具有(几乎)相同的结构),然后对其进行搜索作为源如果他们想要包括两者。
我实际上不会在任何时候合并完整数据和草稿数据:错误和意外使用未经验证的数据的可能性似乎很大。
你现在不会在英国的IRS界面上工作,对吗?如果没有,像DK这样的声音已经解决了这个问题的类似(原则上)(我曾经在英国消防和救援服务中工作)。
答案 3 :(得分:1)
我认为这个问题很长很难,这是我的答案:
将草稿及其相应的经过验证的实体存储在同一个表中。有一个is_draft列
使用is_draft = 1关闭触发器中的验证并检查约束或ORM验证规则
您的许多字段必须可以为空或具有默认值
这有几个好处:
草稿及其相应的经过验证的实体存储在同一个表格中
草稿及其相应的验证实体具有相同的ID 。为什么这很重要?
假设您为客户开始报价。保存。它得到了一个id。你在网络浏览器/ quotes / id / 55中看它。您开始编辑该引用,删除所需的值,因为它是错误的。你必须去隔壁看,但你想保存它。身份证号码不应改变。
如果他们在同一个文档上进行协作,并且如果它进出有效状态,它的id会不断变化,那么人们也会感到困惑。