假设我有两个表:
Table Genres: (Id, Description)
Table CD: (Id, ...CD related fields..., genreId)
如果我删除我的 Genres 表,并像这样创建我的 CD 表:
Table CD: (Id, ...CD related fields..., genreDescription)
假设我的 CD<->Genre
关系是一对一 我的表是否仍会被规范化?
我的问题是,当我的表只有 ID 和描述时,我真的需要另一个表吗?
最佳答案
假设 genreDescription 和 CD 的所有其他属性仅由该表的超键确定,并假设 CD 中 genreDescription 的存在不会将任何非键函数依赖项引入该表,那么我们可以说 CD至少满足 Boyce-Codd 范式。用不同的属性 genreId 替换 genreDescription 不会使表比现在“更规范化”。
您可能仍需要 Genre 表作为维护流派集的便利位置。流派表将存放任何由流派决定的属性。
在为流派选择正确的识别方案(因此是流派表的关键)时,请牢记简单、熟悉和稳定的原则。这些通常是使标识符实用和可用的理想特征。您需要确定 genreDescription 是否是一种适当简单、熟悉且稳定的识别流派的方法。
关于只有 id 和描述的表的数据库规范化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25388111/