如何规范用户生成的大型公司名称数据集?

时间:2009-01-09 19:34:18

标签: database-design normalization

使用案例:用户1上传100个公司名称(例如Microsoft,Sierra of Sierra)

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

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

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

从技术上讲,中央存储库是否应该是一个单独的数据库?甚至用户生成的信息是否也应该来自针对它的业务事务的单独数据库?

从问题的大定义开始,并希望通过输入将其打包,谢谢。

5 个答案:

答案 0 :(得分:3)

FWIW,这与database normalization无关。这是一项数据清理任务。

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

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

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

答案 1 :(得分:2)

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

对不起,我在这里不是太开心,但这很快就会变成一场噩梦......类似于试图解决一个完整的问题......

答案 2 :(得分:1)

您是否看到当您尝试在此网站上输入新问题时会发生什么?所有以前的问题可能都是一样的吗?

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

答案 3 :(得分:0)

链接以某种方式做到这一点。但是,他们不进行批量上传...... 基本上你想设置一些差异计算器,它会对某些潜在的匹配产生一个动作。

丢掉像 “Inc”,“The”和其他是一个规则,然后有拼写错误的模式匹配或紧密匹配的单词。

从工作流的角度来看,批处理上传并不容易。您需要一个已批准的已知数据字典,然后必须对每个上传/添加进行审查。最终增加的数量将减少。

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

修改

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

答案 4 :(得分:-1)

company table    
  id
  name

company_synonym table
  company_id
  name

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