Создать базу данных для приложения для покупок?

Я никогда не разрабатывал базу данных/модель данных/схему с нуля, особенно для веб-приложения. В некоторых недавних интервью с собеседованием меня попросили "создать" базу данных для приложения корзины покупок. Теперь я работаю над мобильным приложением для покупок (розничная торговля, использует телефонную связь) с бэкэнд, который должен хранить и обрабатывать информацию о продукте и заказе. Масштабы этой проблемы настолько огромны, что я не знаю с чего начать. Я надеялся на некоторые советы -

  • Как мне подойти к такой проблеме (БД приложения корзины покупок)? где я должен начать?
  • Есть ли какие-либо распространенные ошибки/ловушки, которых я должен избегать?
  • Какие оптимизационные/эффективные парадигмы следует учитывать при разработке такой БД?
  • Как мне нужно идентифицировать объекты в проблемном пространстве (продукты, заказы и т.д.)? как мне получить отношения между ними?
  • Когда интервьюер задает такой вопрос, что именно он ищет? есть что-то, что я должен/не должен говорить?

Я также должен уточнить, что -

  • Да, я ноб, и мои мотивы состоят в том, чтобы изучить дизайн базы данных и подготовиться к предстоящим собеседованиям. Я прочитал книги СУБД, где они подробно описывают отдельные концепции, но я не знаю, как объединить эти вещи и начать разработку базы данных.
  • Я видел другие темы в дизайне базы данных. У авторов уже есть некоторые знания о том, как нарушить проблему. я хотел бы понять методологию, стоящую за этим.
  • Приветствуются ссылки на внешние ресурсы, комментарии, предложения и все, что поставит меня на правильный путь. Я надеюсь, что эта тема служит опытом обучения для меня и других.

Ответ 1

В базе данных может быть пять таблиц:

КАТЕГОРИЯ В этой таблице хранится информация о категориях продуктов вашей иерархии магазинов и категорий. В родительском поле этой таблицы хранится идентификатор родительской категории.

ПРОДУКТ все продукты вашего магазина хранятся в этой таблице. Эта таблица имеет идентификатор категории внешнего ключа, который идентифицирует идентификатор категории, к которой принадлежит изделие.

ЗАКАЗ В этой таблице хранится информация обо всех заказах, сделанных посетителями вашего магазина.

Таблица

ORDERED_SHOPPING_CART тесно связана с таблицами PRODUCT и ORDER; хранит информацию о содержании заказов клиентов.

Таблица

SPECIAL_OFFER содержит список продуктов, которые отображаются на главной странице в виде специальных предложений

Ответ 2

Краткий ответ - способ решить эту проблему. Во-первых, есть множество открытых или бесплатных веб-магазинов. Это означает, что вы можете получить его, настроить базу данных, а затем хорошо посмотреть, что они сделали.

Задайте себе такие вопросы, как, почему они это сделали? Почему это хорошо? Какой недостаток может быть? Как бы я сделал это по-другому? почему?

Я бы попытался получить инструмент проектирования базы данных, который позволяет визуализировать базу данных. (например, разработчик баз данных в visual studio или у меня есть один из MicroOlap, который делает базы данных pgsql)

Тогда вам нужно подумать о том, что вам нужно в базе данных. Что клиент собирается делать? Покупайте товары! Поэтому вам нужна таблица продуктов. Не спускаясь по всему маршруту, вы можете видеть точку. Представьте, что нужно, тогда в основном создайте таблицу для этого.

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

Многие - многие отношения - полезные вещи, которые нужно знать. (я сам этого не понимал). У вас есть компоненты и таблицы продуктов. Продукты могут состоять из множества компонентов, а компоненты могут быть распределены по многим продуктам. Создайте таблицу посредников. Что-то вроде prodcomp (и в этом случае у вас будут поля типа id, prod_id, comp_id, qtyneeded).

Узнайте индекс правильно.

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

Возможно, это может быть больше, но я надеюсь, что я дал вам хорошее начало.