我会创建一个小型社交网络来分享照片和视频以及活动:
照片表属性是:title, description, name
视频表属性是:title , description , name, runtime
事件表属性是:title, description, date_begining, date_end
如您所见,树表之间存在一些重复,但这一点都不重要。
所以每个模型(照片、视频、事件)都应该有可能添加评论,我正在使用Postgresql,简单的方法是使用Polymorfic Association,但我认为我也可以使用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,如果我将来更改或迁移到另一个数据库管理系统,我有可能会发现问题吗?