記事一覧

プログラミング的思考「ユニーク」

2020.03.08

ユニークって単語を使った事がありますか?または聞いた事がありますか?
日常会話の中で「吉田君はユニークな人だね」って使う場合は、吉田君は楽しい人だねって意味になりますが、
コンピュータの世界で「吉田君はユニークな人だね」って言うのは、吉田君は唯一無二の人だねって事になります。
「唯一無二」の意味がわからなかったら、辞書で調べてみてください。あ、折角だからネットでググってみてください。


ユニークであると言う事は、必ず1つだけである事です。
例えば、「名前」はユニークではありません。同姓同名の人が居る場合があるからです。
「出席番号」は、クラスの中ではユニークですが、学校の中ではユニークになりません。
「学年-クラス-出席番号」の3つを組み合わせると学校内ではユニークになりますが、日本の中ではユニークになりません。
「電話番号」は市外局番まで入れれば、ユニークですが、電話を持っていない人も居ます。
住民基本台帳の「マイナンバー」は、ユニークで、かつ全員が持っています。(但し、日本国内に限られます。)

ユニークである事はコンピュータの世界では重要な事の一つです。

例えば、生徒の成績を管理するプログラムでは、ユニークな項目単位で成績を管理する必要があります。
名前はユニークでないので、名前毎に成績は管理できませんよね。
学校内の成績を管理するのであれば、「学年-クラス-出席番号」の組合せ毎に成績を管理すれば上手く行きます。
この学年とクラスと出席番号の組合せを「ユニークキー」と呼びます。
成績を管理するプログラムではユニークキー毎に成績を入力したり、ユニークキーで成績を検索したりする事になります。

学校の成績を管理するプログラムのユニークキーに「電話番号」は使えません。電話を持っていない人も居るからです。
学校の成績を管理するプログラムのユニークキーに「マイナンバー」は使えますが、そこまでは必要ありません。
生徒全員のマイナンバーを調べる手間と、個人情報を収集管理するリスクを考えると、マイナンバーを使うべきではありません。

プログラムの内容、範囲、コスト、リスクを考えてユニークキーを何にするか考える必要があります。
それから、もう一つ将来の拡張性も考えておきましょう。
将来、校長先生が新しい学校を開校した場合にも、この成績管理プログラムが使える様にユニークキーに「学校番号」を加える事で、
「学校番号-学年-クラス-出席番号」とすれば、校長先生の野望も満たす事ができて、予算も取りやすくなるかも知れません。