メモ: 業務依存度の変化からサロゲートキーもまた逃れられない
サロゲートキーとは、そもそも何か? ナチュラルキーとどう違うのか?
「同じキーでも、システムの立ち位置によって、それがナチュラルキーかサロゲートキーかは変わりうる」
・・・という示唆をどこぞからもらったので、それについて考えています。
じつは、「ICカード1枚1枚に付与される番号や、クレジットカード番号も、見方によってはサロゲートキーに近い値といえる」という指摘を受けるまで、クレジットカード番号なんて業務コードの最たるものであり、それ以外の考え方はありえないと思っていました。
自分が考えるサロゲートキーの特徴は、曖昧ながら、こんな感じです。
- 業務に依存せず、論理設計には出てこないキー
- 物理設計で作成するキー
- 複数キーを取りまとめることもあれば、単一キーに対応することもある
しかしながら、「業務に依存しない」というのもまた、(前回書いた)程度問題です。
たとえば、次のような複数のキーについて考えてみます。
- エンドユーザが直接目にしたり、入力したりするキー
- たとえば、クレジットカード番号
- エンドユーザは使わないけれども、顧客企業が使うキー
- たとえば、ヘルプデスクの問合せ番号
- 人間は使わないけれども、伝票に印字されるキー
- 良い例が浮かばないけれど、存在すると思う
- データベースの中だけにあるキー
おそらく、上の項目ほど、業務的な要素が大きいキーであるといえるでしょう。
こうして見ると想像できるとおり、キーの業務依存度は変化します。システムの作り手側に、変化を抑制しようという強い意思があれば、業務から分離し続けられる可能性はありますが、論理的には「変化しうるもの」です。
つまり、あるキーがサロゲートキーなのか否かは、変わりうるわけです。
正直、クレジットカード番号がサロゲートキーたりうるといわれて、「ないわー」と3回くらい唸りましたが・・・まあそれは、議論のための一例として。
きわめて定性的な基準で、あるキーをサロゲートキーと定義している場合があることは、知っておいた方がよいのかもしれません。(指摘に感謝です)