シノニム主義

長い間プログラムを書いていると、段々、実装よりも、インターフェースを重視するようになってくる。つまり、呼び出しの「名前」は変わらない方がいい。名前が変わると、その名前(関数名とか)を呼ぶコードを変える必要がある、名前(インターフェース)が変わらないまま、処理(実装)が変えられるようになっているのが理想だ。


DBでも同じように考えることができる、つまりプログラムから見える位置には「実体のテーブル」を置かない。プログラムが触るのはビューかシノニムにする。テーブルの変更が必要な場合はシノニムの張替、もしくはビューの再定義で対応するようにする。可能なら全てシノニムにしておく、つまり、「ビューのシノニム」が可能ならビューだって見えなくしておいたほうがいい。それができるように「スキーマ設計」をしておいたほうがいい。
この場合、シノニムは(呼び方は違うが)実質的には「インターフェース」として振舞う。つまりプログラムからアクセスする「名前(シノニム)は変わらないまま、実装(実体テーブル)を変えることができる」
他にもファイルシステム上の、ハードリンクなんかも同じように「パス(インターフェース)を変えず、中身(実装)を変える」用途に使う。
それぞれ、世界が違うと呼び方が違うが、横通しすると、同じような考え方だということに気づく。ある種のパターンだな。