标准化数据库的成分

时间:2017-01-06 08:13:05

标签: database excel excel-vba excel-formula vba

我希望得到任何人的帮助,我在工作中被置于这个项目中,我有点迷失在哪里,我的经理也不知道如何做到这一点。

基本上我们列出了含有所有成分的3000多种头发产品。我需要做的是创建一个包含所有这些成分的数据库并标准化名称。

以下是我面临的问题:

  1. 根据生产国的不同,成分略有不同
  2. 很多成分的格式不同,例如:

    Product A: ingredient A,Ingredient B,Ingredient C
    Product B: ingredient A, Ingredient B, Ingredient C
    Product C: ingredient A ,Ingredient B ,Ingredient C
    Product D: ingredient A.IngredientB.Ingredient C

  3. 我怎么能够:

    1)标准化我现有的所有数据 2)分开每种成分,这样我就有了一份清单 3)创建一个excel模型,当我想添加一个成分时,它会用我现有的列表验证它吗? (这个我知道怎么做)

    谢谢大家!会喜欢一些建议!

1 个答案:

答案 0 :(得分:1)

从数据建模的角度来看,有两个实体:产品和成分,它们处于N-to-M关系。这可以放在树关系表中,您可以在Excel *中存储三张纸:产品列表,成分列表,产品和成分之间的关​​系列表。但那当然是最后的画面。

现在,填充这些表格(ETL)需要一些工作,因为数据质量低(名称不一致)。其中一部分可以使用sed脚本直接在输入上自动化(标准化分隔符),或者如BruceWayne所示,使用CSV导入中的所有可能的分隔符。但其中一部分可能需要人为干预(修复不同的名称)。

使用CSV导入,选择分隔符和修复空格应该可以帮助您:

|---------|-------------|------------|-------------|
|Product A| ingredient A|Ingredient B|Ingredient C |
|Product B| ingredient A|Ingredient B| Ingredient C|
|Product C| ingredient A|Ingredient B| Ingredient C|
|Product D| ingredient A|IngredientB |Ingredient C |
|---------|-------------|------------|-------------|

然后我建议将标准名称的单独映射建立到输入中可能出现的所有其他等效名称。这种映射可以部分自动构建(根据您的观察结果明显改变案例等),但可能需要手动工作和反复试验。

映射可能看起来像

|-------------|-------------|
| From        | To          |
|-------------|-------------|
|ingredient a |Ingredient A | 
| ingredientA |Ingredient A |
| ingredient b|Ingredient B |
| IngredientB |Ingredient B |
|-------------|-------------|

然后,您应该能够将原始表映射到具有查找功能的标准化表:

|---------|------------|------------|------------|
|Product A|Ingredient A|Ingredient B|Ingredient C|
|Product B|Ingredient A|Ingredient B|Ingredient C|
|Product C|Ingredient A|Ingredient B|Ingredient C|
|Product D|Ingredient A|Ingredient B|Ingredient C|
|---------|------------|------------|------------|

并将其映射到成分列表(在映射表的第二列上使用重复消除):

|------------|
|Ingredient A|
|Ingredient B|
|Ingredient C|
|------------|

(产品也一样)。

您还应该能够填充规范化关系:

|---------|------------|
|Product A|Ingredient A|
|Product A|Ingredient B|
|Product A|Ingredient C|
|Product B|Ingredient A|
|Product B|Ingredient B|
|Product B|Ingredient C|
|Product C|Ingredient A|
|Product C|Ingredient B|
|Product C|Ingredient C|
|Product D|Ingredient A|
|Product D|Ingredient B|
|Product D|Ingredient C|
|---------|------------|
  • 免责声明:从数据库的角度来看,如果可以使用关系数据库(可能使用Access),则建议使用关系数据库,即使很多人使用Excel存储数据也是如此。在Excel中进行错误的操作(例如删除单元格以及移动行和列)可能会导致数据中出现严重错误,如果在生产中使用这些错误可能会产生灾难性后果。即使没有数据库背景,Excel也很棒且易于使用,但请小心使用它!