Microsoft AccessでDBを作成する際に、フロントエンド(Form, Query)とバックエンド(Table)を分割する、という事をよく行っています。
ここでふと疑問に感じた事ですが、「バックエンドを更に複数に(例えばTable毎に)分割し、フロントエンド側のリンクテーブルでそれぞれ参照する形にする」という設計をする事はあるのでしょうか。
こういった設計を指南する記載を見かけないため邪道なのかもしれませんが、
明確に非推奨とする解説も見つからないため(当たり前過ぎるから?)、理解のため質問させていただきました。
想像できるメリットとしては
- ファイルが壊れた時の影響範囲が限定的。リスク低減。
- 利用頻度が少なくサイズの大きなテーブルを別ファイルにする事でファイル読み込み時のオーバーヘッドが減少?(パフォーマンス向上)
- ファイル毎のサイズ上限を回避
想像できるデメリットとしては
- 複数のファイルを参照する事での余計なオーバーヘッド、トラフィック発生?(パフォーマンス低下)
- 1ファイル当たりの障害発生率が同じと仮定するなら統計上はDB全体の障害発生率が増加(安定性低下)
- DB接続のプログラミングが複雑になる?
- ファイルの数だけ管理や設定の手間が増える
- パフォーマンスにも安定性にも[全く/左程]影響せず、仕様上の要請(メリット3)を除けば単純に意味が無い。手間なだけ。
といったところでしょうか。
お付き合いいただければ幸いです。
注
- Accessに限った話ではありませんが現在Accessで設計しているため、フロントエンドもバックエンドもaccdbファイルを利用する、という形を特にテーマとしています。
- バックエンドはLAN内のサーバー、またはWAN上の外部サーバーに置く事を想定しています。
- 環境:Windows10 pro 32bit / Access2016 32bit