0

用例:用户 1 上传 100 个公司名称(例如 Microsoft、Bank of Sierra)

用户 2 上传 100 个公司名称(例如 The Gap、Uservoice、Microsoft, Inc.)

我希望用户 1 的 Microsoft 概念和用户 2 的 Microsoft 概念映射到具有 Microsoft 唯一索引的集中维护实体。

如果有人上传了一个不在中央存储库中的名称,我想我希望它按原样输入。但是,如果第一个条目拼写错误会发生什么(例如 Vergin Mobile 而不是 Virgin Mobile?)我们如何才能最好地纠正它并将新上传的内容与同一索引相关联?

从技术上讲,中央存储库应该完全是一个单独的数据库吗?甚至用户生成的信息是否也应该与针对它发生的业务交易位于一个单独的数据库中?

从对问题的大定义开始,并希望将其与您的输入结合起来,谢谢。

4

5 回答 5

3

FWIW,这与数据库规范化无关。这是一项数据清理任务。

在一般情况下,数据清理不能完全自动化。许多人尝试过,但不可能检测到输入数据可能格式错误的所有方式。您可以使用以下技术自动化某些百分比的案例:

  • 强制用户从列表中选择公司名称,而不是键入它们。当然,这最适合单个条目,而不是批量上传。
  • SOUNDEX输入SOUNDEX的公司名称与数据库中已有的公司名称进行比较。这对于识别可能的匹配很有用,但它也可能给出误报。所以你需要一个人来审查它们。

最终,您需要设计您的软件,以便管理员可以轻松地“合并”条目(并更新来自其他数据库表的任何引用),因为它们被发现彼此重复。使用级联外键没有优雅的方法可以做到这一点,您只需要编写一堆 UPDATE 语句。

于 2009-01-09T19:44:35.143 回答
2

有一种称为主数据管理的完整类型的系统尝试为不同的域(例如合作伙伴、地址、产品)执行此操作。通常是大型、功能齐全的系统,没有什么可以以临时方式正确完成。这些事情一开始听起来很容易,但很快就会变得非常困难。

抱歉,我在这里不太高兴,但这很快就会变成一场噩梦......类似于试图解决一个 np-complete 问题......

于 2009-01-09T19:52:51.130 回答
1

当您尝试在此站点上输入新问题时,您是否看到会发生什么?所有之前的问题可能是相同的?

可能即使这样也不够。这里是不够的。

于 2009-01-09T19:42:27.813 回答
0

链接在某种程度上做到了这一点。但是,他们不进行批量上传......基本上你想设置某种差异计算器,这将导致对一些潜在匹配采取行动。

删除“Inc”、“The”等单词是一种规则,然后是拼写错误的模式匹配或紧密匹配的单词。

从工作流程的角度来看,批量上传并不是一件容易的事。您将需要一个已获批准的已知数据字典,然后必须审查每次上传/添加。最终添加的数量会减少。

我同意这不是数据库问题 - 这是一个工作流程问题。

编辑

我将有一个批准的列表,然后是一些将潜在的“好”名称传播到批准列表的规则。你如何实现它留给读者作为练习......

于 2009-01-09T19:44:37.123 回答
-1
company table    
  id
  name

company_synonym table
  company_id
  name

此模式结构解决了您列出的问题。

于 2009-01-09T19:41:57.707 回答