私は0個以上の設定可能なプロパティを持つことができる "ルートオブジェクト"を作成する必要があるシステムで作業しています。値を持つカスタムプロパティを持つオブジェクトを持つデータベースをモデル化する最良の方法
その顧客は、私たちが常にcustomerId、名前、生年月日を保存することを知っているとしましょう。これはテーブルの列です。しかし、システムは顧客のためにカスタムプロパティを扱うことができるはずです。
このシステムのユーザーは、この顧客の都市、電話、電子メールを保存したいとします。どのように私はこれをサポートするための最良の方法でデータベースをモデル化しますか?
これは私がテーブルの面で考えているものです:
Customer
- CustomerId
- Name
- Birthdate
CustomerProperties
- CustomerPropertyId
- Name
CustomerPropertyValues
- Id
- CustomerId
- CustomerPropertyId
- Value
これは「市は」-table「CustomerProperties」にCustomerPropertyだろうし、そのプロパティの値は次のようになり設定してCustomerPropertyValuesテーブルのエントリとして保存されます。
このようにして、私は都市Xのすべての顧客をSQLで照会することができます。
私はすべてのカスタムプロパティをjson blobとして保存しようと考えていましたが、これはクエリを非常に難しくし、これはうまく行かないと思います。
私が思っているのは、これはdb-modolの私の例ですか?これをモデル化する良い方法はありますか?これに関してパフォーマンスや課題などの点で「認識しておくべきこと」は何か?
ご協力ありがとうございます。
https://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model – kwarunek
この呼ばれるエンティティ属性値モデルhttps://en.wikipedia.org/wiki/Entity% E2%80%93attribute%E2%80%93value_modelと反パターンと考えられていますが、多くはその "良い解決策"と主張しているようです。 –
@AlekseiMaideありがとう!私はこの "エンティティ属性値モデル"の "正式な"名前について知らなかった - ありがとう!だからこれが反パターンであるなら、私はどのように問題に近づくだろうか? –