Database 第三范式混淆

Database 第三范式混淆,database,erd,Database,Erd,所以我对这个表进行了标准化。我开始意识到有传递依赖。因为学院名称和城市取决于学院代码。所以我必须创建新表并将这些列移到那里。但问题是,不同机构的代码会重复。那么,有必要为这个新创建的平板电脑创建我自己的唯一ID吗?或者我可以只使用外键吗???可传递依赖项是形式A的依赖项→ B→ C、 其中A是键,B是非键属性。我想你这里指的可传递依赖是Countt→ 学院代码→ 学院名称 然而,您说“instituteCode为不同的institute重复”,这似乎表明instituteCode和institu

所以我对这个表进行了标准化。我开始意识到有传递依赖。因为学院名称和城市取决于学院代码。所以我必须创建新表并将这些列移到那里。但问题是,不同机构的代码会重复。那么,有必要为这个新创建的平板电脑创建我自己的唯一ID吗?或者我可以只使用外键吗???

可传递依赖项是形式A的依赖项→ B→ C、 其中A是键,B是非键属性。我想你这里指的可传递依赖是Countt→ 学院代码→ 学院名称

然而,您说“instituteCode为不同的institute重复”,这似乎表明instituteCode和instituteName之间没有依赖关系。依赖性要求对于行列式的任何给定值(左侧),依赖(右侧)属性只有一个可能的值。假设相同的机构代码可以用于不同的机构,那么这些不同的机构可能有不同的名称?如果是这样,那么传递依赖项Countt→ 学院代码→ instituteName不起作用,并且将这些属性放在同一个表中不会违反3NF。这只是我的假设;您需要自己找出实际应用的依赖项

如果计数→ 学院代码→ instituteName不起作用,那么您可以为instituteCode和instituteName创建一个新关系,其中instituteCode是主键(因为instituteCode→ 学院名称)

是否有必要为这个新创建的帐户创建我自己的唯一ID 桌子


不需要。规范化从不要求创建新属性。

ok这很有帮助。但对于一些机构来说,只有机构名称和城市,在这种情况下,唯一的ID从我这边是必要的,对吗@SqlVogel识别机构的属性是什么?名称名字和城市?你可以发明你自己的备选键值,但除非你能确定每个键值属于哪个机构,否则这不会有帮助。正确,但如果我制作复合键(城市和名称),那么它会占用太多内存。但是如果我声明我自己的研究所ID,那么当我用join连接这两个表时,它会占用更少的内存,比较也会很快。。你不这么认为吗?@zohaibkhan在你担心空间或速度之前,你需要学习更多的设计基础知识。当你这样做的时候,应该在你证明存在问题之后。您不应该将优化与规范化混淆。正确。Thnx用于友好建议@philipxy