0

假设您需要将提供给您的随机相关数据汇集到更简洁的类别中。

示例 - 为您提供以下数据。注意- 可能有任何数量的其他相关的柱状数据:

 Customer      Product                Category
==========    =========    =================================
Customer A    Product A                 Cat 1
 CustomerA    Product B               Category 1
  Cust-A      Product C    Totally Lame & Unrelated Grouping

任务 - 将上述内容合并并规范化为干净的预定义分组:

CustomerA
  Category1
    ProductA
    ProductB
    ProductC

请不要担心完成的数据将如何持久化。而是专注于如何坚持和管理分组规则。

只有一个假设:您不能使用数据库来保存分组规则。因此,当我们说“规范化”时,我们并不是在说关系数据库规范化规则。但是,我们希望从数据输入中消除不一致(如上所示),以使随机数据进入一致状态。

那么有哪些可用的选项?保持技术不可知论:

XML?

配置文件?

设置文件(编译与否)?

.ini 文件?

代码?

等等

列出每个答案的优缺点。虽然这确实是一个 excersize,但这是一个现实世界的问题。因此,假设您的客户/雇主已委托您完成此任务。

4

3 回答 3

0

这似乎是一个数据清理练习,完美是不可能的。问题:

1)。您可以预先指定类别,还是必须从数据中推断?

2)。我们可以使用什么规则来接受等价?

“Cat 1”与“Category 1”相同吗?和“第一类”?

“猫 1。” 还是“猫 1”?“猫 1”呢?? 和“猫 12”?

只是在挑战中获得一套好的规则。

2)。你将如何捕捉这些规则?代码还是配置?如果 config 你会怎么表达呢?您最终是否只是编写一种新的特定编程语言?

于 2009-07-10T14:34:10.403 回答
0

这似乎是一个数据清理练习,完美是不可能的。问题:

1)。您可以预先指定类别,还是必须从数据中推断?

2)。我们可以使用什么规则来接受等价?

“Cat 1”与“Category 1”相同吗?和“第一类”?

“猫 1。” 还是“猫 1”?“猫 1”呢?? 和“猫 12”?

只是在挑战中获得一套好的规则。

3)。你将如何捕捉这些规则?代码还是配置?如果 config 你会怎么表达呢?您最终是否只是编写一种新的特定编程语言?

于 2009-07-10T14:34:46.003 回答
-1
  1. 每个值的字典映射。'Cat1' => 'Category1','Category 2' => 'Category2'。这很容易存储,并且没有意外的后果。缺点是手动创建所有这些映射是实际工作。
  2. 一系列正则表达式。这样,您就可以使用相对较少的工作来捕获几乎所有规则。缺点是正则表达式相对容易“失火”,并且评估顺序很重要(即当值匹配多个“规则”时。

至于如何坚持?我想不出比这更无趣的问题了。您只需使用您喜欢的编程语言中最简单的方法。

于 2009-07-10T14:45:03.863 回答