База данных Интернет-магазина

Автор: | 01.11.2015

baza-dannyh-internet-magazinaПриветствую вас, читатели cccp-blog.com! :-)

Сегодня нами будет рассмотрена база данных Интернет-магазина. Я не говорил о ней в статье, посвящённой структуре Интернет-магазина ввиду обширности данной темы.

К тому же, о моём упущении мне вежливо напомнили в одном из комментариев к указанной статье :-) Поэтому мне ничего больше не остаётся как выполнить своё обещание. Тем более, что вопрос действительно интересный и заслуживающий внимания.

Итак, из всех существующих типов сайтов Вы решили создать именно Интернет-магазин? Прекрасное решение! :-)

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

Особенности базы данных Интернет-магазина

Чтобы по ходу повествования у Вас не возникало проблем с восприятием информации, рекомендую познакомиться с терминологией в статье «База данных сайта». Ознакомились, отлично :-)

Значит, идём дальше…

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

В каждой таблице обязательно должно быть поле, хранящее идентификатор записи.

Значение идентификатора, как правило, формируется автоматически при добавлении новой записи и никогда не повторяется.

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

baza-dannyh-internet-magazina-otnosheniyaОсновные сущности базы данных Интернет-магазина и отношения между ними представлена на рисунке выше.

На схематичном изображении таблиц я привёл только поля, хранящие идентификатор записи. остальные же я заметил на «…»

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

1. Товар

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

Следовательно, список атрибутов будет таким:

  • Наименование товара — без комментариев :-) Единственная рекомендация — не делать слишком большое поле. Всю необходимую информацию лучше вынести в «Описание».
  • Описание — данный атрибут в некоторых случаях лучше вынести в отдельную таблицу ввиду большого количества данных, что может снизить скорость выполнения запросов к БД.
  • Изображения — здесь имеет место быть связь «один-ко-многим», т.к. у товара может быть несколько изображений. Следовательно, целесообразно будет создать для них отдельную таблицу.
  • Модель  — данный атрибут таблицы товаров существует не во всех проектах. Кто-то предпочитает заводить отдельную таблицу для их хранения. Как по мне, это нерационально. Т.к. данное действие приведёт к большим затратам ресурсов сервера во время запросов к БД, где Вам нужно будет получить модели указанного товара. Следовательно, это скажется на скорости данных запросов. Лучшее решение — создать несколько записей в таблице товаров.
  • Цена — также без комментариев :-)
  • Доступность — это, как правило, поле в двумя вариантами значений: «В наличии»/»Нет в наличии»
  • Количество — если товар в наличии, здесь хранится кол-во доступных товаров на складе. Но, как показывает практика, очень часто товар, которого нет в действительности на складе, имеет ненулевое значение. Это возникает, как правило, из-за человеческого фактора. Поэтому, если ли смысл делать данное поле, решать Вам.
  • Опции — этот атрибут подразумевает список различных характеристик: цвет, объём памяти, тактовую частоту, наличие орнамента и т.д. Как правило, для них создаётся отдельная таблица базы данных Интернет-магазина. У товара может быть несколько атрибутов, поэтому целесообразно было бы также создать таблицу, хранящую наличие у товаров определённых атрибутов.
  • SEO-атрибуты — это группа полей, хранящие содержимое для мета-тегов description и keywords, которые необходимы для придания веса страницы для поисковых роботов и, следовательно, влияют на позиции сайта в поисковой выдаче.
  • Язык — данный атрибут характерен для магазинов, имеющих мультиязычный интерфейс. В данном случае для каждого языка вводится наименование товара и его описание. Как правило, для языков вводится отдельная таблица, содержащее поле идентификатора и наименования языка. В таблице товаров указывается идентификатор, а наименования, при необходимости, подтягивается с помощью запросов.

2. Производитель

У товара обязан быть производитель. Его необходимо указывать для того, чтобы пользователи могли ориентироваться на качество товара ввиду рейтинга и известности бренда. В структуре базы данных Интернет-магазина наличие данной таблицы нужно для организации фильтрации товаров и ряда других возможностей.

У данной сущности набор атрибутов выглядит следующим образом:

  • Наименование — те же рекомендации, что и для названия товара. Дополнительно следует отметить, что названия зарубежных производителей лучше указывать на языке международного общения (как правило английский), чтобы покупатели не вчитывались в иероглифы и не теряли из-за этого доверия к проверенным брендам.
  • Описание — здесь обычно указывают информацию о производителе: историю фирмы, сертификаты качества, различные награды и участие в выставках, повышающие доверие покупателей.
  • Логотип — поле для хранения логотипа фирмы.
  • Количество товаров — необязательное поле, может быть введено для упрощения фильтрации товаров.

3. Категория

Главным назначение данной сущности базы данных Интернет-магазина является группировка товаров. У категорий существует иерархия (категория-подкатегория и т.д.), что необходимо учитывать в виде атрибутов:

  • Название — как можно лаконичнее, 1-2 слова
  • Описание — содержит краткое описание товаров, которые можно найти в данной рубрике. Чаще всего используется для SEO-продвижения сайта. Необязательный атрибут.
  • Изображения — как правило, здесь нет большого числа картинок, поэтому делать отдельную таблицу смысла нет. Хватит и поля при необходимости.
  • Доступность — здесь она так же нужна, как и для товаров. Всё дело в том, что в данной категории может не быть товаров вообще или они будут не в наличии. Тогда пользователю она не показывается. Но поисковые роботы видят её и индексируют, продвигая сайт в поисковой выдаче.
  • Количество товаров — показывает общее количество товаров в категории. Необязательный атрибут для данной таблицы базы данных Интернет-магазина.
  • SEO-атрибуты — такой же смысл и рекомендации, как и у товаров.
  • Иерархия — указывается номер ступени категории в иерархии. Учитывается при формировании различных меню на сайте.
  • Язык — также необходим для мультиязычных проектов.

4. Покупатель

Таблица, соответствующая данной сущности, хранит в базе данных Интернет-магазина информацию о покупателе, которую он указывает при регистрации на сайте. содержит следующий набор атрибутов:

  • Логин — ник пользователя, под которым он будет входить на сайт.
  • Пароль — думаю, в комментариях не нуждается :-) Единственное, что стоит отметить — пароль часто хранится в зашифрованном виде, чтобы исключить его явное использование при взломе базы данных Интернет-магазина. Его, конечно же, можно расшифровать, подобрав алгоритм, но на это уйдёт время, за которое добросовестный администратор примет должные действия.
  • Группа пользователей — на некоторых ресурсах пользователи группируются между собой по различным критериям: по количеству заказов («Редкий покупатель», «Частый покупатель», «VIP»), по объёмам закупок (оптовый, розничный) и т.д. Данная градация часто делается с целью предоставления скидок и определённых товаров различным категориям. Поле может содержать как наименование группы, так и её иденификатор.
  • Контакты — телефон пользователя, e-mail, факс, почтовый индекс, адрес и др. — каждый атрибут хранится в отдельном поле.
  • IP-адрес — необходим для ограничения доступа пользователя на сайт, проще говоря для «бана». Для забаненых IP может быть создана отдельная таблица базы данных Интернет-магазина. Но, несмотря на нужность данного атрибута, он не является обязательным. Т.к. подобный бан можно легко обойти с помощью динамического IP или захода из различных точек.
  • Статус — может быть различным: «Онлайн»/»Оффлайн», «Удалён», «Давно не посещал» и т.д.
  • Скидки — данное поле хранит количество скидочных баллов, % скидки — всё зависит от политики магазина.
  • Язык — поле необходимо для хранения языка пользователя, который он указывает при регистрации. И который используется при отображении товаров, их описаний, категорий и прочих сущностей и подписей элементов интерфейса, которые имеют языковые настройки.
  • Геозона — как правило, здесь хранится код страны. Необходим, в основном, для автоматического определения языка интерфейса в случае, если пользователь первый раз на сайте и для предложения транспортных компаний при оформлении заказов. Обычно описание геозон, если требуется, хранится в отдельной таблице.

5. Заказ

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

Список атрибутов таков:

  • Покупатель — это поле хранит, как правило, идентификатор покупателя из одноимённой таблицы, который сделал заказ.
  • Товар — идентификатор товара из соответствующей таблицы. Поскольку в одной заказе может быть несколько товаров, есть смысл сделать отдельную таблицу для фиксации этой связи, хранящей идентификатор заказа и товара.
  • Количество товаров — без комментариев :-)
  • Цена товара — цена каждого товара, присутствующего в заказе.
  • Цена заказа — суммарная цена всех товаров, значащихся в заказе. Необходима для ведения статистики доходов магазина, исключая необходимость высчитывать её каждый раз на основании товаров в заказе и их отдельной стоимости.
  • Способ доставки — здесь указывается либо название транспортной компании, либо указывается её идентификатор, а сами фирмы хранятся в другой таблице базы данных Интернет-магазина.
  • Способ оплаты — особых комментариев, думаю, не требует :-) Здесь, в большинстве случаев хранится название платёжной системы (WebMoney, VISA, MasterCard, PayPal и др.)  или её идентификатор из одноимённой таблицы.
  • Статус — фиксирует состояние заказа: «В обработке», «Выполнен», «Отклонён» и др.
  • Название заказа — в данном поле хранится текстовое описание заказа, которое формируется, как правило, автоматически при его формировании. Данный атрибут присутствует далеко не на всех торговых ресурсах и служит, скорее для ориентации администраторов при поиске необходимого заказа.
  • Комментарий  — поле, которое заполняет пользователь при оформлении. Не является обязательным.

На этом статья, в которой нами была рассмотрена база данных Интернет-магазина, подходит к концу. С нетерпением жду ваших отзывов и комментариев по поводу изложенного материала. Если пост вам понравился, делитесь им с друзьями в социальных сетях, подключайте их к обсуждению! :-)

В завершение хочу порекомендовать видео, иллюстрирующее создание базы данных Интернет-магазина с помощью phpMyAdmin, о котором я упоминал в своей статье «Программы для создания сайтов».

Всем удачи! :-)

  1. 5
  2. 4
  3. 3
  4. 2
  5. 1
11 голосов, в среднем: 5 из 5

4 комментария к статье "База данных Интернет-магазина"

  1. Бета Калинина

    Я Вам больше скажу — для этого вообще база данных не нужна. Недавно сталкивались с сходной проблемой. Думали-думали какая БД, какая структура.

    1. Pashaster Автор

      Добрый день!

      Если Вы о том, что Интернет-магазину не нужна БД, я с Вами не соглашусь… Где тогда хранить всю информацию? :-)

      А если Вы имели ввиду необходимость проектировки базы данных Интернет-магазинов — тут согласен. Т.к. во многих CMS и конструкторах сайтов база уже готовая и проектировать её заново нет смысла, в большинстве случаев её структура обеспечивает хорошую производительность сайта.

      Однако если у Вас появится необходимость добавить какую-либо таблицу/поле, Вы можете продублировать уже имеющуюся или не найти существующую. Кстати, о необходимости изучения баз данных сайта я более подробно написал здесь — http://cccp-blog.com/sozdanie-saytov/baza-dannyh-sajta

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

  2. Mikemat

    На мой взгляд — это самая оптимальная структура для разнородных данных, когда кроме MySQL ничего нет.

  3. witos1

    Очень полезная информация, раньше никак не мог разобраться

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *