私はParameter Enumeration Tablesと何度も組み立てて使用しています。 moduleは私のZXAF opensource frameworkの一部です。
基本的な設計は簡単です。Parameters
テーブルは、パラメータ化されたフィールドを必要とする各テーブルと1対多の関係にあります。我々はstatus
フィールドが含まれているusers
テーブルで作業している実際の例を、提供するために、この上で拡大
:それは次のようになります。フィールドはの制約を介してparams
テーブルにインデックス付けしてリンクします。
INDEX `FK_user_status` (`status`),
CONSTRAINT `FK_user_status` FOREIGN KEY (`status`) REFERENCES `params` (`id`)
ON UPDATE CASCADE ON DELETE CASCADE
注:私はあなたがこれは私たちに次のスキーマを提供します。この
を行うにはしたくない回があり、ここでCASCADE
を使用しています。
これの重要な概念は、データベースが参照整合性を維持し、コード内のデータモデルと統合パラメータ化データを含むようにできるようにすることです。このコードは、エンティティがどのように関連しているか、そして特定のフィールドの有効な値がどのようなものかなど、データベースに問い合わせることで調べることができます。
最後に私がパラメータTuplesの概念を導入し、説明したいと思います。これは、1組のパラメータ(タプル)を値に関連付けることを可能にする別のテーブルです。これはデータの中立的な意味で、PET
を拡張してルックアップと期待値を提供することができます。これは、新しい列挙を追加することが可能な拡張可能モデルに最も適していますが、それらに値を含める必要があります。
* *関係でこれを行うほうが良い私はfavour of enums in databasesではないんだけど、これが唯一の私の意見であり、それはあなたがして満足しているものになることがあります。
バインディングとマーシャリングはどのように行われますか?一般的なパラメータテーブル(つまり、すべてのパラメータを1つのアプリケーションに含める)を設計するための「パターン」または「一般的なプラクティス」を知っていますか? – JPCF
マーシャリングまたはアンマーシャリングプロセスを自動化できますか?実行時にDBテーブルからパラメータを生成するか?または、どのパターンが定数をバインドするのに役立つのでしょうか? – JPCF
それはあなたの言語とフレームワークが提供するツールに完全に依存します。 Pythonでは、ほぼ完全に自動化できます。 C#(およびその他の.NET言語)は、いくつかの自動化を提供するいくつかのツールを提供します。フレームワークが透明なマーシャルサポートを含むように特別に設計されていない限り、Cなどの他のものは安全な自動マーシャリングのための機会を提供しません。 – Arafangion