database - 通过常识确定候选键?

标签 database relational-database data-modeling functional-dependencies candidate-key

我有下表:

Book_Name       Author  Edition Year
DB_fundamentals Navathe 4       2004
DB_fundamentals Elmasri 4       2004
DB_fundamentals Elmasri 5       2007
DB_fundamentals Navathe 5       2007

我必须在不知情的情况下确定可能的候选键。显然是 {Book_Name, Author, Edition}。从我教授的解决方案来看,这是正确的。但我会更进一步说 {Book_Name, Author, Year} 也是正确的。但在这方面,他表示“我们应该考虑到一些书籍可能有一个发行周期,导致在给定年份出现多个版本。”但是,为什么有人(如他所说,来自“常识”)在同一年(或根本)发行两本或更多同名和同版的书?

大家怎么看这件事?我不明白。

最佳答案

图书版本可能会唯一标识正在发行的图书。 year 大概是发布的年份。

如果数据表示“哪些书从我们的仓库运出”,您的解释就是正确的。在这种情况下,一个版本可能会在多年后发布。

教授显然在想“出版了什么版本的书”。

换句话说,在不知道表格用途的情况下,您无法真正指定。有时目的从数据中“显而易见”,但不一定。

关于database - 通过常识确定候选键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54619179/

相关文章:

MySQL - Count() 并将结果乘以 400

php - 如何在查询中使用交集?

database - 具有 3 个键的数据库表

java - 如何注释 Hibernate 实体以同时支持 Java 和数据模型?

c++ - 数据模型问题

rdbms - 当我们说 dbms 时,它是文件吗?

database-design - 将继承的对象存储在数据库中

mysql - 使用股票期权进行库存管理

python - 在 Python 中建模 4-D 数据(带时间戳)

php - 复杂的 PDO MYSQL 查询不起作用