我仍然是一名初级程序员,所以我只是想了解最佳实践。如果我有四个通知流[消息、事件、评论、基于位置],我应该为每种事件类型创建一个单独的表,还是应该创建一个表并添加一个描述事件类型的列。
(假设流量适中,rails,AR,Postgre 并且每个表都有相当相似的列 [id, user_id, other_object_id, message, time, ...])
感谢您的建议!
我仍然是一名初级程序员,所以我只是想了解最佳实践。如果我有四个通知流[消息、事件、评论、基于位置],我应该为每种事件类型创建一个单独的表,还是应该创建一个表并添加一个描述事件类型的列。
(假设流量适中,rails,AR,Postgre 并且每个表都有相当相似的列 [id, user_id, other_object_id, message, time, ...])
感谢您的建议!
这可能是一个软件设计问题。您在所有类型的通知之间是否有共同的行为?如果答案是否定的,那么只需为每种通知创建不同的模型。
但是,大多数情况下,您对通知有大量的共享行为,甚至是相同的行为。如果通知看起来都一样,并且彼此之间只有一些微小的差异,只需添加一个notification_type列并根据该列的值定义小行为。这将是更快、更务实的方式。
现在如果你想实现一个好的设计模式,你想实现 ActiveRecord 继承,在这里你将在 Notification 模型上定义常见的行为,然后 Messages、Events、Comments 等将从这个模型继承。
您可以在 Rails 文档中查找有关 Active Record 继承的更多信息:http ://api.rubyonrails.org/classes/ActiveRecord/Base.html,Martin Fowler 模式http://www.martinfowler.com/eaaCatalog/singleTableInheritance .html ,您会在网络上找到不同的示例