尝试在光盘详细信息场景中识别最小的功能依赖性

Eri*_*son 5 normalization database-design dependencies

我相信这个关系/表是第一范式(1NF):

集合cd_id,标题,标签,艺术家,类型,国家,song_id,song_title,长度)

注意:粗体表示键。

我设法确定的内容:

{cd_id, song_id} ? {song_title, length}
{cd_id} ? {title, label, artist, type, country}
Run Code Online (Sandbox Code Playgroud)
  • 这是正确的,说它满足1NF是否正确?
  • 我是否缺少更多的功能依赖项?

额外细节

所涉及的属性/列的上下文信息和/或样本值:

  • CD_id:009329
  • 标题:CD的标题
  • 艺术家:镍背
  • 类型:团体 | 独奏
  • 国家/地区:引用艺术家的国家或地区
  • Song_title: "把它烧到地上"
  • 时长:3:32 分钟

附加功能

一张CD下的每首歌,意味着会有重复。每次添加属于 CD 的歌曲。

小智 1

存在的一个问题是,一首歌曲可能会作为单曲发行,然后作为专辑的一部分发行,然后在“精选”专辑中重新发行。这将导致我有一个歌曲表,然后创建一个连接表,将专辑表连接到歌曲表。该连接表允许将一首歌曲连接到多个专辑。该表的 PK 可以是 Album_ID 和 Song_ID,使其成为一个组合。我还会考虑创建一个艺术家表,该表将分隔艺术家姓名、原籍国和团体/独奏等数据。这也可能阻止歌手/乐队更改名字的“王子效应”。表格(PK 为粗体)

专辑(Album_ID、Artist_ID、Album_Title、Release_Date)

艺术家(艺术家 ID、原籍国、类型、艺术家姓名)

歌曲(歌曲 ID、歌曲名称、歌曲持续时间)

歌曲_专辑(专辑_ID、歌曲_ID、曲目_编号)