見出し画像

商品データに主キーを設定する メリット

皆さん、こんにちは。高速検索の会社、フォルシア株式会社でデータクレンジングツールMassteryの開発を担当しています。エンジニアの伊藤です。

 以下の記事で、データに主キーを設定する意義について、名簿データを例にご説明しました。

今回は、現在Massteryを最も活用いただいている、流通企業(商社)様の「(仕入れ)商品のデータ管理」に即して、主キーを設定するとどのような嬉しいことがあるのか、ご紹介します。

 Massteryが流通企業様の課題をどう解決するかについては、以下をご覧ください。

 なお、実際の商品データに主キーを設定するのは簡単なことではなく、様々な困難があるのですが、それは次回ご紹介させていただきます。

(仕入れ)商品データにおける主キーとは

「仕入れ商品のデータってどういうもの?」と気になった方もいらっしゃるかもしれません。まずは、仕入れ商品データとはどのようなものかをご説明します。

主キーを設定する場合

まずは主キーを設定する場合です。仕入れ商品のデータは、例えば以下のような構造になります(説明のため簡略化しています)。わかりやすいように、主キーを構成する項目に★印をつけました。

データの持ち方は、取扱商品の特性や、業務システムのデータベース構造によって変わるので、あくまで一例ですが、典型的なデータ構造といえます。

「製造メーカー、メーカー品番、容量・入数」が主キーとして設定されているので、これらの値の組によって、レコード1つ1つが識別できるようになっているということがわかります。

 実運用においては、これらを品名を保持するデータと価格を保持するデータに分けて(正規化して)保持すると、管理上都合がよいことが多いのですが、分割すると説明が煩雑になるため、今回は上記の例でご説明します。

多くの場合は、主キーに対して、
・ 仕入れた企業独自の品番を主キーと1対1に対応するように採番し、
・ 自社品番を新しい主キーとして持ち替える
という操作を行って、以下のようなデータにします。

自社の品番を新しい主キーとして持ち替えることで、自社での商品データ・商品そのものの管理がしやすくなります。

 ポイントは、元の主キーと新しい主キーが1対1対応するよう設定するという点で、これにより
・元の主キーも、いざとなれば主キーになれること
・元の主キーと新しい主キー、どちらか片方がわかればどちらか片方が導けること
が保証されます。この恩恵については、追ってご説明します。

主キーを設定しない場合

主キーを設定しない場合は、どのようになるのでしょうか。最初にお伝えしたとおり、現実の商品データで主キーを設定するのは実はとても大変なため、設定しない/設定できないということは決してめずらしいことではありません。

 以下に例をあげます。データの中身のレコードは例1と同じで、違いは主キーの設定がないだけです。

レコードは同じですが、主キーを設定していない場合は、どの項目によってレコード1つ1つを識別できるかはわかりません。 このような場合も、何かしらの手段で主キーを用意しないと、業務システムを動かすことができません。

 今回のケースで言えば、レコードは例1と同じなので、これがデータ全体ならば、例1と同じように「製造メーカー、メーカー品番、容量・入数を、今から主キーに設定しようと思えばできる」のですが、一般的には、主キーがなければ、何か主キーが設定できない事情があるということです(たとえば製造メーカー、メーカー品番、容量・入数に重複があるなど)。

この場合は、1レコードごとに新しい自社品番を採番して、これを新たな主キーとするほかありません。エクセル操作の際によく行うような、一番左の列に「No.」の列を追加して、上から順に通し番号を振るイメージと似ています。

重複のある(かもしれない)項目と1対1対応するように採番しても、それもまた重複して主キーとしての役目を果たせない可能性があるため、順に新しい自社品番を振っていくことになります。

 自社品番を採番したら、これを新しい主キーとして、業務システムを動作させることができます。 これは一見、「元の主キー」がないケースと遜色ないように見えます。しかし、実は「元の主キー」があるのとないのとではデータの管理のしやすさが大きく変わってきます。 

商品データの主キーがないと何が起こるか

商品データの更新・削除ができない(やりにくい)

主キーがあるケースでは、「元の主キー」も主キーとしての役目を果たせる状態が担保されているので、仕入先から新たに届いた商品データと、以前受領済みの商品データの対応づけをすることができます。

そのため、仕入先から廃番・欠品・価格改定といった情報が届けば、その情報を自社のデータに反映することができます。

 一方で元の主キーがないケースでは、仕入先から新たに届いた商品データに自社品番はないので、対応づけができません。 この場合は「とりあえずは更新情報にも新規の自社品番を採番して、更新情報を新規情報であるかのように扱う」ほかありませんが、すると、同じ商品が複数の自社品番にわかれて管理されることになります。

もちろん、元の主キーがない場合でも、主キーとして使えそうな「製造メーカー、メーカー品番、容量・入数」を見ておおよその対応づけをすることは可能ですが、実際には主キーではないので、該当するレコードが複数見つかったりします。

すると
・1つ価格変更になっただけなのに、自社側では複数を価格変更しないといけない
・本来は自社側で複数価格変更すべきところ、1つ価格変更して安心してしまい、他は旧価格のままになってしまう(データが矛盾)

といったことが起こります。

データ量が増加する

更新レコードが届くたびに自社品番をどんどん採番するほうが、新規レコードが届いたときだけ自社品番を採番するよりも、データの増加ペースは速くなります。同じ商品にも異なる自社品番が振られることになるためです。

データ量が増加するほどに、データの管理コストも上昇してしまいます。
・データを保存するストレージの利用料金
・データを抽出したり、データに諸処理を施すのに時間がかかるようになる

矛盾した商品情報を保持・提供するリスクが高まる

「商品データの更新・削除ができない(やりにくい)」で少しふれましたが、同じ商品が複数のレコード(自社品番)にわかれてると、それぞれに違う情報が登録されてしまう可能性があります。価格改定時であれば、新旧価格が別レコードで共存することになる恐れがあります。

 また、例1では仕入元は1種類(A商事のみ)でしたが、別のB商事からも同じ商品を仕入れたような場合に、これらが同じものであると特定することができないので、 同じ商品であるにも関わらず、別商品であるかのようにして異なる値段で販売してしまう恐れがあります。

 価格にかぎらず、こういった矛盾データが混入すると、業務や取引の混乱の元となります。

販売実績管理・在庫管理が難しくなる

同じ商品が複数のレコード(自社品番)にわかれて販売されると、販売実績も、わかれて取得されます。元の主キーとして使えそうな「製造メーカー・メーカー品番・入数」を見たとしても、どれとどれが同じ商品かわからないので、自社品番を頼りに、あたかも別の商品の販売実績として取得されます。

 すると、たとえば同じ商品のレコードが2レコードに分裂すれば、販売量は実際の半分に見えることになります。
注目度の高い売れ筋商品であれば、気づいたときに修正できるかもしれませんが、
・修正する手間がかかる
・修正するための業務フローが必要になる
・過去実績の修正をするのか否か、など考える必要が出てきます
・ 気づかれなければずっとそのまま
です。

 販売実績が分断され、販売実績にもとづいて販売戦略を考えたい場合には、困ってしまいます。

これは在庫管理についても同じことが言えます。同じ商品が複数の自社品番にわかれて管理されると、 正しい在庫の数が把握できなくなってしまいます。 ある商品の残数が10を切ったので追加発注をかけたら、実は別の自社品番で同じ商品の在庫を20持っていた、などということが起こりえます。

 一般に過剰な在庫を抱えることはリスクと捉えられますが、実際の在庫数を把握できないと、過剰在庫を抱える可能性が高まります。

最後に

仕入れ商品データの主キーとはどのようなものか、主キーを設定するとどのような恩恵があるのか、についてご説明してきました。

 説明のなかで「自社品番」というのが登場しました。この「自社品番」の存在が意味するとおり、現在は商品データの管理は各流通企業様ごとに分断しているという状況です。本日は触れませんでしたが、「JAN コード」と呼ばれる標準化されたコードも存在しますが、実際に流通している商品すべてが、JANコードによって網羅されているわけではありません。

今後は、業界全体で標準化した共通の品番を管理し「世の中にある商品」をまとめて管理・特定できる仕組みの構築が進んでいくものと思います。そういった標準化を進めるうえでも、データクレンジングは重要な役割を果たします。

 データクレンジングツールMassteryに興味を持っていただいた方は、ぜひMassteryの製品ページもご覧いただけると嬉しいです!

私達がご提供している製品「Masstery(マスタリー)」は、 多くの人手が必要だったデータ整備を自動化する画期的なデータクレンジングツールです。フォーマットの統一、カテゴリーの自動分類、独自の変換、差分情報の取得等、データ整備に必要なあらゆる機能をご提供しています。
Masstery 公式サイト:https://mstr.forcia.com/(データクレンジング) 
フォルシア株式会社 企業サイト:https://www.forcia.com/ (高速検索)

この記事が参加している募集

業界あるある

この記事が気に入ったらサポートをしてみませんか?