2017-01-06 11 views
0

私は誰でもこの仕事を助けてくれると思っています。私は仕事中にこのプロジェクトに参加しましたが、どこに行かなくてもマネージャーはこれをやっている方法が分かりません。データベースの成分を標準化する

基本的に、すべての成分を含む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

私ができるようになる方法:

1)標準化し、すべての私の既存のデータ 2)私はリスト 3を持っているので)各成分を分離、私は追加したいときにExcelのモデルを作成します。原料、それは私の既存のリストでそれを確認しますか? (これは私が行う方法を知っている)

ありがとうございます!いくつかの提案を愛するだろう!

+0

データ - >テキストを列に使用することができます。カンマを区切り記号として使用すると、1つの列に1つの要素が表示されます。それはあなたを始めさせるのに役立つのですか?また、「既存のすべてのデータを標準化する」をどのように定義しますか?単純に同じ区切り記号を使用すると、それを標準にすることはできますか? – BruceWayne

+0

「標準化する」とは、成分リストを一貫したフォーマットにし、同じスペルを修正した同じ成分を持つことを意味しました。 –

+1

@BruceWayneによって提案されたText to Columnsを実行する前に、すべての '.'sを'、 'sに変更する必要があります(実際の成分名の中に' .'sがないと仮定します)違いの源泉 – YowE3K

答えて

1

データモデリングの観点からは、製品と成分の2つのエンティティがあり、それらはN対Mの関係にあります。これは、ツリーのリレーショナルテーブルに収まることができます。これは、Excel *に3つのシートとして保存できます:製品のリスト、成分のリスト、製品と成分の間の関係のリスト。しかし、それはもちろん最終的な写真だろう。

これらのシートにデータを取り込む(ETL)には、データ品質が低い(名前の相違)ため、いくつかの作業が必要です。おそらく、CSVインポートで可能なすべての区切り文字を使用して、BruceWayneが示すように、入力として直接sedスクリプトをテキストとして使用して自動化することができます(セパレータの標準化)。しかし、その一部はおそらく人間の介入(異なる名前を修正する)を必要とするでしょう。

|---------|-------------|------------|-------------| 
|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 | 
|---------|-------------|------------|-------------| 

私は、発生する可能性がある他のすべての等価名に標準的な名前の別のマッピングを構築することであることをお勧め何か:区切り文字を選択し、スペースを固定することは、おそらくそこにあなたを取得する必要があります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|Ingredient B|Ingredient C| 
|---------|------------|------------|------------| 

のリストにそれをマップするために:

マッピングが続い

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

ようになり、あなたは、ルックアップ機能を備えた標準化されたテーブルに元のテーブルをマッピングすることができるはずです(マッピングテーブルの2番目の列で重複排除を使用して):

|------------| 
|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| 
|---------|------------| 
  • 免責事項:データベースの観点から、あなたができる場合はエクセルよりも(おそらくアクセス付き)リレーショナルデータベースを使用する方が賢明です多くの場合、データを格納するためにExcelを使用しています。セルを削除したり、行や列を移動したりするなど、Excelで誤った操作を行うと、データが重大なエラーに陥り、運用環境で使用すると悲惨な結果を招く可能性があります。 Excelはデータベースのバックグラウンドがなくても使いやすくて使いやすいですが、注意して使用してください。
+0

最終的にBOMに関するすべてです http://stackoverflow.com/questions/17651424/bill-of-materials-database-model – Storax