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

时间:2012-01-14 18:04:34

标签: php cakephp database-design

我有一个非常简单的商店系统。我正在使用CakePHP。实际上我不会把它叫做商店,它是一个基本的形式,你可以输入你的数据,你想要哪种颜色的项目,就是这样。 有一种“向公众开放”的购买形式,然后有购买形式的密码保护。 后者可以选择您在公共网站上获得的项目(或颜色选择),但有折扣。 我想将订单保存在数据库中。我有一个表订单和ordered_products。这工作正常。 它工作得很好,但只是因为我做了一些不太好的东西:由于只有少数产品,我只是在控制器中用名称,价格和东西写了一个数组......我所处理的折扣或产品选择覆盖产品 - 财产。

好吧,把数据放在控制器中并不是MVC-Structure背后的理念,所以我在思考谁来处理产品,为不同的密码保护购买形式选择产品以及模型的折扣。

我的想法是,创建以下表格:

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_ids和special_prices以及在product_selections_colors-table上为不同的“封闭区域”选择不同的颜色(我不知道更好的名称)马上...)。使用product_id,我将从表格产品中获取有关该产品的其他信息,并使用此数据创建购买表单。

我希望将它全部放在数据库中,因为这样我就可以更好地处理订单(创建收据,交货单等)。

我想知道你对此的看法,因为我觉得我完全走错了方向,因为感觉复杂这么简单的事情...... 我希望你能帮助我。

1 个答案:

答案 0 :(得分:0)

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

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

对于普通(未登录)用户,将group_id指定为默认值为0.

接下来,抛弃product_selections和product_selections_colors表。 您不希望跨表重复产品。 只需添加一个新表,该表可以通过哪个group_ids配对哪些产品ID。 (蛋糕中的HABTM关系)

您显然需要调整此常规设置以专门满足您的需求。