数据库设计 - 是否应将日期用作主键的一部分

标签 database oracle database-design

将日期字段作为主键的一部分有哪些优点/缺点?

最佳答案

考虑一个零件库存表——如果您想在每天结束时存储库存水平,那么 part_id 和 date_of_day 的复合主键就可以了。您可以选择使其成为唯一键并添加一个合成主键,尤其是当您有一个或多个表使用外键约束引用它时,但除此之外,没问题。

所以它不一定有错,但与任何其他方法一样,它可能会被错误使用,如帕特里克的示例。

编辑:这是要添加的另一条评论。

我想起了我前一段时间写的关于数据库中的日期值到底是自然的还是合成的主题的文章。日期的可读表示为“YYYY-MM-DD”当然是自然的,但在 Oracle 内部,它存储为一个数字,只代表 Oracle 的特定日期/时间。我们可以随时选择和更改该内部值的表示形式(以不同的可读格式,或完全不同的日历系统),而不会使内部值失去其作为那个特定日期和时间的意义。我认为在此基础上,DATE 数据类型介于自然和合成之间。

关于数据库设计 - 是否应将日期用作主键的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/341055/

相关文章:

mysql - 如何使用 GUID 键对表的数据进行分页

database - 哪些分页方案可以处理快速变化的内容列表?

MySQL:识别重复数据

postgresql - 具有有限域的文本字段 : to factor into sub-tables or not?

sql - oracle pivot 中的列

python - "Server Error in '/' Application"由于 Oracle.ManagedDataAccess.Client.Oracle.Exception : ORA-20002: Procedure(CA_Clasic_Search)Error using Selenium

oracle - 如何在 Oracle 中强制按索引 rowid 访问?

mysql - 使用唯一的多列索引表的最佳方法?

php - 如何按照数据库中定义的顺序将行分配给并发进程?

java - 如何将双向 map 保存在数据库中?