0

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

例如,我有一个名为的表CPU和一个名为COMPUTERSYSTEM. CPU得到NAME了、PRICESOCKETTYPECLOCKSPEED。该COMPUTERSYSTEM表是不同组件的组合,这些组件位于CPU表或其他一些组件表中,例如GPU.

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

4

1 回答 1

0

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

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

SOCKET SocketTypeId SocektTypeDescription

CPU CpuId 制造商 SocketTypeId (FK to Socket) ClockSpeed 价格

COMPUTER ComputerSystemId ComputerSystemName CpuId (FK to CPU) etc...

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

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

出于同样的原因,COMPUTER 也是 3NF。

于 2017-03-21T12:35:24.530 回答