时态数据库的日期应该存储在一个或两个表中吗?如果这不违反规范化?
PERSON1 DATE11 DATE21 INFO11 INFO21 DEPRECATED
PERSON2 DATE21 DATE22 INFO21 INFO22 CURRENT
PERSON1 DATE31 DATE32 INFO31 INFO32 CURRENT
DATE1 和 DATE2 列指示 INFO1 和 INFO2 在 DATE1 和 DATE2 之间的时间段内为真。如果 DATE < TODAY,则事实已被弃用,不应再在用户界面中显示,但不应出于历史目的而将其删除。例如,现在不推荐使用 INFO11 和 INFO21。
我应该拆分这张桌子吗?我应该将状态(已弃用或当前)存储在表中吗?
为了进一步澄清这个问题,Deprecated 是业务使用的术语,如果您更喜欢“不是当前”,问题不是语义,也不是关于 sql 查询,我只想知道哪种设计违反或最适合规范化规则(我知道标准化并不总是可行的方法,这也不是我的问题)。