我还是一名程序员,所以我只是想了解最佳做法。如果我有四个通知流[消息,事件,注释,基于位置],我应该为每个事件类型创建一个单独的表,还是应该创建一个表并添加一个描述事件类型的列。
(假设中等流量,rails,AR,Postgre和每个表具有相当相似的列[id,user_id,other_object_id,message,time,...])
感谢您的建议!
答案 0 :(得分:3)
这可能是一个软件设计问题。您是否在所有类型的通知之间有共同的行为?如果答案是否定的,那么只需为每种通知创建一个不同的模型。
但是,大多数情况下,通知的共享行为都很多,即使是相同的行为也是如此。如果通知看起来都相同,并且彼此之间只有一些微小的差异,只需添加 notification_type 列并根据该列的值定义小行为。这将是更快捷,更务实的方式。
现在,如果要实现良好的设计模式,您需要实现ActiveRecord继承,您将在Notification模型中定义公共行为,然后消息,事件,注释等将从此模型继承。 / p>
您可以在Rails文档中查找有关Active Record继承的更多信息:http://api.rubyonrails.org/classes/ActiveRecord/Base.html,Martin Fowler模式http://www.martinfowler.com/eaaCatalog/singleTableInheritance.html,您将找到不同的示例across the web