データ キーの名前を 1 か所と 1 か所だけで変更でき、アプリケーションとデータベースの両方で適切に処理できるパラダイムはありますか?
私は最近、クラス定数を使用してデータベースのフィールド名にマップすることに頼りましたが、それでも未加工のデータベース キーに合わせてそれらを保持する必要があります。
私が言いたいのは、例として PHP を使用することです。
$infoToUpdateUser[ User::FIELD_FIRST_NAME ]
これは、定数で変更する場合、そのフィールドへのすべての参照を変更するためにコードを検索する必要がないことを意味します。
これが発生する別の領域は、フィールドの参照です。初期の設計上の決定が不十分だったため、たとえば、次のようなテーブルがあります。
( テーブル名 : primary_key )
- 猫 : cat_id
- 犬 : dog_id
- parrots : bird_id (覚えておいてください、設計が悪いため、parrots / bird_id の不一致があります)
- トカゲ: lizard_id
- 等
次に、レコードを更新する一連のフォーム クラスがあるとします。
- アニマルフォーム
- DogForm は AnimalForm を拡張します
- CatForm は AnimalForm を拡張します
- ParrotForm は AnimalForm を拡張します
- 等
今度は、親クラスである AnimalForm の update 関数を使用して SQL データベースのレコードを更新したいので、20 個のサブクラスでコードを複製する必要はありません。
ただし、更新クエリを一般化する方法がわからないため、現在、各サブクラスには idFieldName メンバー変数があり、親クラスはそれをクエリに挿入します。
"UPDATE " . $this->table . " SET <data> WHERE " . $this->idFieldName
このようにするのはずさんに思えますが、現時点ではより良い解決策が思いつきません。
データベースとアプリケーションの両方で参照として共有されるデータキー名をリンクまたは抽象化する設計モデルまたはパラダイムはありますか?