Language agnostic 有哪些方法可以映射&;规范化相关数据?

Language agnostic 有哪些方法可以映射&;规范化相关数据?,language-agnostic,data-structures,normalization,data-mapping,Language Agnostic,Data Structures,Normalization,Data Mapping,假设您需要将随机的、相关的数据导入到更简洁的类别中 示例-您将获得以下数据注意-可能有任何数量的其他相关列数据: Customer Product Category ========== ========= ================================= Customer A Product A Cat 1 CustomerA Product B C

假设您需要将随机的、相关的数据导入到更简洁的类别中

示例-您将获得以下数据注意-可能有任何数量的其他相关列数据:

 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
请不要担心完成的数据将如何持久化。而是关注如何坚持和管理分组规则

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

那么,可用的选项是什么?保持技术不可知性:

XML

配置文件

设置文件(是否已编译)

Ini文件

密码

等等


列出每个答案的优点和缺点。虽然这确实是一个练习,但却是一个现实世界的问题。因此,假设你的客户/雇主已经委托你完成这项工作。

这似乎是一项数据清理工作,完美是不可能的。问题:

1) 。您可以预先指定类别,还是必须根据数据进行推断

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

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

“第一类”als“第一类”?“第一类”怎么样?还有“猫12”

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


2) 。你将如何抓住这些规则?代码还是配置?如果是,你会如何表达?你最终会编写一种新的专用编程语言吗?

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

1) 。您可以预先指定类别,还是必须根据数据进行推断

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

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

“第一类”als“第一类”?“第一类”怎么样?还有“猫12”

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

3) 。你将如何抓住这些规则?代码还是配置?如果是,你会如何表达?你最终只是写了一种新的专用编程语言吗

  • 每个值的字典映射。”类别1'=>'类别1','类别2'=>'类别2'。这很容易存储,并且没有意外的后果。缺点是手工创建所有这些映射是实际工作
  • 一系列正则表达式。这样,您就可以用相对较少的工作量捕获几乎所有的规则。缺点是正则表达式相对容易“失火”,并且计算顺序很重要(即,当值匹配多个“规则”时)

  • 至于如何保存它们?我想不出比这更无趣的问题了。你只需使用你喜欢的编程语言中最简单的语言即可。

    1)&2)请参阅我关于“预定义”分组的文字。您将知道提前将数据规范化为什么,也将知道哪些数据需要提前规范化。3) 实际上是原始问题的一部分。是否应该使用配置?利与弊?你应该说得更清楚。。。从djna的评论中可以看出:“您将知道提前将数据标准化到什么,并且您还将知道哪些数据需要提前标准化”。。。这是什么意思?我们知道什么?格式?或者我们已经知道所有的值,只需要将输入与正确的值进行匹配?第二个代码块是什么?这是否意味着我们对客户和类别以及类别和产品有1-n关系?我们需要检测这些吗?XML&c。可以看作是简单的数据存储。鉴于许多平台都有处理XML的库,这些库(和存储一起)构成了一个数据库。分组规则不存储在数据库中的要求背后的目的是什么?它仅仅是为了排除RDBMS吗?您是否希望规则存储仅为写?还有别的吗?