Нормализация простой таблицы SQL

У меня есть две разные таблицы, и я не уверен, что лучше всего вывести их из первой нормальной формы во вторую нормальную форму. Первая таблица содержит информацию о пользователе, а вторая — продукты, связанные с учетной записью. Если я сделаю это таким образом, я знаю, что это только в NF1, и что внешний ключ User_ID будет многократно повторяться в таблице 2. См. Таблицы ниже.

Table 1
|User_ID (primary)| Name | Address | Email | Username | Password |

Table 2
| Product_ID (Primary Key) | User_ID (Foreign Key) |

Это лучший способ сделать таблицу два, в которой идентификатор пользователя не повторяется? Я думал о том, чтобы иметь отдельную таблицу в базе данных для каждого пользователя, но из всех других вопросов, которые я читал на StackOverFlow, это не очень хорошая идея.

Ограничения, с которыми я работаю, составляют 1-1000 пользователей, а таблица 2 будет иметь приблизительно 1-1000 индексов на пользователя. Есть ли лучший способ создать этот набор таблиц?

2

Решение

Я не вижу NF2 нарушенным. Говорится:

таблица находится в 2NF, если она в 1NF, и ни один непростой атрибут не зависит от какого-либо надлежащего подмножества любого ключа-кандидата таблицы.

цитата из статьи в Википедии «Вторая нормальная форма», 2016-11-26

Таблица 2 имеет только один ключ-кандидат, первичный ключ. Первичный ключ состоит только из одного столбца. Таким образом, нет подходящего подмножества ключа-кандидата. Таким образом, NF2 не может быть нарушен, если NF1 не выполняется.

0

Другие решения

вы говорите «сделать таблицу два, в которой идентификатор пользователя не повторяется»

тогда почему ты не делаешь

Table 1

|User_ID (primary)| Name | Address | Email | Username | Password | Product_ID ( Foreign Key nullable)|

Table 2

| Product_ID (Primary Key)|
0

Нет ничего плохого в том, что значение появляется много раз. Избыточность возникает, когда два запроса, которые не являются синтаксически эквивалентными, всегда возвращают одно и то же значение. Только неконтролируемая избыточность — это плохо. Нормализация контролирует некоторую избыточность, заменяя таблицу более мелкими, которые присоединяются к ней.

Нормализация разбивает таблицу независимо от других таблиц. (Мы определяем нормальную форму базы данных как самую низкую нормальную форму, в которой находятся все ее таблицы.) Внешние ключи не имеют ничего общего с нарушением нормальных форм.

Узнайте, что значит для таблицы быть в заданной нормальной форме. Вам нужно будет выучить определение. И определения терминов, которые он использует. И определения терминов, которые они используют. И т.п. Таблица в 2NF, когда каждыйпростое число колонка имеет функциональная зависимость то есть полный на каждом ключ-кандидат. Также изучите алгоритм разбиения таблицы на компоненты в заданной нормальной форме. Предполагая, что эти таблицы могут содержать более одной строки, так что {} не является ключом-кандидатом, обе эти таблицы находятся в 2NF.

Таблица в 2NF также в 1NF. Так что вы не хотите «вытащить это из первой нормальной формы».

2NF не имеет значения. При работе с функциональными зависимостями важен BCNF, который максимально разлагается, но требует определенных более дорогих ограничений, и 3NF, который не разлагается настолько сильно, насколько это возможно, но требует определенных более дешевых ограничений.

0