只有 id 和描述的表的数据库规范化

标签 database database-design database-normalization

假设我有两个表:

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/

相关文章:

database - 如何证明不存在既保持依赖又无损的BCNF分解?

database - 有损分解

android - [Android SDK]无法从资源中复制外部数据库(13MB)

php - 如何自动从数据库获取当前日期的数据

php - 更新数据库表格 : leaves image fields blank when no file is selected

mysql - 一个图像表可以服务两个外部表?

sql - 如何停止 EF(代码优先)检查模式更改

MySQL:如何获取存储函数内存储过程的结果?

database-design - Redis中最快的伪索引是什么?

database - 在数据库列中存储分隔列表真的那么糟糕吗?