
人気の理由でしょう。
この列持ちテーブルを、著者としてはアンチパターンではなくグレーノウハウに
分類したいと思います。データベースエンジニアの中には、このテーブルですらア
ンチパターンに分類するべきだと主張する人もいますが(『SQLアンチパターン』
では「マルチカラムアトリビュート」というアンチパターンとして紹介されていま
す)、著者はそこまで厳しく使用を制限する必要はないと考えています。それは、
以下に示すように、このテーブルには確かに無視できない利点があるからです。
列持ちテーブルの利点を挙げると以下の二つになります。
列持ちテーブルの利点は、そのシンプルさにあります。正規化とかスカラ値と
か、小難しいことを知らない人でも、このテーブルを見れば一目で、子1、子2、
子 3 の各列が配列を表現しているのだということがわかります。
そのシンプルさのために、このテーブルは、アプリケーションサイドとのインタ
フェース設計も非常に簡単になります。たとえば、実際に業務で出力される帳票な
どでは、このように被扶養者の情報を列として並べるフォーマットを持つものがあ
ります。そのようなときは、この列持ちテーブルであれば、単純にSELECTした結
果をダイレクトに帳票へ流し込むことができます。
一方で、このテーブルには欠点もあります。それは主に保守性と拡張性に関わる
ものです。