【发布时间】:2010-09-23 13:58:39
【问题描述】:
Martin Fowler 为重复性任务的调度定义了一个优雅的对象模型here,它很好地映射到 OO 代码。然而,将其映射到关系数据库模式以实现持久性是很棘手的。
任何人都可以提出一个模式 + SQL 组合来封装他描述的所有功能,特别是在第 11 页的图像中。相交和联合相当明显 - 复杂性在于表示“时间表达式”,它采用可变参数和必须以不同的方式解释,然后将它们组合成一个“时间集”。
需要明确的是,有很多方法可以表示关系数据库中重复事件的概念。我希望大家的意见是如何映射这个特定的模型。
一些可能的选择:
- 定义参数数量和使用的“元”表。丑陋,但可能有效。但是,“时间表达”形式的数量可能有限,因此它提供的极端灵活性可能太多了。
- 某种形式的表继承,由 Postgres(可能还有其他)RBMS 支持。
序列化参数列表并将结果存储在 varchar() 中不是解决方案,因为该方法会阻止基于集合的查询:)
【问题讨论】:
标签: sql orm scheduling recurrence