8-3 列持ちテーブル
配列型は使えない、でも配列を表現したい
配列型を使わずに、配列を模倣する論理設計
例
table: 扶養者
社員ID 社員名 子1 子2 子3
000A 加藤 達夫 信二
000B 藤本
001F 三島 敦 陽子 清美
これを列持ちテーブルと言う
書籍によってはアンチパターンに分類されることもある
列持ちテーブルの利点と欠点
利点 1️⃣ シンプルな設計
テーブルを一目見れば各列が何を指しているのか分かる
利点 2️⃣ 入出力のフォーマットと合わせやすい
アプリケーションの配列操作と相性が良い
欠点 1️⃣ 列の増減が難しい
拡張性に乏しい
テーブルに修正を加えると、アプリケーションも修正する必要があり(可能性が高い)、修正コストが高い
欠点 2️⃣ 無用のNULLを使わなくてはならない
レコードによっては、値がNULLの列が出てくる
NULLはSQL文の結果を混乱させる厄介な性質のため、できるだけ避けたい
行持ちテーブル
列持ちテーブルではなく行持ちテーブルを採用すべき
行持ちテーブルの例
table: 扶養者
社員ID 枝番 子
000A 1 達夫
000A 2 信二
001F 1 敦
001F 2 陽子
001F 3 清美