将日期字段作为主键的一部分有哪些优点/缺点?
最佳答案
考虑一个零件库存表——如果您想在每天结束时存储库存水平,那么 part_id 和 date_of_day 的复合主键就可以了。您可以选择使其成为唯一键并添加一个合成主键,尤其是当您有一个或多个表使用外键约束引用它时,但除此之外,没问题。
所以它不一定有错,但与任何其他方法一样,它可能会被错误使用,如帕特里克的示例。
编辑:这是要添加的另一条评论。
我想起了我前一段时间写的关于数据库中的日期值到底是自然的还是合成的主题的文章。日期的可读表示为“YYYY-MM-DD”当然是自然的,但在 Oracle 内部,它存储为一个数字,只代表 Oracle 的特定日期/时间。我们可以随时选择和更改该内部值的表示形式(以不同的可读格式,或完全不同的日历系统),而不会使内部值失去其作为那个特定日期和时间的意义。我认为在此基础上,DATE 数据类型介于自然和合成之间。
关于数据库设计 - 是否应将日期用作主键的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/341055/