我想建立一个具有多个类别的在线商店。例如,我们的第一类是电子产品(包括手机、笔记本电脑等),第二类是服装(包括 T 恤、裤子等)。不管是哪个品类,所有的产品都有相同的属性,比如名称、品牌、价格、库存等。每个品类都有独特的属性,比如电子品类有分辨率、RAM和CPU属性,服装品类包括属性作为性别,大小,性别和颜色。
所以:
电子产品:名称、品牌、价格、库存、分辨率、内存、CPU
服装连续性:名称、品牌、价格、库存、性别、尺寸、性别、颜色
我已经为我的数据库考虑了三种结构,我可以帮助您解决任何其他问题。在所有结构中
第一个结构:_________________________________________________________
tables | columns
---------------------------------------------------------------------
category : id, name
product : id, cat_ID, name, brand, price, inventory, OtherAttr
cat_ID 有 category.id 的关系
otherAttr 列类型为json,其他属性存储在该列中。但是由于我到目前为止还没有使用数据库中的json列,所以我有点担心。
第二种结构:__________________________________________________________
tables | columns
---------------------------------------------------------------------
category : id, name
product : id, cat_ID , name, brand, price, inventory
attributesName : id, name , description // STORE ATTR NAMES
attributesValue : id, attrName_ID , value // ALL POSSIBLE VALUES FOREACH ATTR, SUCH AS MAIL AND FEMAIL FOR SEX
categoryAttr : id, attrName_ID , cat_ID // ALL UNIQE ATTR FOR EACH CATEGORY SUCH AS SEX, SIZE, GENDER AND COLOR FOR CLOTHING
productsAttr : id, product_ID , attrValue_ID
这是一种非常灵活的方法,但这种结构令人担忧的是您无法根据一些独特的属性过滤产品,例如我不知道如何为具有 2GB RAM 和双核心CPU。?
第三种结构 ____________________________________________________________
tables | columns
---------------------------------------------------------------------
category : id, name
product : id, cat_ID , name , brand, price , inventory
electronics : id, product_ID, resolution, RAM , CPU
clothing : id, product_ID, sex , size , gender, color
并为每个其他类别创建一个关系表这种结构增加了代码的大小并花费了程序员更多的时间,但管理员更容易插入数据并提供更多的过滤功能。