こんなお話で考えてみましょう。
 教頭先生は問い合わせをしました。
 「1年3組のサトウヨシヒロくんの英語の成績は何点だね?」
 校長先生は問い合わせをしました。
 「生徒番号01020311の英語の成績は何点だね?」
 正確にサトウヨシヒロくんの英語の成績を答えてもらえるのはどちらでしょう。
 サトウヨシヒロくんの学年も成績も名前も出ていませんが校長先生のほうが確実にサトウヨシヒロくんの成績を手に入れられます。
 なぜでしょう。
固有番号・ID
サトウヨシヒロという名前の生徒は、絶対に1年3組にいないですか?いるかもしれないですよね。今はいなくても改名や転校生でいるかもしれないですし、もしかしたらとんでもない間違いなのですが、カトウハルヒロくんがサトウヨシヒロくんとして登録されているかもしれません。
 極端に言えば、「1年3組のメガネをしている身長166cmの男子」がもしかしたらサトウヨシヒロくんしかいなくても、その情報は不確実なのです。
 特にコンピュータで行われる情報は。
 今、社員や顧客の情報管理はコンピュータでやるのが普通の時代になっています。
 そこで、コンピュータにより確実にそのデータと指定する場合は、他にも重複する可能性の絶対にないものを固有番号として指定する必要があるのです。
 このような固有番号のことをIDとも言います。
 固有番号には、例えばマイナンバー、学生番号、社員番号、携帯電話の電話番号もそうですね。車の車両についてはナンバープレートがあります。
 何度も言いますが、固有番号は決して重複するものを設定していないですし、重複するものを設定はいけないです。
 これを間違えるとコンピュータの仕組みが全部変わってしまいます。
 基本的にはコンピュータは固有番号で様々なものを管理しているので、固有番号がないとコンピュータでは管理できません。
 そのくらい固有番号というのは大事です。
では、固有番号は、どんな表でも1つしか出てこなくて重複はしませんか?
主キー
生徒一人一人の固有番号は、生徒一覧表の中では1つしかありません。同じものはありません。
 しかし、2学期制として、前期後期、それぞれ中間、期末とテストがありますが、そのテストのたびに成績を管理する成績一覧表には、生徒の固有番号は1年間で4回出てきます。
 このように、その生徒の情報を他の表に記録する場合は何度も出てきます。
 成績一覧表のほうの絶対に重複しない固有番号は、主キーと呼ばれることもあります。主キーは、その一覧表の中だけでは重複はありませんが、他の表では何回も出てきます。
この時に主キーを氏名などの重複する可能性があるものにした場合、違う人なのにその人の成績として読みだされてしまう可能性があります。
リレーションシップ
上記のように主キーによって他の表を参照するような関係になった表同士の関係を、リレーションシップと呼びます。
 リレーションシップのほとんどは、片方が主キー1つのものは1つしかなくて、もう片方が参照した主キーが複数出てくる関係にあります。このような関係を1対多の関係と呼びます。片方の表では1つのものが、もう片方の表では1つ以上多く出てくるという意味です。
 1対多の関係のものには、次のようなものがあります。
- 商品一覧の商品コードに対する売上一覧
 
- 社員一覧表の社員コードに対する給与一覧
 
- 顧客一覧表の顧客コードに対する販売一覧
 
- ドラクエの武器一覧表の武器コードに対するキャラクターの装備一覧
1対多になっているものは、1のほうのデータを1件消すと、多の方では、そのデータが何者か変わらなくなるので、初めに多のデータを消してから1を消すというようにした方がいいでしょう。
 うーん、私は1も多も消さないで、1のほうの備考欄に旧データとかとしておくことをお勧めします。もし記録されている内容が個人情報で消さなければならない場合は、ダミーデータと明らかにわかる☆☆☆☆☆☆とか、日付や数値ならありえない値を入れておきます。
まとめ
今回は、コンピュータで扱うデータや一覧表というのは、そのデータが明らかにそのデータだとわかる形になっていなければデータとして混乱してしまう、いつか間違いが起きるということをお話しました。それを防ぐためには、主キーとリレーションを意識することです。
 これをExcelで実現するのは、VLOOKUP関数です。
 人間は、大体の情報で何を指しているかわかるのですが、それって本当はそのものと特定されてはいないのです。「ガッキーの写真どっかにないかな」、ガッキーと呼ばれる人は何人もいます。でも僕たちは彼女を思い浮かべますが、話の流れでそう頭の中で確定させているのですが、それってパソコンさんに伝えるには危険なことなのです。

 
 
コメント