ユーザーが設定できるアプリケーションを書いたとしましょう。この「構成データ」をデータベースに保存するには、2つのパターンが一般的に使用されます。
単一行のテーブル
CompanyName | StartFullScreen | RefreshSeconds | ... ---------------+-------------------+------------------+-------- ACME Inc. | true | 20 | ...
名前と値のペアのテーブル
ConfigOption | Value -----------------+------------- CompanyName | ACME Inc. StartFullScreen | true (or 1, or Y, ...) RefreshSeconds | 20 ... | ...
両方のオプションを実際に見てきましたが、どちらにも明らかな利点と欠点があります。
- 単一行の表は、使用できる構成オプションの数を制限します(通常、行の列の数は制限されているため)。追加の構成オプションごとに、DBスキーマの変更が必要です。
- 名前と値のペアの表では、すべてが「文字列で入力」されています(ブール値/日付/その他のパラメーターをエンコード/デコードする必要があります)。
- (もっとたくさん)
どのオプションが望ましいかについて、開発コミュニティ内でコンセンサスがありますか?