首页 文章

具有不同属性的多类产品的数据库架构

提问于
浏览
1

我搜索了遍布stackoverflow但我似乎无法找到问题的答案 .

此问题与电子商务网站有关

Here's the problem:

特定类别的产品具有一组特定的属性 . 例如,一台电脑有Ram,CPU,屏幕尺寸等等,一件衬衫有尺寸,颜色......等等

所有产品都有共同的属性(例如价格和库存等) .

但是,如何管理特定于其类别中每个产品的属性?

起初我为产品的每个类别制作了一个表,其中列出了所有属性,但是我在使用其属性过滤每个产品时遇到了问题 . 我确信这不是一个好主意,因为我必须在获得新类别时创建一个新表 . 例如,如果我想在我的网站上出售书籍,我需要添加书籍表

什么方式是“最佳实践”?

这是我做的一个例子:

product (idproduct, name,price,...(other attributes)) category (idcat,name,idParentCategory) ParentCategory(idPcat) PC(idPc,Ram,CPU,screenSize..etc) Shirt(idShirt,size,Color) Pants(idPant,waist,color)

这里的问题是我无法在产品表和它的类别之间 Build 连接以提取项目 .

有更好的解决方案吗?

提前谢谢你的帮助

2 回答

  • 1

    所有产品都有共同的属性(例如价格和库存等) .

    使用适当的真实密钥为此创建一个表格,例如EAN(考虑使用第三方数据源) .

    但是,如何管理其类别中每种产品的特定属性? ...如果我想在我的网站上出售书籍,我需要添加书籍表

    是的,书籍特有的属性会在这里 . 请务必创建对'attributes common to all products'表的引用,例如确保EAN对应有效的ISBN . 还要考虑一些书籍属性可能与其他类似产品相同,因此您可以在数据库中建模各种子类型 .

  • 0

    如果我理解你的问题,解决问题的一种方法是将属性映射到类别表,因为它们是特定于类别的而不是特定于项目的 . 这样,你就有:product(idproduct,name,price ...(category attribute values))category(idcat,name,idParentCategory,(category attributes))

    要将产品映射到他们的类别,您只需要一个包含两个外国PK的表:productOfCategory(idprodFK,idcatFK)

    这样您就可以将产品映射到相应的类别,并将产品的值验证为类别的属性 .

    或者您将值数组保留在productOfCategory关系中 . 例如,对于作为计算机的产品,因此对于计算机类别的产品,您将拥有productOfCategory(ComputerProductID,ComputersCategoryID,“3.0GHz,6GB Ram,.....”)

相关问题