私はかなりの研究を行ってきましたが、一般的なコンセンサスは、可能な限りDBでシリアライズされたハッシュを避けることですが、私が持っている設計はこの構造に適しているので、意見やアドバイスを得たいと思っています. シナリオは次のとおりです。
:products
金融商品を格納するモデル/テーブルがあります。もともと別のモデル/テーブルに保存していた各製品has_many
の投資戦略。:strategies
各製品には完全に異なる戦略があり、各戦略には異なる属性があるため、各戦略の属性を正規化された一貫した列に操作することは非常に困難 (かつハック) になります (アプリケーションに単純に追加できない製品がある点まで) . さらに、戦略の属性は、その戦略に割り当てられた金額に基づいて変更される場合があります。
この問題を解決するために、:strategies
モデル/テーブルを完全に削除し、単にモデル/テーブルに戦略列を追加することを検討してい:products
ます。新しい列には、各製品の戦略の多次元ハッシュが格納されます。このオプションにより、データ ストレージの観点から非常に高い柔軟性が得られます。
私の主な質問は、この方法でデータベースを再構築することによって機能が失われることはありますか? 戦略の属性によって製品を検索する必要がある場合があり、多次元ハッシュ内での検索はせいぜい難しいと読んだことがあります。これは悪い習慣と見なされますか? 私が考慮していない3番目の解決策はありますか?