Должен ли я создать новую таблицу в моей базе данных?

В моей базе данных у меня есть среди других таблиц, products . Таблица продуктов содержит идентификатор, имя, описание и некоторые другие данные о продукте. Я хочу добавить также категорию.

Должен ли я создавать новую таблицу с именем и идентификатором и именем каждой категории и иметь в products a * category_id *, которые будут ссылаться на идентификатор category , или я должен иметь название категории для каждой строки products ?

В первом случае мне придется использовать JOIN. Будет ли это серьезно влиять на производительность?

Определяя категории в своей таблице, вы можете:

  • Переименовать категории
  • Динамически создавать списки категорий для выбора из
  • Добавить описания категорий
  • Добавить новые категории

… и так далее, без необходимости обновлять каждый бит кода, связанного с категорией, каждый раз, когда вы их модифицируете.

Итак, да, добавьте таблицу.

Будет ли это серьезно влиять на производительность?

Возможно нет.

Да, вы должны поддерживать нормализацию данных. Я думаю, что создать новую таблицу с названием category – хорошая идея.

Со временем категории будут меняться? В большинстве случаев это будет так, поэтому вам обычно лучше иметь отдельную таблицу категорий и внешний ключ (FK) между двумя таблицами. Затем вы можете добавлять или изменять категории просто с изменениями данных. В противном случае вам нужно поместить контрольное ограничение в столбец имени категории в вашей таблице, чтобы убедиться, что вы не получаете ненужные данные там, и это становится намного сложнее в обслуживании.

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

Ответ на акции – «это зависит». Это зависит от того, как будут использоваться данные, которые могут использоваться. Но как только вы пройдете все обсуждения и аргументы, для чего-то такого простого и заметного в ваших данных, в девять раз из восьми вам будет лучше нормализовать данные (например, таблица Category, столбцы CategoryId и внешний ключ).

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

Присоединиться, скорее всего, не будет влиять на производительность, но если вам это не нужно сейчас, постарайтесь не становиться жертвой чрезмерного дизайна.