CakePHP中适合我的项目(小商店)的正确数据库结构和模型关系


The right database structure and model relations in CakePHP for my project (small shop)?

我有一个非常简单的商店系统。我正在使用CakePHP。事实上,我不会把它称为商店,它是一种基本的形式,你可以在其中输入你的数据,以及你想要什么颜色的商品,就这样。有一种购买表格是"向公众开放"的,还有一些购买表格是密码安全的。后一种有你在公共网站上获得的商品选择(或颜色选择),但有折扣。我想把订单保存在数据库中。我有一张订单和已订购产品的表格。这很好用。它运行得很好,但只是因为我做了一些不太好的东西:由于只有几个产品,我只是在控制器中写了一个数组,里面有名称、价格和其他东西。。。我通过覆盖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_selection中选择product_id和special_prices,并在product_selections_colors-table上为相应的"封闭区域"选择不同的颜色(我现在不知道更好的名称…)。使用product_id,我将从products表中获取有关产品的其他信息,并用这些数据创建购买表单。

我想把它都放在数据库里,因为这样我就可以更好地处理订单(创建收据、送货单等)

我想知道你对此有何看法,因为我有一种感觉,我正朝着完全错误的方向前进,因为对于这样一件简单的事情来说,感觉有点复杂。。。我希望你能帮助我。

根据您的描述,我建议您这样做:

有一个users表,其中包含一个"group_id"字段。这允许您拥有多个具有登录权限的用户,他们都可以根据分组查看相同的选项或颜色。

在普通(未登录)用户的情况下,将group_id分配为默认值0。

接下来,放弃product_selections和product_selections_colors表。您不希望必须在表之间重复产品。只需添加一个新表,该表将哪些产品id可以由哪个group_id购买。(蛋糕中的HABTM关系)

您显然需要调整这个通用设置,以专门满足您的需求。