Создать базу данных для приложения для покупок?
Я никогда не разрабатывал базу данных/модель данных/схему с нуля, особенно для веб-приложения.
В некоторых недавних интервью с собеседованием меня попросили "создать" базу данных для приложения корзины покупок. Теперь я работаю над мобильным приложением для покупок (розничная торговля, использует телефонную связь) с бэкэнд, который должен хранить и обрабатывать информацию о продукте и заказе. Масштабы этой проблемы настолько огромны, что я не знаю с чего начать. Я надеялся на некоторые советы -
- Как мне подойти к такой проблеме (БД приложения корзины покупок)? где я должен начать?
- Есть ли какие-либо распространенные ошибки/ловушки, которых я должен избегать?
- Какие оптимизационные/эффективные парадигмы следует учитывать при разработке такой БД?
- Как мне нужно идентифицировать объекты в проблемном пространстве (продукты, заказы и т.д.)? как мне получить отношения между ними?
- Когда интервьюер задает такой вопрос, что именно он ищет? есть что-то, что я должен/не должен говорить?
Я также должен уточнить, что -
- Да, я ноб, и мои мотивы состоят в том, чтобы изучить дизайн базы данных и подготовиться к предстоящим собеседованиям. Я прочитал книги СУБД, где они подробно описывают отдельные концепции, но я не знаю, как объединить эти вещи и начать разработку базы данных.
- Я видел другие темы в дизайне базы данных. У авторов уже есть некоторые знания о том, как нарушить проблему. я хотел бы понять методологию, стоящую за этим.
- Приветствуются ссылки на внешние ресурсы, комментарии, предложения и все, что поставит меня на правильный путь. Я надеюсь, что эта тема служит опытом обучения для меня и других.
Ответы
Ответ 1
В базе данных может быть пять таблиц:
КАТЕГОРИЯ В этой таблице хранится информация о категориях продуктов вашей иерархии магазинов и категорий. В родительском поле этой таблицы хранится идентификатор родительской категории.
ПРОДУКТ все продукты вашего магазина хранятся в этой таблице. Эта таблица имеет идентификатор категории внешнего ключа, который идентифицирует идентификатор категории, к которой принадлежит изделие.
ЗАКАЗ В этой таблице хранится информация обо всех заказах, сделанных посетителями вашего магазина.
Таблица ORDERED_SHOPPING_CART тесно связана с таблицами PRODUCT и ORDER; хранит информацию о содержании заказов клиентов.
Таблица SPECIAL_OFFER содержит список продуктов, которые отображаются на главной странице в виде специальных предложений
Ответ 2
Краткий ответ - способ решить эту проблему. Во-первых, есть множество открытых или бесплатных веб-магазинов. Это означает, что вы можете получить его, настроить базу данных, а затем хорошо посмотреть, что они сделали.
Задайте себе такие вопросы, как, почему они это сделали? Почему это хорошо? Какой недостаток может быть? Как бы я сделал это по-другому? почему?
Я бы попытался получить инструмент проектирования базы данных, который позволяет визуализировать базу данных. (например, разработчик баз данных в visual studio или у меня есть один из MicroOlap, который делает базы данных pgsql)
Тогда вам нужно подумать о том, что вам нужно в базе данных. Что клиент собирается делать? Покупайте товары! Поэтому вам нужна таблица продуктов. Не спускаясь по всему маршруту, вы можете видеть точку. Представьте, что нужно, тогда в основном создайте таблицу для этого.
Если у вас есть несколько опций для поля в таблице, создайте другую таблицу с отношением в ней. Поэтому, если у вас есть таблица продуктов, и у вас есть поле статуса. вы можете иметь более одного статуса. (например, на складе, ограниченное количество, большой элемент, дорогой) вместо жесткого кодирования этих полей, сделать таблицу и позволить пользователю добавлять элементы в таблицу. то в таблице продуктов добавьте поле status_id и привяжите его к таблице состояния
Многие - многие отношения - полезные вещи, которые нужно знать. (я сам этого не понимал). У вас есть компоненты и таблицы продуктов. Продукты могут состоять из множества компонентов, а компоненты могут быть распределены по многим продуктам. Создайте таблицу посредников. Что-то вроде prodcomp (и в этом случае у вас будут поля типа id, prod_id, comp_id, qtyneeded).
Узнайте индекс правильно.
Не создавайте базу данных, пока не получите полное представление о том, как она будет работать. это экономит время на воссоздание его позже.
Возможно, это может быть больше, но я надеюсь, что я дал вам хорошее начало.