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НФ.
Справка: нормализация в базах данных