关于商品分类 商品表和属性表的设计
以前有这样的一个需求,不考虑像京东或者淘宝这样分类下有子分类的情况,只考虑一层分类的情况下,可以随便添加分类,可以任意给商品添加属性,而不需要更 改表的结构. 于是设计了一个这样的结构,实现还是可以实现,一直在用,但是在操作上比较麻烦,大家讨论下有没有更好的方式.
----------------------------- 以下是几个关联的对象 省去了 getter/setter 方法 ------------------
Field.java 属性
ProductField.java 商品属性
Product.java 商品表
Type.java
---------------------- Hibernate 配置文件就不帖出来了,以下是由POJO和hbm配置文件生成出来的表 示例-
//表关系
Type
id name
1 电脑
3 手机
4 脑残
Product
id name typeid
1 SONY 1(fk)
2 DELL 1
3 韩国猪 4
4 叁欣 3
Fields
id name
1 颜色
2 重量
3 型号
...
ProductFields
id pdctid fieldid value
1 (fk)1 (fk1)1 红色
2 1 2 500g
3 2 3 XYZ
4 2 1 白色
5 3 4 1000.00
--加载的测试数据
href:http://www.javaeye.com/topic/616088
----------------------------- 以下是几个关联的对象 省去了 getter/setter 方法 ------------------
Field.java 属性
Java 代码
- public class Field{
- private Integer id;
- private String name; // 属性名称
- }
ProductField.java 商品属性
Java 代码
- public class ProductField{
- private Integer id;
- private Field field; // 属性对象
- private String value; // 属性值 这里的值不管是整数 小数 还是什么类型都是用 String 类型
- }
Product.java 商品表
Java 代码
- public class Product{
- private Integer id;
- private String name; //商品名称
- //根据商品 加载这个商品的所有属性 和属性值
- private Set<ProductField> productFields = new HashSet<ProductField>();//商品属性集合
- }
Type.java
Java 代码
- public class Type{
- private Integer id;
- private String name; //分类名称
- //通过类型 可以加载这个类型下的所有商品 一种类型对应多种商品
- //(暂时不考虑一种商品属于多种类型 例如手机属于电器类,也属于通讯类产品)
- private Set<Product> products = new HashSet<Product>();
- }
---------------------- Hibernate 配置文件就不帖出来了,以下是由POJO和hbm配置文件生成出来的表 示例-
![](http://dl.javaeye.com/upload/attachment/217719/202b9e15-e644-3d66-b455-746ee16d1a21.jpg)
//表关系
Type
id name
1 电脑
3 手机
4 脑残
Product
id name typeid
1 SONY 1(fk)
2 DELL 1
3 韩国猪 4
4 叁欣 3
Fields
id name
1 颜色
2 重量
3 型号
...
ProductFields
id pdctid fieldid value
1 (fk)1 (fk1)1 红色
2 1 2 500g
3 2 3 XYZ
4 2 1 白色
5 3 4 1000.00
--加载的测试数据
Java 代码
- +++++++++ 商 品信息 ++++++++
- Name:Sony
- 价 格 - 2000.00
- 型 号 - YY-1939
- 名 称 - 锁你牌手机
posted on 2010-03-30 08:44 newstar0101 阅读(1601) 评论(0) 编辑 收藏 举报