Задать вопрос
@GSimonX37

Правильно ли составлена схема для магазина?

Правильно ли составлена структура базы данных для учета клиентов, товара и продаж для магазина? Особенно интересует логика учета товара и заказов.
spoiler
6311eda47a3c8179053778.jpeg
  • Вопрос задан
  • 208 просмотров
Подписаться 2 Простой 7 комментариев
Пригласить эксперта
Ответы на вопрос 3
ipatiev
@ipatiev
Потомок старинного рода Ипатьевых-Колотитьевых
В целом правильно, но если уж затеваться с хранением адресов, то тогда в заказе должна быть ссылка на id адреса. иначе просто нет смысла. В целом для такой примитивной схемы отдельное хранение адресов выглядит неадекватным, я бы просто писал адрес в заказ.
То же самое про телефоны. Просто писать в таблицу юзеров.
Не хватает емейла. Смс на каждый чих рассылать дорого.

В таблице заказов очень сильно не хватает поля status. Ну и связанной таблицы с историей статусов.
Отдельно хранить дату и время - это глупость. Есть тип datetime
discount - это ОЧЕНЬ отдельная тема. Но по крайней мере скидка должна размазываться по товарам. Если клиент при выкупе откажется от одного, то как пересчитывать цену?
В целом стоит в заказе дублировать основную инфу по товарам. Потому что её надо показывать в истории заказов, а товара может уже не быть в базе. В том числе цену до скидки и со скидкой.

Непонятно, что за таблица store.
Ответ написан
1. Хранение адреса в виде записей в базе.
Думаю, вполне можно было бы обойтись текстовым полем и id по кладр/фиас/гар (если россия).
Всё равно все возможные форматы адресов ты нормально не покроешь (а если покроешь - это будет свой фиас)
2. Использование float для хранение цены товара
3. Скидка чисто в виде числа в заказе - вполне возможно, что ты захочешь ввести какую-нибудь более гибкую систему скидок.
В текущей ситуации такое невозможно.
Например скидку в виде абсолютного количества денег, полностью бесплатный/подарочный товар.
Скидку только на отдельную категорию товара, или систему баллов.
Так что я бы сделал бы отдельную таблицу со скидкой на заказ, которую бы мог потом расширять.
(в принципе, можно оставить пока так, а потом миграцией всё исправить)
4. (комментарий про хранение цены убран, тк я изначально не заметил поле store_price)
5. Хотелось бы, чтобы была функция оформления заказа без регистрации.
6. А, ну и да. В заказе должен быть указан адрес. У пользователя их может быть несколько, и должен быть способ определить, на какой именно доставлять. (а с учётом п5 - адрес должен быть самостоятельной вещью)
+ Должна быть система как и с ценой - адрес у уже завершённого заказа не должен меняться.
7. А где статусы заказа? Типа новый/оплачен/доставка/доставлен/завершён?

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

PPS: Применять такую схему я бы осмелился только в рамках курсовой работы в колледже. Даже на диплом это врядли тянет, не говоря о реальном мире.
Ответ написан
@full_stack_newbie
Если это не курсовая, то сыро.
Цены - в отдельную таблицу, добавлять период действия. Если цена меняется с завтрашнего дня, вы когда их менять будете?
Закупочные цены - тоже имеют свойство меняться. Партии товаров на складе могут иметь разную цену поступления. Не увидел, что будет двигать остатки товара на складе (на вход).
Оплаты фиксировать в отдельной таблице, там будут конкретные транзакции, типы оплаты, не стоит это все пихать в заказ.
Скидки - так же в отдельную таблицу, период действия, типы скидок, etc
Это очень кратко.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы