I am a bit confused about this 3NF (third normal form) thing. I have a project which I need to do and it needs to be in 3NF. I have created some tables which describes different parts of a computer.
For example I have a table called CPU and a table called COMPUTERSYSTEM. The CPU got the columns NAME, PRICE, SOCKETTYPE and CLOCKSPEED. The COMPUTERSYSTEM table is a combination of different components, which are in the CPU table or some other component table like GPU.
So my question is, is this 3NF? is the table CPU 3NF? I understand 3NF as every row needs to be dependent on the primary key, and my primary key is the name in all tables, isn't Price and clockspeed etc. dependent on name?
3NF, or Third Normal Form refers to the organization of a table that follows the first 3 of 5 rules of normalization:
SOCKET SocketTypeId SocektTypeDescription
CPU CpuId Manufacturer SocketTypeId (FK to Socket) ClockSpeed Price
COMPUTER ComputerSystemId ComputerSystemName CpuId (FK to CPU) etc...
SOCKET is 2NF because it has no repeating groups and it's only non-key column (SocketTypeDescription) is directly related to its primary key (SocketTypeId)
CPU is 3NF because it has no repeating groups, all it's non-key columns are directly related to its primary key and its reference to an external table is directly related to its primary key as well.
COMPUTER is also 3NF for the same reasons.