我有一个event
表和一个place
表。有些events
属于某些places
,有些则不属于placed_event
。所以我决定创建另一个表:events
= place
属于placed_event
。我的问题是:我应该这样保留它还是只有events
表并删除placed_events
表,以便某些null
具有外键{{1}} - 即不会属于任何地方?
答案 0 :(得分:1)
答案是“这取决于”。
如果事件可以在0或1个位置,那么使用带有外键表的外键的事件表将正常工作;正如穆罕默德在评论中所说,如果place_id为空,那么事件就没有了。
如果事件可以分布在多个地方,例如一个有很多阶段的音乐会,那么在拥有连接表时就会有意义。
希望有所帮助。
答案 1 :(得分:0)
如果地点为has_many
个地点belongs_to
个地点,您可以随时将place_id
留空(nil
)。并非所有(或任何)关联都必须存在(除非您明确进行验证)。当然,您应该在代码中检查这一点,这样您就不会尝试从不存在的关联中访问数据(例如,@event.place.name
为place
时调用nil
)。