
実は、このテーブルは、2001年と2002 年で、列2に格納するデータを「体重」
から「年齢」へ変えているのです。したがって、同一の列が二つの意味を持つ「ダ
ブルミーニング」の状態になっているわけです
。詳しい理由はわかりません
が、このテーブルを作成した人物が「2002 年は体重はもう必要なくて、代わりに
年齢だけわかればいい」と判断した結果、このような奇怪なテーブルが誕生したの
です(『SQLアンチパターン』でも、このダブルミーニング列に近いアンチパター
ンとしてEAV(Entity-Attribute-Value)が紹介されています)。
このテーブルを見た瞬間、「これは反則だろう」と思った読者の方もいると思い
ます。そう、反則なのですが、やろうと思えばこのようなテーブルを作ることは可
能です。しかし、こうしたダブルミーニングの列が許されない理由は、列の意味が
不明確になることで、システムのバグを生み出す原因になるからです。
実際、このようなテーブル設計を行なうと、列名を見てもこの列が何のデータを
格納しているのか、判別できません。ダブルミーニングの列は、運用途中で意味が
変わってしまうため、「体重」とか「年齢」といった固定的な列名をつけることが
できないからです。これではプログラマも混乱します。
このようなダブルミーニングの列が作られる背景として考えられるのが、プログ
ラミング言 ...