写真やビデオ、イベントを共有するための小さなソーシャル ネットワークを作成します。
photos テーブルの属性は次のとおりです。title, description, name
ビデオ テーブルの属性は次のとおりです。title , description , name, runtime
イベント テーブルの属性は次のとおりです。title, description, date_begining, date_end
ご覧のとおり、ツリー テーブル間に重複がありますが、これはまったく重要ではありません。
したがって、各モデル (写真、ビデオ、イベント) にはコメントを追加する機能が必要です。私はPostgresqlを使用しています。これを行う簡単な方法は、ポリモーフィック アソシエーションを使用することですが、 hstoreを使用してそれらすべてを処理することもできると思います (写真、ビデオ、イベント) は、共通の属性を含む単一のモデル (共有など) のように、共有テーブルにプロパティ列を追加します。
Shares ( title:string, description:string, name:string, properties:hstore)
それで、ポリモーフィックな関連付けは必要ないと思います。次のようなモデルとの間Share
に単純な関係を追加できます。Comment
class Share < ActiveRecord::Base
has_many :comments
end
class Comment < ActiveRecord::Base
belongs_to :share
end
ここでの私の質問は、これを行うための最良の方法は何ですか (高速 + パフォーマンス) ? また、Hstore を使用している場合、別のデータベース管理システムに変更または移行すると、将来問題が見つかる可能性がありますか?