如何标准化用户输入的数据?

时间:2012-09-04 01:47:37

标签: database user-input

我有一个数据表,我正试图“标准化”。输入表格的数据不是静态的或标准化的(比如答案的下拉列表),让我有多种不同的答案,我想要一个静态的,通用的答案。

例如,假设数据库中有一个名为“宠物类型”的列。由于用户输入未标准化,人们可以输入特定类型宠物的变体,而不是宠物的一般形式。因此,不仅仅是进入“狗”,还有不同版本的狗,如“牧羊犬”,“笨蛋”,“拉布拉多”等。

我如何将这些答案转录成他们的广义形式 - 用“狗”(或“猫”,或“鸟”等)替换表中的Collie / Mutt / Labrador / etc答案?< / p>

我意识到需要某种形式的手动输入“翻译”功能。我的直觉反应是,长期堆叠的if语句列表效率低下,控制和扩展也很繁琐。

是否有某种过程或系统可以做这样的事情?像某种类型的查找表系统/矩阵?

我假设一个foreach循环来迭代记录数组是最合适的。然后在foreach循环的每次迭代中,你可以根据某种类型的列表(我手动创建)对pet变量进行测试/比较 - 但是你会对这个查找表/列表使用什么?还是这个过程的一步?你会把它作为某种类型的SQL数据库/表,数组,CSV文件等吗?

然后,一旦完成这个比较并确定了宠物类型的“翻译”等价物,foreach循环将更新记录的特定行,或者覆盖旧的非标准化值,或者可能只是添加将新的标准化等价物转换为新列(供以后验证)。

2 个答案:

答案 0 :(得分:1)

  

我的直觉反应是堆叠的if语句的长期列表   效率低下,控制和扩展也很乏味。

100%正确,因此你真的只有一个选项:手动浏览数据库并清理它。完成后,您需要使用停止列表而不是原始文本输入来限制用户输入。

根据您的用户,您可能希望了解Stackoverflow如何处理标记 - 基本上允许任何人为您进行清理。

答案 1 :(得分:0)

但是如果您有150000条记录或某些事情正在进行SQL查找 - 替换查询可能有助于清理数据以启动。

这听起来像是一个数据规范化项目,虽然我在实践中没有很多经验,但从理论上讲,你从数据的输入方式开始。例如,自由文本字段允许用户输入他们想要的任何内容。您希望在清理数据后更改它。首先要知道数据是如何进入的,这是值得的。它是自由文本,子弹,下拉菜单吗?等

您还希望创建一个包含所有标准化术语的数据字典,这些术语可以替换多种变体。
然后,您可以创建一个更新查询,该查询将遍历旧数据并使用更新查询和通配符使用新数据进行更新。

https://support.office.com/en-us/article/Use-the-Find-and-Replace-dialog-box-to-change-data-2eee8d02-5a40-4328-ba56-ec0406865680

这可能是一种更自动化的数据清理方式,而不是查找和替换数据。

-Al