我对这个 3NF(第三范式)的事情感到有点困惑。我有一个我需要做的项目,它需要在 3NF 。我创建了一些描述计算机不同部分的表格。
例如,我有一个名为CPU
的表和一个名为COMPUTERSYSTEM
的表。 CPU
获得了列NAME
,PRICE
,SOCKETTYPE
和CLOCKSPEED
。 COMPUTERSYSTEM
表是不同组件的组合,它们位于CPU
表或某些其他组件表中,如GPU
。
所以我的问题是,这是 3NF 吗?表格CPU
3NF ?我理解 3NF ,因为每一行都需要依赖primary key
,我的primary key
是所有表格中的名称,不是价格和时钟速度等依赖名字?
答案 0 :(得分:0)
插座 SocketTypeId SocektTypeDescription
CPU CPUID 生产厂家 SocketTypeId(FK到Socket) 时钟频率 价
COMPUTER ComputerSystemId ComputerSystemName CpuId(FK到CPU) 等...
SOCKET是2NF,因为它没有重复组,只有非键列(SocketTypeDescription)与其主键(SocketTypeId)直接相关
CPU是3NF,因为它没有重复组,所有它的非键列都与其主键直接相关,并且它对外部表的引用也与其主键直接相关。
出于同样的原因,计算机也是3NF。