メモ: 業務依存度の変化からサロゲートキーもまた逃れられない

サロゲートキーとは、そもそも何か? ナチュラルキーとどう違うのか?

「同じキーでも、システムの立ち位置によって、それがナチュラルキーかサロゲートキーかは変わりうる」

・・・という示唆をどこぞからもらったので、それについて考えています。

じつは、「ICカード1枚1枚に付与される番号や、クレジットカード番号も、見方によってはサロゲートキーに近い値といえる」という指摘を受けるまで、クレジットカード番号なんて業務コードの最たるものであり、それ以外の考え方はありえないと思っていました。

自分が考えるサロゲートキーの特徴は、曖昧ながら、こんな感じです。

  • 業務に依存せず、論理設計には出てこないキー
  • 物理設計で作成するキー
  • 複数キーを取りまとめることもあれば、単一キーに対応することもある

しかしながら、「業務に依存しない」というのもまた、(前回書いた)程度問題です。

たとえば、次のような複数のキーについて考えてみます。

  • エンドユーザが直接目にしたり、入力したりするキー
    • たとえば、クレジットカード番号
  • エンドユーザは使わないけれども、顧客企業が使うキー
    • たとえば、ヘルプデスクの問合せ番号
  • 人間は使わないけれども、伝票に印字されるキー
    • 良い例が浮かばないけれど、存在すると思う
  • データベースの中だけにあるキー

おそらく、上の項目ほど、業務的な要素が大きいキーであるといえるでしょう。

こうして見ると想像できるとおり、キーの業務依存度は変化します。システムの作り手側に、変化を抑制しようという強い意思があれば、業務から分離し続けられる可能性はありますが、論理的には「変化しうるもの」です。

つまり、あるキーがサロゲートキーなのか否かは、変わりうるわけです。

正直、クレジットカード番号がサロゲートキーたりうるといわれて、「ないわー」と3回くらい唸りましたが・・・まあそれは、議論のための一例として。

きわめて定性的な基準で、あるキーをサロゲートキーと定義している場合があることは、知っておいた方がよいのかもしれません。(指摘に感謝です)