0

对于我正在做的评估任务,实体相册具有属性also_bought,这是一个自引用属性。然而,这一个属性对于任何一个专辑都有多个条目 - 因为同时提出的建议很少只有一个建议 - 因此,在标准化方面有点问题。我不确定它是否通过1NF。自我参考

需要明确的是,整个实体的集合为

专辑(album_id,标题,播放时间,类型,上映时间,价格,also_bought)

+0

你的意思是“1NF”的定义是什么? (请参阅我的答案中的链接。)“多个条目”是什么意思?那also_bought值是album_ids列表?什么是你的列的类型? – philipxy

回答

0

“也买”的物品应存放在单独的表,就像是。

AlsoBought (table) 
    album_id 
    also_bought_album_id 

然后配置来自两列的外键以引用Album.album_id。

0

你的意思是专辑是一个“自引用”,因为它从一个列表FK(外键)到另一个在同一个表? (当列表的子列值必须出现在其他地方时,FK约束成立。)如果您的意思是also_bought的类型是album_id的列表,则从前者到后者都不存在FK,因为前者的值(列表ID)不是后者的值(ID)。有一个限制提醒你FK。

无论如何,规范化是对一个表进行的,并且不依赖于FK。

但是,只要你是"normalizing to 1NF" eliminating "non-atomic columns"你必须先决定你的“表”“列”包含什么。如果你为一行中的列确定一个单元格包含“许多值”,那么你没有关系表,你必须得出一个。最简单的方法是假定一组值列以获得关系,然后按照standard rules for elimination of too-complex column types