0

对于我正在执行的评估任务,实体相册具有属性also_bought,这是一个自引用属性。然而,这个属性对于任何一张专辑都有多个条目——因为also_bought 推荐很少只有一个推荐——因此,在标准化方面有点问号。我不确定它是否通过了 1NF。

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

专辑(album_id、标题、播放时间、流派、release_date、price、also_bought)

4

2 回答 2

0

“还买了”的物品应该存储在一个单独的表中,例如。

AlsoBought (table)
  album_id
  also_bought_album_id

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

于 2017-07-24T15:59:10.240 回答
0

您的意思是Album是一个“自引用”,因为它在同一个表中具有从一个列列表到另一个列列表的 FK(外键)?(当列列表的子行值必须出现在其他地方时,FK 约束成立。)如果您的意思是also_bought 的类型是专辑 ID 的列表,则从前者到后者没有 FK,因为前者的值(列表ids) 不是后者 (ids) 的值。有一个约束让你想起了 FK。

无论如何,标准化是对一张表进行的,并且不依赖于 FK。

但是任何时候你“规范化到 1NF”消除“非原子列”,你必须首先决定你的“表”“列”包含什么。如果您决定一行中某列的单元格包含“许多值”,那么您没有关系表,您必须想出一个。最简单的方法是假设一个设置值列来获取关系,然后遵循标准规则来消除过于复杂的列类型

于 2017-07-24T16:06:18.420 回答