我正在我的应用程序中实现多态事件架构
会有很多类型的事件,每种类型与数据库中的其他表有不同的关系
我正在考虑像
这样的事情- AppEvents(id, type, subtype, data::json)
- VisitorEvents(app_event_id, visitor_id)
- ConversationEvents(visitor_event_id, conversation_id, message_id, user_id)
- TrackingEvents(visitor_event_id)
其中AppEvent
是与每个子类关联的基类。
我的问题是这个架构是否效率低,因为它可能需要相当多的连接,如果我想要所有与conversation
或visitor
相关联的事件。
我还希望事件表非常密集,并且必须索引每个外键,这可能会减慢插入速度。
AFAIK的替代方法是拥有一个AppEvent
表,其中包含许多可以为空的关联列。
有什么建议吗?