如题,我想开发一个网上商城,在数据库设计的时候,我想到,我们商城里的商品有很多种类,不同种类的商品是有不同属性的,我想到的二种方案
一:先抽象一个公用的“商品”实体,然后每一个具体的类型的商品继承这个实体,可是这样子设计的话,不同种类的商品一多的话,那么表就越多。感觉还是很糟糕。
二:直接在”商品“这个实体里添加多一个属性,属性的值按约定的规则(如键值对)来描述包括这个商品种类信息,这样子的话就只要一张表就行。不过这样子做的话,在展示商品信息需要在前台对这个属性值进行分离,感觉好像哪里不太符合规范。
我还是一名学生,见识浅了些,请问公司里类似的情况一般都是如何设计的?
MySQL
Hibernate
PowerDesigner
这个问题我也曾经纠结过一段时间,属于扩展属性,比如有两个商品,电脑和书,属性完全是不同的
最后我想有两个解决办法比较好
1:商品表的字段搞多一点,比如搞10个多余的字段用于扩展
2:新增加一张表,里面有3个字段,商品Id,属性名称,属性值
第一种通过sql搜索起来肯定好的多,但是属性有限,不可能无限扩展,第二种sql搜索效率肯定很低,但是通过全文索引可以弥补一些
不知还有哪位大神能更好的办法!求分享
可以这里理解商品的属性:tags
商品作为一个 单一载体,但属性 在某些商品中可能会重复。
那么就建立一个原始的tags 表。 这里只存放一些 简单的描述。或者基础属性
然后再加一个 tags + 商品关联 表。这里做一个详细的属性扩展。