Приветствую вас, читатели cccp-blog.com!
Сегодня нами будет рассмотрена база данных Интернет-магазина. Я не говорил о ней в статье, посвящённой структуре Интернет-магазина ввиду обширности данной темы.
К тому же, о моём упущении мне вежливо напомнили в одном из комментариев к указанной статье Поэтому мне ничего больше не остаётся как выполнить своё обещание. Тем более, что вопрос действительно интересный и заслуживающий внимания.
Итак, из всех существующих типов сайтов Вы решили создать именно Интернет-магазин? Прекрасное решение!
Данной публикацией я помогу Вам сделать ещё один шаг на пути к созданию сайта своей мечты, который заключается в создании хранилища данных для вашего ресурса.
Особенности базы данных Интернет-магазина
Чтобы по ходу повествования у Вас не возникало проблем с восприятием информации, рекомендую познакомиться с терминологией в статье «База данных сайта». Ознакомились, отлично
Значит, идём дальше…
В первую очередь, несколько слов об отношениях между сущностями. Мы уже разобрались ранее с тем, что в структуре базы данных Интернет-магазина сущности соответствует таблица. Таблица представляет собой набор полей, которые соответствуют атрибутам сущности.
В каждой таблице обязательно должно быть поле, хранящее идентификатор записи.
Значение идентификатора, как правило, формируется автоматически при добавлении новой записи и никогда не повторяется.
Это необходимо потому, что связь между таблицами осуществляется как раз по этому полю, и при дублировании значений сбоев в работе ресурса не избежать.
Основные сущности базы данных Интернет-магазина и отношения между ними представлена на рисунке выше.
На схематичном изображении таблиц я привёл только поля, хранящие идентификатор записи. остальные же я заметил на «…»
Поэтому следующим этапом нашего знакомства с базой данных Интернет-магазина является подробный обзор основных сущностей и атрибутов и, следовательно, вариантов возможных таблиц и их полей.
1. Товар
Данная сущность и одноимённая таблица базы данных Интернет-магазина содержит информацию о том, чем, собственно говоря идёт торговля на сайте. Поскольку покупатель не может вживую оценить продукт, то задача разработчиков — предоставить максимально полный перечень свойств, чтобы возникло желание его приобрести.
Следовательно, список атрибутов будет таким:
- Наименование товара — без комментариев
Единственная рекомендация — не делать слишком большое поле. Всю необходимую информацию лучше вынести в «Описание».
- Описание — данный атрибут в некоторых случаях лучше вынести в отдельную таблицу ввиду большого количества данных, что может снизить скорость выполнения запросов к БД.
- Изображения — здесь имеет место быть связь «один-ко-многим», т.к. у товара может быть несколько изображений. Следовательно, целесообразно будет создать для них отдельную таблицу.
- Модель — данный атрибут таблицы товаров существует не во всех проектах. Кто-то предпочитает заводить отдельную таблицу для их хранения. Как по мне, это нерационально. Т.к. данное действие приведёт к большим затратам ресурсов сервера во время запросов к БД, где Вам нужно будет получить модели указанного товара. Следовательно, это скажется на скорости данных запросов. Лучшее решение — создать несколько записей в таблице товаров.
- Цена — также без комментариев
- Доступность — это, как правило, поле в двумя вариантами значений: «В наличии»/»Нет в наличии»
- Количество — если товар в наличии, здесь хранится кол-во доступных товаров на складе. Но, как показывает практика, очень часто товар, которого нет в действительности на складе, имеет ненулевое значение. Это возникает, как правило, из-за человеческого фактора. Поэтому, если ли смысл делать данное поле, решать Вам.
- Опции — этот атрибут подразумевает список различных характеристик: цвет, объём памяти, тактовую частоту, наличие орнамента и т.д. Как правило, для них создаётся отдельная таблица базы данных Интернет-магазина. У товара может быть несколько атрибутов, поэтому целесообразно было бы также создать таблицу, хранящую наличие у товаров определённых атрибутов.
- SEO-атрибуты — это группа полей, хранящие содержимое для мета-тегов description и keywords, которые необходимы для придания веса страницы для поисковых роботов и, следовательно, влияют на позиции сайта в поисковой выдаче.
- Язык — данный атрибут характерен для магазинов, имеющих мультиязычный интерфейс. В данном случае для каждого языка вводится наименование товара и его описание. Как правило, для языков вводится отдельная таблица, содержащее поле идентификатора и наименования языка. В таблице товаров указывается идентификатор, а наименования, при необходимости, подтягивается с помощью запросов.
2. Производитель
У товара обязан быть производитель. Его необходимо указывать для того, чтобы пользователи могли ориентироваться на качество товара ввиду рейтинга и известности бренда. В структуре базы данных Интернет-магазина наличие данной таблицы нужно для организации фильтрации товаров и ряда других возможностей.
У данной сущности набор атрибутов выглядит следующим образом:
- Наименование — те же рекомендации, что и для названия товара. Дополнительно следует отметить, что названия зарубежных производителей лучше указывать на языке международного общения (как правило английский), чтобы покупатели не вчитывались в иероглифы и не теряли из-за этого доверия к проверенным брендам.
- Описание — здесь обычно указывают информацию о производителе: историю фирмы, сертификаты качества, различные награды и участие в выставках, повышающие доверие покупателей.
- Логотип — поле для хранения логотипа фирмы.
- Количество товаров — необязательное поле, может быть введено для упрощения фильтрации товаров.
3. Категория
Главным назначение данной сущности базы данных Интернет-магазина является группировка товаров. У категорий существует иерархия (категория-подкатегория и т.д.), что необходимо учитывать в виде атрибутов:
- Название — как можно лаконичнее, 1-2 слова
- Описание — содержит краткое описание товаров, которые можно найти в данной рубрике. Чаще всего используется для SEO-продвижения сайта. Необязательный атрибут.
- Изображения — как правило, здесь нет большого числа картинок, поэтому делать отдельную таблицу смысла нет. Хватит и поля при необходимости.
- Доступность — здесь она так же нужна, как и для товаров. Всё дело в том, что в данной категории может не быть товаров вообще или они будут не в наличии. Тогда пользователю она не показывается. Но поисковые роботы видят её и индексируют, продвигая сайт в поисковой выдаче.
- Количество товаров — показывает общее количество товаров в категории. Необязательный атрибут для данной таблицы базы данных Интернет-магазина.
- SEO-атрибуты — такой же смысл и рекомендации, как и у товаров.
- Иерархия — указывается номер ступени категории в иерархии. Учитывается при формировании различных меню на сайте.
- Язык — также необходим для мультиязычных проектов.
4. Покупатель
Таблица, соответствующая данной сущности, хранит в базе данных Интернет-магазина информацию о покупателе, которую он указывает при регистрации на сайте. содержит следующий набор атрибутов:
- Логин — ник пользователя, под которым он будет входить на сайт.
- Пароль — думаю, в комментариях не нуждается
Единственное, что стоит отметить — пароль часто хранится в зашифрованном виде, чтобы исключить его явное использование при взломе базы данных Интернет-магазина. Его, конечно же, можно расшифровать, подобрав алгоритм, но на это уйдёт время, за которое добросовестный администратор примет должные действия.
- Группа пользователей — на некоторых ресурсах пользователи группируются между собой по различным критериям: по количеству заказов («Редкий покупатель», «Частый покупатель», «VIP»), по объёмам закупок (оптовый, розничный) и т.д. Данная градация часто делается с целью предоставления скидок и определённых товаров различным категориям. Поле может содержать как наименование группы, так и её иденификатор.
- Контакты — телефон пользователя, e-mail, факс, почтовый индекс, адрес и др. — каждый атрибут хранится в отдельном поле.
- IP-адрес — необходим для ограничения доступа пользователя на сайт, проще говоря для «бана». Для забаненых IP может быть создана отдельная таблица базы данных Интернет-магазина. Но, несмотря на нужность данного атрибута, он не является обязательным. Т.к. подобный бан можно легко обойти с помощью динамического IP или захода из различных точек.
- Статус — может быть различным: «Онлайн»/»Оффлайн», «Удалён», «Давно не посещал» и т.д.
- Скидки — данное поле хранит количество скидочных баллов, % скидки — всё зависит от политики магазина.
- Язык — поле необходимо для хранения языка пользователя, который он указывает при регистрации. И который используется при отображении товаров, их описаний, категорий и прочих сущностей и подписей элементов интерфейса, которые имеют языковые настройки.
- Геозона — как правило, здесь хранится код страны. Необходим, в основном, для автоматического определения языка интерфейса в случае, если пользователь первый раз на сайте и для предложения транспортных компаний при оформлении заказов. Обычно описание геозон, если требуется, хранится в отдельной таблице.
5. Заказ
Таблица базы данных Интернет-магазина, соответствующая данной сущности, хранит в себе информацию о заказах покупателей. Предназначение данной сущности — информирование покупателей и помощь администраторам, которые рассматривают заказы, согласовывая их в телефонном режиме.
Список атрибутов таков:
- Покупатель — это поле хранит, как правило, идентификатор покупателя из одноимённой таблицы, который сделал заказ.
- Товар — идентификатор товара из соответствующей таблицы. Поскольку в одной заказе может быть несколько товаров, есть смысл сделать отдельную таблицу для фиксации этой связи, хранящей идентификатор заказа и товара.
- Количество товаров — без комментариев
- Цена товара — цена каждого товара, присутствующего в заказе.
- Цена заказа — суммарная цена всех товаров, значащихся в заказе. Необходима для ведения статистики доходов магазина, исключая необходимость высчитывать её каждый раз на основании товаров в заказе и их отдельной стоимости.
- Способ доставки — здесь указывается либо название транспортной компании, либо указывается её идентификатор, а сами фирмы хранятся в другой таблице базы данных Интернет-магазина.
- Способ оплаты — особых комментариев, думаю, не требует
Здесь, в большинстве случаев хранится название платёжной системы (WebMoney, VISA, MasterCard, PayPal и др.) или её идентификатор из одноимённой таблицы.
- Статус — фиксирует состояние заказа: «В обработке», «Выполнен», «Отклонён» и др.
- Название заказа — в данном поле хранится текстовое описание заказа, которое формируется, как правило, автоматически при его формировании. Данный атрибут присутствует далеко не на всех торговых ресурсах и служит, скорее для ориентации администраторов при поиске необходимого заказа.
- Комментарий — поле, которое заполняет пользователь при оформлении. Не является обязательным.
На этом статья, в которой нами была рассмотрена база данных Интернет-магазина, подходит к концу. С нетерпением жду ваших отзывов и комментариев по поводу изложенного материала. Если пост вам понравился, делитесь им с друзьями в социальных сетях, подключайте их к обсуждению!
В завершение хочу порекомендовать видео, иллюстрирующее создание базы данных Интернет-магазина с помощью phpMyAdmin, о котором я упоминал в своей статье «Программы для создания сайтов».
Всем удачи!
Я Вам больше скажу — для этого вообще база данных не нужна. Недавно сталкивались с сходной проблемой. Думали-думали какая БД, какая структура.
Добрый день!
Если Вы о том, что Интернет-магазину не нужна БД, я с Вами не соглашусь… Где тогда хранить всю информацию?
А если Вы имели ввиду необходимость проектировки базы данных Интернет-магазинов — тут согласен. Т.к. во многих CMS и конструкторах сайтов база уже готовая и проектировать её заново нет смысла, в большинстве случаев её структура обеспечивает хорошую производительность сайта.
Однако если у Вас появится необходимость добавить какую-либо таблицу/поле, Вы можете продублировать уже имеющуюся или не найти существующую. Кстати, о необходимости изучения баз данных сайта я более подробно написал здесь — http://cccp-blog.com/sozdanie-saytov/baza-dannyh-sajta
Для предупреждения этих действий и была создана данная обзорная статья, где рассматриваются все основные сущности, их атрибуты и отношения
Из чего можно сформировать представление о структуре базы данных Интернет-магазина.
На мой взгляд — это самая оптимальная структура для разнородных данных, когда кроме MySQL ничего нет.
Очень полезная информация, раньше никак не мог разобраться