3NF Таблицы базы данных

Я немного озадачен этой 3NF (третьей нормальной формой) вещью. У меня есть проект, который мне нужно сделать, и он должен быть в 3NF. Я создал несколько таблиц, которые описывают различные части компьютера.

Например, у меня есть таблица с именем CPU и стол называется COMPUTERSYSTEM, CPU получил столбцы NAME, PRICE, SOCKETTYPE а также CLOCKSPEED, COMPUTERSYSTEM Таблица представляет собой комбинацию различных компонентов, которые находятся в CPU таблица или какой-либо другой компонент таблицы, такой как GPU,

Итак, мой вопрос, это 3NF? это стол CPU 3NF? Я понимаю 3NF, так как каждая строка должна зависеть от primary key, и мой primary key Является ли имя во всех таблицах, не зависит ли цена и тактовая частота от имени?

2 ответа

3NF, или Третья нормальная форма относится к организации таблицы, которая следует первым 3 из 5 правил нормализации:

  • 1NF = Нет повторяющихся групп (Phone1, Phone2 и т. Д.)
  • 2NF = 1NF + все неключевые атрибуты, непосредственно связанные с PK
  • 3NF = 2NF + все атрибуты, непосредственно связанные с PK (включая таблицы FK - 2NF)

SOCKET SocketTypeId SocektTypeDescription

CPU CpuId Производитель SocketTypeId (от FK до Socket) ClockSpeed ​​Цена

КОМПЬЮТЕР ComputerSystemId ComputerSystemName CpuId (FK to CPU) и т. Д...

SOCKET имеет значение 2NF, потому что в нем нет повторяющихся групп, а столбец не ключа (SocketTypeDescription) напрямую связан с его первичным ключом (SocketTypeId).

CPU имеет 3NF, потому что у него нет повторяющихся групп, все его неключевые столбцы напрямую связаны с его первичным ключом, а его ссылка на внешнюю таблицу также напрямую связана с его первичным ключом.

Компьютер также 3NF по тем же причинам.

Требование к столу в 3NF:

1. The table should be in 2NF.
2. There should not be transitive functional dependency between the table.

Предположим, что в таблице есть 3 столбца с именами student_id, Zip_code, City. Здесь student_id является первичным ключом. Таким образом, два других столбца должны зависеть только от student_id. Но город также зависит от почтового индекса. Следовательно, нам нужно разделить таблицу на две разные таблицы. Таблица 1: идентификатор студента, почтовый индекс и Таблица 2: почтовый индекс, город.

В вашем случае, в таблице CPU, я надеюсь (или она должна быть), все остальные столбцы, такие как цена, тип сокета и тактовая частота, зависят только от имени (pk). Так же и в 3НФ.

Справка: нормализация в базах данных

Другие вопросы по тегам