3NF数据库表

时间:2017-03-21 08:28:47

标签: sql database postgresql 3nf third-normal-form

我对这个 3NF(第三范式)的事情感到有点困惑。我有一个我需要做的项目,它需要在 3NF 。我创建了一些描述计算机不同部分的表格。

例如,我有一个名为CPU的表和一个名为COMPUTERSYSTEM的表。 CPU获得了列NAMEPRICESOCKETTYPECLOCKSPEEDCOMPUTERSYSTEM表是不同组件的组合,它们位于CPU表或某些其他组件表中,如GPU

所以我的问题是,这是 3NF 吗?表格CPU 3NF ?我理解 3NF ,因为每一行都需要依赖primary key,我的primary key是所有表格中的名称,不是价格和时钟速度等依赖名字?

1 个答案:

答案 0 :(得分:0)

<3> 3NF或第三范式是指遵循5个规范化规则中的前3个的表的组织:

  • 1NF =没有重复组(Phone1,Phone2等)
  • 2NF = 1NF +与PK直接相关的所有非关键属性
  • 3NF = 2NF +与PK直接相关的所有属性(FK到2NF表 包括在内)

插座 SocketTypeId SocektTypeDescription

CPU CPUID 生产厂家 SocketTypeId(FK到Socket) 时钟频率 价

COMPUTER ComputerSystemId ComputerSystemName CpuId(FK到CPU) 等...

SOCKET是2NF,因为它没有重复组,只有非键列(SocketTypeDescription)与其主键(SocketTypeId)直接相关

CPU是3NF,因为它没有重复组,所有它的非键列都与其主键直接相关,并且它对外部表的引用也与其主键直接相关。

出于同样的原因,计算机也是3NF。