0

我在 mysql 中有一个数据库,其中包含一组属性(例如“重量”、“高度”、“页数”等)和属性值(例如“30 吨”、“12 英寸”、“2 pgs”等)并使用相应的产品 ID 进行映射。数据是从不同的站点收集的,因此属性值具有不同的格式(例如“222 pgs”或“222 页”或“222”)(例如“12 英寸”、“12 米”、“12 厘米” )。我需要做的是我必须比较不同产品的相同属性的值。因此,对于格式不同的所有属性,我必须将“222 pgs”与“222 pages”进行比较。

大约有 4000 个属性,并且数量还会进一步增加。有什么方法可以比较这些而不必单独为每个属性分配特定类型?或者比较这些的最快方法是什么?

4

2 回答 2

0

在发现一对产品的属性不同(但仍然意味着相同的东西)之后,您还没有解释要做什么。

即:如果我看到实例 A 的字段长度设置为“12 pgs”,而实例 B 的长度报告“12 页”,你会怎么做?列出这个?自动更正?删除两个值之一?打开一个窗口让人类用户更正?

就我个人而言,我会选择“select attribute,count(*) from X group by attribute”,这样您就可以找出该单元最常见的拼写,然后您还可以编写可以自动转换“..一旦您确定了正确的表示形式,请立即将 pgs" 转换为 " pages"。

当然,除非您强制执行正确的单位拼写,否则这根本无济于事,这需要确保更好的输入输出过滤器,包括主 UI,但还需要您可以用来创建或更新产品的任何类型的批量上传实用程序。

重新设计数据库以添加“单位”作为每个度量的额外分类属性也会有很大帮助。

于 2013-05-09T06:48:49.563 回答
0

好吧,在他们发明出具有透视能力的计算机之前,人类将不得不告诉它,pgs并且pages意味着同样的事情,inches并且meters是可转换的。

您必须以一种或另一种方式清理数据。我可能会首先确定每个单位测量相同维度1和公共别名2的单位,然后解析数据以从单位中拆分数量并将单位标准化3。一旦你这样做了,数据就可以直接比较了。

但是,如果数据库设计得当,这一切实际上只是解决了原本不应该存在的问题。


1 “质量”是用 、 等单位测量的尺寸kg。“长度”是用t、等测量的尺寸。lbmkmin

2例如,ininch表示完全相同的单位,pgs并且pages是相同的等。

3即确保特定尺寸始终由相同的单位表示:例如,将所有长度转换为m,将所有质量转换为kg,将所有页面转换为pages等。

于 2013-05-09T06:39:16.553 回答