ボクがデータベースというものを知ったのは40年以上前のことです。リレーショナル・データベース(RDB)と呼ばれていましたがボクの扱うコンピュータ(汎用機)には採用されていませんでした。当時の磁気ドラムが50MB×4の合計200MBという記憶容量のせいもありましたが、RDBのソフト自体の開発に数千万もかかるという予算的な制約もありました。

当時、データベースといえば「ウルトラ警備隊」の基地に置かれていた磁気テープが「カクッ、カクッ、キュイーン」と動くようなもので検索速度も今のスマホにも遠く及びません。それならデータベースを導入するよりはインデックスファイルとプログラムでデータベース風のものを作った方がスピードが速く安上がりでした。今では無料で使えるデータベースソフトもあり性能も隔世の間がありますからボクもシステム開発をするときにはデータベースを使いますが、当時はとても考えられない時代でした。

インデックスファイルとは「索引ファイル」などと呼ばれており、Excelのようなデータの中の特定の列に索引(インデックス)をつけて素早く検索する仕組みです。Excelのデータでは通常セルと呼ばれるマスの中にデータを書き込んで表を作りますがそのデータの中から特定の行を検索するときには指定した特定の行をシーケンシャル(順次処理)で全部読み込んで条件に合うデータを探しますが、その特定の行にあらかじめインデックス(索引)を付けておいて索引だけを見てデータを検索するのがインデックスファイルです。

このインデックスには「プライマリーインデックス」と「セカンダリーインデックス」というものがあって、プライマリーインデックスには重複するデータを指定することができません。一方でセカンダリーインデックスには「重複キー」が許されているので「氏名」や「生年月日」、「住所」という重複することのあるデータにもインデックスをつけることができます。だから「生年月日が2005年10月24日の人を抽出せよ」という命令をコンピュータに与えると複数の人のデータが抽出されることもあります。

以前、当時の厚生労働省で「消えた年金問題」が大問題になったことがありました。国民手帳にはそもそも国民一人一人に「基礎年金番号」という重複のない数字が割り当てられているのですが、役所の職員が名寄せに使っていたのは「氏名」でした。

ご存知の通り氏名には同姓同名があるので国民一人一人を特定することはできません。なぜなら結婚などで名前が変わってしまうとデータの連続性はなくなるからです。なのに社会保険庁が基礎年金番号を使わなかったのか詳しくは明らかにされていませんが、ちょっと考えればわかることをやらなかったために5,000万人の年金データが行方不明になったことの責任は重大です。そのこともあって当時の与党自民党は選挙で大敗して政権の座を追われることになりました。

同姓同名という重複があり結婚や養子縁組などで変化する可能性のある「氏名」というデータをシステムの中でプライマリーインデックスにすることはできません。しかしその運用を勝手に変えたのはデータベースのシロウトである社会保険庁の役人です。しかしいくらシステムに疎いからといって全く同じ名前を見て別人だと判断することができないことくらいは常識で考えてもわかることです。

このように業務のロジックを考える上でシステム的な発想が必要になることは少なくありません。ちょっとしたボタンの掛け違いが重大な事故に発展することは往々にして起こります。それを防ぐために少なくとも今の時代には「オレはメカに弱いから」などというつまらない言い訳を許さず全ての人が論理的な思考を身につけることが必須条件と言えるのではないでしょうか?