通过规范化的数据库表与 Experience/Opinion

Database Tables via Normalization vs Experience/Opinion

我正在尝试解释如何将模拟 artist/soundtrack 数据(下图第一张)从 1NF 规范化为 2NF 再到 3NF,逐步获得我认为最适合的结果数据库。这几乎就像规范化阻碍了我想做的事情,但我只是不了解规范化过程中的某些内容吗?我可以肯定地看到如何通过使每一行唯一并删除重复项来将此模拟数据规范化为 1NF,但是在哪个阶段,例如我们被告知将 Composer ID 分配为轨道 table 或电影 table?那只是我们根据经验做的事情吗?有没有对错之分?

简而言之,我的问题是,任何人都可以展示或解释这里的模拟数据如何...

是使用所有前 3 个归一化阶段变成这样的吗?

好吧,您的 1NF 应该为每个曲目名称创建一个不同的记录,因此本质上是模拟数据,第一条记录分为 2...

2NF 是去除重复的键,在我看来,这就是您显示为 3 个单独的 table 的键,并且可能会达到您需要的程度。

您可以进一步添加 table 以允许一个曲目出现在多部电影中,即创建一个电影曲目 table 分别引用曲目 ID 和电影 ID(并删除电影 ID来自曲目 table).

同样,您可以通过同时拥有曲目作曲家 table 来达到允许协作创作的极端,但这可能不够普遍,值得付出努力

规范化随着经验的积累肯定会变得更容易,并且可以根据示例中的数据目的进行规范化。