Правильная структура базы данных и модель отношений в CakePHP для моего проекта (небольшой магазин)? - PullRequest
2 голосов
/ 14 января 2012

У меня довольно простая система магазинов.Я работаю с CakePHP.На самом деле я бы не назвал это магазином, это скорее базовая форма, где вы можете ввести свои данные и какие элементы, какого цвета вы хотите, и это все.Существует одна форма покупки, которая «открыта для публики», а затем существуют формы покупки, которые защищены паролем.Последние имеют выбор предметов (или выбор цветов), которые вы получаете на общедоступном сайте, но со скидками.Я хочу сохранить заказы в базе данных.У меня есть таблица заказов и order_products.Это работает нормально.Это работает довольно хорошо, но только потому, что я сделал что-то не очень хорошее: так как есть всего несколько продуктов, я просто написал массив в контроллере с именами, ценами и прочим ... скидками или выбором продуктов, которые я обработал простоперезаписываем свойство products.

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

Моя идея заключалась в том, чтобы создать следующие таблицы:

products (id, name, price,...) -hasAndBelongsToMany Color
colors (id, name)
products_colors (product_id, color_id)

Теперь установить, в какой «закрытой зоне», какие продукты и в каком цветеи с какой специальной ценой можно заказать, я подумал о следующих таблицах (фактические имена таблиц и полей, конечно, выбраны не мудро, но только для идеи):

product_selections (id, closed-area_name, product_id, special_price) hasAndBelongsToMany Color
product_selections_colors (product_selection_id, color_id)

Когда я создаюПубличная форма покупки Я бы просто использовал три верхних таблицы.но при построении «закрытой области» я бы использовал две нижние, выбрав product_ids и special_prices из product_selection, а также различные цвета по таблице product_selections_colors для соответствующей «закрытой области» (я не знаю лучшего названия для этогопрямо сейчас...).с product_id я бы получил другую информацию о продукте из таблицы products и создал бы форму покупки с этими данными.

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

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

1 Ответ

0 голосов
/ 13 марта 2012

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

Иметь таблицу пользователей с полем для "group_id".Это позволяет иметь нескольких пользователей с правами входа в систему, которые могут просматривать одинаковые параметры или цвета в зависимости от их группировки.

В случае обычного (не вошедшего в систему) пользователя присвойте group_id значение по умолчаниюна 0.

Далее отбросьте таблицы product_selections и product_selections_colors.Вы не хотите повторять продукты в разных таблицах.Просто добавьте новую таблицу, в которой указаны идентификаторы продуктов, которые можно приобрести по групповым идентификаторам.(HABTM отношения в торт)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...