4

系统有时必须适应现实世界中不良数据的可能性。考虑到一些数据来源于纸质表格。表单本身具有验证数据的有限方法。

示例 1:在一个表单中,用户需要在空白处输入整数距离(以英里为单位)。我们将信息捕获为字符串,因为我们并不总是最终获得整数值。

示例 2:在另一个表单上,我们捕获了一个代码。该代码映射到我们系统中的代码之一。但是,有时表单上写的代码是不正确的。我们捕获代码并允许它以无效值存在,直到将来某个时间解决。也就是说,我们暂时允许不良数据,因为即使其中一些记录是无效的,记录记录也很重要。

我有兴趣更多地了解系统如何容纳不良数据,即人为错误。数据库应该是数据完整性的堡垒,但现实世界是混乱的,人们会犯错误。系统必须允许我们反映这些错误。

您开发的系统有哪些适应人为错误的方法?你使用了哪些做法?你吸取了哪些教训?

关于该主题的任何进一步阅读?(我在谷歌搜索时遇到了麻烦。)

4

6 回答 6

2

我同意你的观点,无论我们做什么,都不能保证我们可以摆脱错误或不正确的数据。特别是但不仅限于用户输入。以我的经验,在复杂的集成项目中也存在同样的问题,在这些项目中,您必须集成和合并(通常是不一致的)从不同系统检索到的数据。

一个好的策略是将输入与操作系统本身分离。首先,将用户(或外部系统)提供的数据放在单独的数据存储中(例如不同的模式)。在第二步中,将此数据加载到您的操作数据存储中,但前提是它符合严格的规则(例如,使用地址验证软件来验证给定地址)。这种提取、转换、加载 (ETL) 方法在数据仓库 (DWH) 解决方案中相当普遍,但也可以以编程方式应用于事务系统(根据我的经验)。

上述方法通常会导致异步过程,其中首先输入输入,并且(可能)稍后外部实体(用户或系统)检索其数据是否正确的反馈。

编辑:为了进一步阅读,我建议看看 DWH 概念。虽然,您可能不想构建这样的东西,您可以部分应用这些概念:

http://en.wikipedia.org/wiki/Extract,_transform,_load

http://en.wikipedia.org/wiki/Data_warehouse

http://en.wikipedia.org/wiki/Data_cleansing

于 2011-07-22T13:35:23.370 回答
1

老实说,从纸质系统迁移到 IT 的一个要点是消除这些错误并确保所有数据始终正确。我怀疑任何正确规划和开发的 IT 系统(尤其是商业财务系统)都会允许这样的错误。反正不在我工作的公司里...

于 2011-07-22T12:55:40.613 回答
1

我工作的一个政府部门做了很多调查,其中大部分(曾经)仍然是纸质的。

  • 所有的结果都被 OCR'd 到系统中。
  • 作为 OCR 过程的一部分,会保留表格的数字扫描。
  • 然后验证数据,标记无法破译或验证失败的数据。
  • 当人类操作员审查数字数据时,如果他们确信自己可以正确解释代码无法解释的内容,他们可以修改数据;他们(这是很酷的一点)还可以显示基于纸质原件的扫描,并使用它来确定用户想说什么。

在不同的线程上;在某些时候,您希望根据您希望它符合的任何预期数据范围验证传入的数据;购买在进入点拒绝它,您给用户一个纠正它的机会 - 权衡是每次您拒绝它时,您都会增加他们放弃整个过程的机会。

在系统中的某个时刻,您需要指定将用于验证的规则。归根结底,系统只会像那些规则一样聪明。您可以自己将这些开发成代码(可能是业务逻辑),或者您可以使用第 3 方组件。

灵活控制验证非常重要,因为它们可能会随着时间而改变。

于 2011-07-25T07:13:07.300 回答
0

有很多软件工具可以解决您提到的各种问题。有一些平台和工具可让您定义用于清理和转换数据以及处理验证错误的规则。这些技术广泛用于数据集成和商业智能应用程序。谷歌的“数据质量”或“数据集成”。

于 2011-07-22T12:56:22.963 回答
0

最简单的做法是(这并不总是可能的)设计用户输入数据的界面,以尽可能限制他们需要输入的文本数量。根据我的经验,这似乎是很多问题的来源。一个简单的示例是提供一个选择或自动完成选择字段

您可以做的一件事是在进入数据库之前尽一切可能确定数据是否正确。我尝试为输入数据的用户提供尽可能多的反馈,以便他们可以(理想情况下)在数据持久化之前解决一些问题。例如,这是一个非常快速的检查来确定输入的数据是否是正确的类型。

于 2011-07-22T13:05:04.887 回答
0

我在 PC 时代之前就开始涉足法律体系。诉讼支持数据库通常必须容纳事实上不正确、不完整和相互矛盾的信息。它需要一种不同的思维方式。

短版。. .

您不是记录一个事实,而是记录关于一个事实的多个断言。它归结为设计一个数据库来存储来自此类断言的数据。

  • 在 2011-01-03 08:13 接受采访时,Neil Rimes 告诉 Cane 警官,他从 2011-01-02 20:00 到 2011-01-03 08:13 在家。
  • 在 2011-01-03 08:25 的采访中,Liza Nevers 告诉 Cane 警官,Neil Rimes 于 2011-01-02 23:45 回家。
  • 在 2011-05-13 10:22 的证词中,Cody Maxon 告诉律师 Kurt Schlagel,他在 2011-01-03 03:00 在 Kroger 看到了 Neil Rimes
于 2011-07-23T14:06:35.953 回答