見出し画像

データの主キーとは? 意義についてやさしく解説します

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

今日は、データの「主キー」について説明します。データに対して適切に主キーを設定することで、データを正しい構造で管理し続けることができます。データクレンジングでMassteryをご利用いただくうえでも、重要な概念となります。

今日は、

  • 主キーとは何か

  • 主キーを設定することでどのような恩恵があるのか

 について、身近なデータを例に挙げながら、できるだけ易しくご紹介したいと思います。

主キーとは何か

Wikipedia先生によると・・・

Wikipediaの「主キー」の項目を見てみましょう。

主キー(しゅキー、英語:primary key)とは、関係データベースにおいて、組(レコード)の識別子として利用するのにもっとも好ましいものとして、関係テーブル)毎にただ一つ設計者により選択・定義された候補キーをいう。つまり、関係に格納されたレコードを一意に識別するための属性(列、アトリビュート)またはその集合のうち、そのために通常利用されるべき特定の一つをいう。

ウィキペディアより

なんだか難しそうですね。「んんん、関係データベース???」と思われたかもしれません。今日はそこまで踏み込んだお話はしませんのでご安心ください。

データやシステムを扱うエンジニアは理解していた方がよいですが、それ以外の方は、もっと簡単な理解でも十分に役立てることができます。
厳密さは少し犠牲にして、エッセンスをお伝えします。

やさしく一言でいうと?

やさしく一言でいうと、主キーとは「データ1行1行が表す対象を、1つ1つ識別するための項目(の組)」のことです。

主キーの項目の値に重複があると、対象を1つ1つ識別できなくなってしまうので、その役割からして、主キーの項目の値には重複があってはいけません。主キーは、データの意味づけであるとともに、データを管理するうえでのルールと言えます。

データを作成する人や管理する人が主キーを決めて、他の人にもわかるように明示します。

例えば、以下のような年度ごとの在籍者名簿を作成したとしましょう(説明の便宜上、ちょっと変わった名簿ですが、ご容赦ください)。

1行1行を識別するには「年度」と「会員番号」の列が役に立ちます。

 このとき、主キーは「年度」と「会員番号」ですよということを併記しておくと、他の人もこの名簿を管理しやすくなります。

 表計算ソフトやデータベースでは、「年度」「会員番号」の値の組み合わせが同じレコードが誤って複数登録されてしまうことがないように設定ができ、主キーのルールが確実に守られた状態を維持することができるので便利です。

社員名簿1(主キー:年度、会員番号)

主キーを設定することの意義

 主キーが設定されていると、何が嬉しいのでしょうか。
たとえば主キーがないケースを考えてみましょう。

次のような名簿は、会員情報を継続的・客観的に管理していくには不向きです。

社員名簿2(主キーなし)

確実に識別し、紐付けができる

2022年度の山田花子さんの住所登録を先日変更してもらったはずだが、今どうなっているか教えてほしいと言われたとしましょう。

 2022年に、同姓同名で住所も似た山田花子さんが2人います。
住所までしっかりきかないと、4,5行目のどちらに該当するのかわかりません。
一方で、社員名簿1のように会員番号が主キーを構成するとわかっていれば、会員番号を使えば間違えずに特定できます。

さらに、2021年度に在籍していた山田花子さんは2022年度も在籍しているか、この名簿で確認してほしいと言われたとしましょう。

2022年度には山田花子さんが2人いるうちのどちらかが同一人物で、引っ越しして住所が変わっているということなのでしょうか。それとも、2021年度の山田花子さんは会員をやめ、2022年度に別の2人の山田花子さんが会員になったのでしょうか
一方で、社員名簿1のように主キーがあれば、2,4行目の山田花子さんが同一人物で、2021年度に引き続き2022年度も在籍しているとわかります。

データの正しさを確認しやすい

山田花子さんから、さらに、今年2022年度に入ってから、会員向けの郵送物が2通届いたと言われたとします。郵送物は会員名簿にしたがって発送されているはずだが、重複登録されていないか確認してほしいと。

 2022年に2人いる山田花子さんのレコードはとてもよく似ています。
誰かが住所変更のときに、間違えて2つ登録してしまったのではないかと疑いたくなります。
一方で、社員名簿1のように主キーがあれば、別人物だとわかります。

もちろん、それでも(人手で作業していれば)会員番号と名前の対応を間違えるリスクはあります。しかし、変わりやすい住所を頼りに判断するよりは、安心して判断することができます。

仮に「姓・名」が主キーなら、確実に信頼できないことがわかります。

意味づけが明確になり、正しく管理しやすくなる

山田太郎さんから、来月引っ越すので2022年度の住所を修正してほしいと言われたとしましょう。

 引っ越すのは来月なので、いまの住所もまだ覚えておきたい気がします。

このとき、山田太郎さんのレコードを「更新」するのがよいでしょうか、もう1行「追加」するのがよいでしょうか。

 「更新」が適切そうであるというのは、データをよく見るとわかります(2022年度の山田太郎さんの行が2行あって、どちらが新しいかを表現する列はありませんから、追加してしまうとどちらが新しいかわからなくなってしまいます)。

しかし、絶対にもう1行追加してはいけないのかと言われると、「メモとして追記しておくぐらい、いいかな」と思ってしまう人もいるかもしれません。
一方で、社員名簿1であれば、「年度」と「会員番号」が同じ行は複数存在してはいけないと主キーによって明記されているので、修正の際のルールが明確でわかりやすいです。

 さいごに

主キーとは何か、主キーを設定する意義についてお話してきました。
主キーについて、少しでもイメージを持っていただけたなら幸いです。

今回は仮想上の名簿を例にとりましたが、実際の商品データ管理等においても、主キーを設定することで、データ管理上の恩恵が受けられます。

商品データ管理の場合の具体的な恩恵については、ぜひまたの機会にご紹介できればと思います。

  私達がご提供している製品「Masstery(マスタリー)」は、
多くの人手が必要だったデータ整備を自動化する画期的なデータクレンジングツールです。フォーマットの統一、カテゴリーの自動分類、独自の変換、差分情報の取得等、データ整備に必要なあらゆる機能をご提供しています。
詳細機能については、下記HPよりご確認頂けます。

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