Как создать базу данных для сайта электронной коммерции? - PullRequest
0 голосов
/ 27 июня 2018

как создать базу данных для продуктов, которые не имеют одинаковые атрибуты; например, лучше иметь одну таблицу продуктов:

id|category|Description   |Mileage|Author_name |Print_length|Language|
1 |cars    |honda cvic ...|12315  |            |            |        |
2 |books   |Stranger's... |       |Albert Camus|208 page    |English |

или отдельные таблицы: автомобили

 id|brand|Description   |Mileage|Body Type|yeasr|
 1 |Honda|honda cvic ...|12315  |sedan    |2015 |   

Книга:

id|Name          |Description   |Author_name |Print_length|Language|
1 |The Stranger's|Stranger's... |Albert Camus|208 page    |English |

пожалуйста, сообщите.

1 Ответ

0 голосов
/ 27 июня 2018

Любой из определенных вами подходов сработает, да. Но по мере того, как ваш сайт расширяется и растет, вы, вероятно, столкнетесь с проблемами.

Первый предложенный вами подход имеет несколько проблем.

  1. При добавлении новых типов товаров, например, «шляп», вам, вероятно, потребуется добавить дополнительные столбцы для описания атрибутов шляп, которые не будут иметь отношения к автомобилям или книгам. Это приведет к малонаселенной таблице. то есть каждый продукт / строка будет иметь данные только для подраздела столбцов. Это может повлиять на хранилище, необходимое для хранения данных. (Распределяет ли ваша база данных пространство для этих пустых столбцов? Если это так, ваши требования к пространству могут быстро увеличиться.)
  2. При внесении изменений в вашу таблицу (добавление столбца, переименование столбца, удаление столбца) может быть огромное снижение производительности при выполнении изменения, поскольку реализация MyISAM копирует всю таблицу во временную таблицу, удаляя старую table, и переименовывает временную таблицу в исходную таблицу. (как описано здесь )

Ваш второй подход помогает решить обе проблемы, описанные выше, но вводит новые проблемы, которые стоит рассмотреть.

  1. Если ваша стратегия заключается в создании новой таблицы для каждого типа продукта, это может быстро привести к огромному количеству похожих, но немного отличающихся таблиц. Представьте, если бы Amazon или Newegg воспользовались этим подходом - количество таблиц приблизилось бы к абсурдно большим числам, и обслуживание стало бы проблемой. Кроме того, для всех новых продуктов потребуются изменения структуры базы данных, а также кода веб-приложения, расположенного поверх базы данных.
  2. Настройка индексов для поддержания производительности на тысячах таблиц продуктов представляется излишне обременительной задачей.

Решения:

Как предложил другой автор, начиная с двух простых таблиц - таблицы «product» (ID, имя) и таблицы «attribute» (ID, ProductID, Name, Value), можно было бы решить многие сложности и учесть запуск новых продуктов без изменения базовой структуры таблицы , что является огромным выигрышем. Этот подход потребует использования индексов для оптимизации производительности, но поскольку будут использоваться только две таблицы, вы можете лучше сосредоточить свои усилия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...