假设我有3个实体:人,位置和持续时间。
我需要能够每天为每个人分配一个持续时间,但事实证明,对于某个职位中的每个人来说通常是相同的持续时间,可能有一些例外。
所以我认为我有两种选择:
每天为每个人存储一个持续时间
让持续时间有一个type
字段,以确定它是针对某个职位还是某个人。为每个职位创建一个持续时间,并为每个人的持续时间设置不同于
选项1似乎更简单,但它可能不允许在创建后对持续时间进行编辑,因为没有簿记来管理“例外”。
有关如何处理此问题的任何想法?
换句话说,我希望有一对多的持续时间关系(通过职位),除非同一天同一个人有一对一的持续时间。
如果相关,我正在使用Postgres。
答案 0 :(得分:0)
为什么不在职位和人员级别都有持续时间?如果Person的持续时间为NULL,则只需将其解释为"从Position"重用持续时间。当你加入两个时,你可以使用COALESCE来选择当人的持续时间为NULL时的持续时间。
顺便说一句,如果您的关系真的是一对多,那么您只需要在Person中使用外键(引用位置)。只有多对多关系才需要额外的联结表。