-1

我有一个具有属性类别的表。例如,我保存具有 Genre 属性的歌曲的表格:

Songs(
ID (INT), 
Name (STRING), 
Genre: (STRING)
)

表格是第三范式吗?

我的意思是我知道最好将其保存Genre在另一个表中,并且表之间有如下关系:

Songs(
ID (INT), 
Name (STRING), 
Genre_ID: (INT)
)

Genre(
ID (INT),
Name (String)
)

哪里Songs.Genre_ID = Genre.ID

但我无法确定第一种情况(有一个表)是否违反了第三范式的任何规则!

可以?如果是,是哪一个?

谢谢,迈克

4

2 回答 2

2

跟着我重复。

“身份证号与标准化无关。身份证号与标准化无关。身份证号与标准化无关。”

如果您的目标是为每个歌曲名称存储一种流派,那么此表

song_name           genre
--
Toxic               Pop
Itsy Bitsy Spider   Children's

其中 song_name 是主键,在 5NF 中。(还有 4NF 和 3NF 等等)。

于 2011-05-12T22:17:53.110 回答
1

什么是钥匙?表应该满足哪些依赖关系?这些是我们回答您的问题所需要知道的。

我的猜测是 ID 是唯一的关键,并且 ID->{Name,Genre} 并且没有其他重要的非关键依赖项。如果那是正确的,那么 Songs 在 3NF 中。更重要的是它在 BCNF 和 5NF 中。

将字符串属性 Genre 替换为整数 Genre_ID 绝对与任何范式无关。

于 2011-05-12T22:04:39.307 回答