此规范化表中出了什么问题?



我有以下album表:

<表类> album_id (PK) album_name artist_name 年 歌曲

我将创建一个名为artist的表,并在其中存储艺术家id和姓名,并在专辑表中使用外键约束引用它。你在专辑中有艺术家名时,这个会变成艺术家id。如果你像现在这样只有名字,这不会是一个问题,但如果你有额外的数据,你需要为一个艺术家存储,那么你将不得不创建一个表,这将打破当前的设计,因为你将在专辑表中有名字,而在艺术家表中有其他信息。

规范化的主要目标是减少冗余。艺术家的名字在专辑表中,如果你需要一个艺术家的名字和其他艺术家的信息,那么你必须包括专辑表和艺术家表,这是没有意义的,你不会有任何其他列除了名字链接在一起的表或复制的数据在两个地方,专辑和艺术家表,这将违反第一个范式。

此外,由于名称位于专辑表中,您的数据将被拆分到两个表中。艺术家的名字并不依赖于专辑,而是依赖于艺术家本身。这违反了存储在列中的值应该具有与第一范式相同的域原则。

最新更新