Mysql 面向电子商务的Cakephp数据库设计
我正在开发一个电子商务网站,但我得到了数据库设计方面的确认 我有三张桌子:Mysql 面向电子商务的Cakephp数据库设计,mysql,sql,cakephp,size,product,Mysql,Sql,Cakephp,Size,Product,我正在开发一个电子商务网站,但我得到了数据库设计方面的确认 我有三张桌子: 产品(标识、类别标识、子类别标识、名称) 类别(id、名称) 子类别(id、类别\ id、名称) 例如:产品(脱衣T恤)属于类别(时尚)和子类别(T恤) 如果我想为这个产品增加尺寸怎么办?我是否应该在products表中创建另一个表名“Sizes”和size_id 但是,对于另一个类别(如小工具/手机),则没有大小。设计此数据库的最佳选项是什么?Magento是一个大型商店解决方案,它使用以下方法解决此问题。EAV非常灵
但是,对于另一个类别(如小工具/手机),则没有大小。设计此数据库的最佳选项是什么?Magento是一个大型商店解决方案,它使用以下方法解决此问题。EAV非常灵活,但性能不如专用表解决方案
您的类别->子类别没有多大意义。阅读有关嵌套集的内容,或在同一类别表中使用纯父子关系。首先,我不会在产品上使用类别ID和子类别ID。它只属于一个子类别。如果需要,可以通过子类别查找父类别
products (id, subcategory_id, name)
categories (id, name)
subcategories (id, category_id, name)
对于所有产品可能不同的属性,您可以执行以下操作:
attribute_types (id, name)
attributes (id, attribute_type_id, value)
products_attributes (id, product_id, attribute_id)
因此,在属性类型表中,您可能有:
id | name
-----------------------------
1 | T-Shirt Size
2 | Shoe Size (US)
3 | Colour
4 | Batteries Included
在属性表中:
id | attribute_type_id | value
------------------------------
1 | 1 | Small
2 | 1 | Medium
3 | 1 | Large
4 | 2 | 9
5 | 2 | 9.5
6 | 2 | 10
7 | 2 | 10.5
8 | 2 | 11
9 | 3 | Red
10 | 3 | Blue
11 | 3 | Green
12 | 3 | Yellow
13 | 3 | Black
14 | 4 | Yes
15 | 4 | No
然后在products_attributes表中,您只需添加产品具有的任何属性:
id | product_id | attribute_id
------------------------------
1 | 456 | 6
2 | 456 | 13
因此,对于该产品,它是一款10码的黑色鞋。我想您只能选择两张桌子/两种型号。您必须在类别模型上设置树行为
class Category extends AppModel {
public $actsAs = array('Tree');
}
然后,您必须在数据库中添加一些列。类别:
- 家长id
- lft
- rght
- db.categories有许多db.products(树行为)
- db.products属于db.categories(可包含的行为)
- db.eachModelYouWant(基于类别)
无论如何,您还应该有一个表来管理inStock,而不是hasman和dbelongsto之间的关系。:-)所以试着检查数据库回答有很多设置 如果某个产品的尺寸是固定的或已知的,您可以按照自己的建议制作尺寸表,但如果尺寸是可变的,您只需在产品表中制作尺寸字段,并为没有尺寸的产品设置为空。谢谢badHorsie。我从来没有想过这个解决方案。好的,我试试这个设计。再次感谢。heheAre子类别而非类别?为什么不在categories表中使用parent_id并删除整个subcategories表?