我有一些表格,我不确定使用多态关系是否有意义,因为在其中一个表格中有不同的列/属性。
(注:我在laravel 5.5建造)
以下是表格的简化版本:
pick_up_points, shipping_entities, products
id
name
pick_up_points_periods
id
pick_up_point_id
week_day // -> a number matching the day of the week (0->Monday, ..., 6->Sunday)
start_time // ex: "24:59"
end_time
shipping_entities_delivery_periods // (the shipping entities follow the same delivery pattern between them)
id
shipping_entity_id
week_day
start_time
end_time
product_promotion_periods
id
product_id
start_date // ex: "2017-10-25"
end_date
案例1 - 创建表格时段只是为了替换表pick_up_points_periods和shipping_entities_delivery_periods
periods
id
periodable_type
week_day
start_time
end_time
在这种情况下(1)它对我来说更有意义,因为它们使用相同的字段/列,但它会留下另一个句号表。
案例2 - 创建表格句点以替换所有* _periods表格(表格pick_up_points_periods,shipping_entities_delivery_periods和product_promotion_periods)
periods
id
periodable_id
periodable_type
week_day
start_time
end_time
start_date
end_date
在这种情况下(2)对我来说没什么意义,因为它们使用不同的字段/列,但它会将所有周期上下文表放在一起(通过减少更多的表数)。 。如果是pick_up_points_periods或product_promotion_periods,则会有未使用列的记录。
在laravel v5.5文档here中,有两个多态关系示例:
对我来说,评论和标签都是有意义的多态实体,因为它们在其他实体(帖子,视频或其他任何我想到的想法)上总是有相同的共享字段。
然而,在某些时期我可以想到它们的种类很多,例如:
其中每个实体/表可以具有不同的属性/列,即使它们仍然适合"期间"上下文。
我试图搜索类似的东西,如果有关于何时使用或不使用多态关系"的最佳实践,但我无法正确找到类似的情况。
所以我想知道:是否应该使用案例1,案例2或者根本不使用多态关系?每个人的利弊是什么?这件事有什么最好的做法吗?
提前谢谢。