2011-05-12 40 views
0

我有一个表有一个属性类别。例如,我保存具有属性的歌曲的表格类型:第三范式的设计是?

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

但我不能确定是否第一个案件(与一张表)违反任何规则的第三范式!

是吗?如果是,哪一个?

谢谢, 迈克

回答

1

的关键是什么?表格应该满足哪些依赖关系?那些是我们需要知道回答你的问题的事情。

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

用整数Genre_ID替换字符串属性Genre与任何常规表单完全无关。

+0

你是正确的在上面的所有表的关键是ID(s)。我忘了提及。谢谢你的回答! – Mike

2

跟着我重复。

“ID号码与标准化无关,ID号码与标准化无关,ID号码与标准化没有任何关系。”

如果你的目标是存储每首歌曲的名字一个流派,那么这个表

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

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

+0

知道了!谢谢! – Mike