データの主キーとは? 意義についてやさしく解説します
皆さん、こんにちは。高速検索の会社、フォルシア株式会社でデータクレンジングツールMassteryの開発を担当している伊藤です。
今日は、データの「主キー」について説明します。データに対して適切に主キーを設定することで、データを正しい構造で管理し続けることができます。データクレンジングでMassteryをご利用いただくうえでも、重要な概念となります。
今日は、
主キーとは何か
主キーを設定することでどのような恩恵があるのか
について、身近なデータを例に挙げながら、できるだけ易しくご紹介したいと思います。
主キーとは何か
Wikipedia先生によると・・・
Wikipediaの「主キー」の項目を見てみましょう。
なんだか難しそうですね。「んんん、関係データベース???」と思われたかもしれません。今日はそこまで踏み込んだお話はしませんのでご安心ください。
データやシステムを扱うエンジニアは理解していた方がよいですが、それ以外の方は、もっと簡単な理解でも十分に役立てることができます。
厳密さは少し犠牲にして、エッセンスをお伝えします。
やさしく一言でいうと?
やさしく一言でいうと、主キーとは「データ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であれば、「年度」と「会員番号」が同じ行は複数存在してはいけないと主キーによって明記されているので、修正の際のルールが明確でわかりやすいです。
さいごに
主キーとは何か、主キーを設定する意義についてお話してきました。
主キーについて、少しでもイメージを持っていただけたなら幸いです。
今回は仮想上の名簿を例にとりましたが、実際の商品データ管理等においても、主キーを設定することで、データ管理上の恩恵が受けられます。
商品データ管理の場合の具体的な恩恵については、ぜひまたの機会にご紹介できればと思います。
この記事が気に入ったらサポートをしてみませんか?