关于商品分类 商品表和属性表的设计

以前有这样的一个需求,不考虑像京东或者淘宝这样分类下有子分类的情况,只考虑一层分类的情况下,可以随便添加分类,可以任意给商品添加属性,而不需要更 改表的结构. 于是设计了一个这样的结构,实现还是可以实现,一直在用,但是在操作上比较麻烦,大家讨论下有没有更好的方式.

----------------------------- 以下是几个关联的对象 省去了 getter/setter 方法 ------------------
Field.java 属性
Java 代码
  1. public class Field{  
  2.    private Integer id;  
  3.    private String name; // 属性名称  
  4. }  
public class Field{    private Integer id;    private String name; // 属性名称 } 


ProductField.java 商品属性
Java 代码
  1. public class ProductField{  
  2.      private Integer id;  
  3.      private Field field; // 属性对象  
  4.       private String value; // 属性值 这里的值不管是整数 小数 还是什么类型都是用 String 类型  
  5.   
  6. }  
public class ProductField{      private Integer id;      private Field field; // 属性对象       private String value; // 属性值 这里的值不管是整数 小数 还是什么类型都是用 String 类型  } 


Product.java 商品表
Java 代码
  1. public class Product{  
  2.    private Integer id;  
  3.    private String name; //商品名称  
  4.    //根据商品 加载这个商品的所有属性 和属性值  
  5.    private Set<ProductField> productFields = new HashSet<ProductField>();//商品属性集合  
  6. }  
public class Product{    private Integer id;    private String name; //商品名称    //根据商品 加载这个商品的所有属性 和属性值    private Set<ProductField> productFields = new HashSet<ProductField>();//商品属性集合 } 


Type.java
Java 代码
  1. public class Type{  
  2.    private Integer id;  
  3.    private String name; //分类名称  
  4.    //通过类型 可以加载这个类型下的所有商品  一种类型对应多种商品  
  5.    //(暂时不考虑一种商品属于多种类型 例如手机属于电器类,也属于通讯类产品)  
  6.    private Set<Product> products = new HashSet<Product>();  
  7. }  
public class Type{    private Integer id;    private String name; //分类名称    //通过类型 可以加载这个类型下的所有商品  一种类型对应多种商品    //(暂时不考虑一种商品属于多种类型 例如手机属于电器类,也属于通讯类产品)    private Set<Product> products = new HashSet<Product>(); } 


----------------------  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

--加载的测试数据
Java 代码
  1. +++++++++ 商 品信息 ++++++++  
  2. Name:Sony  
  3. 价 格 - 2000.00  
  4. 型 号 - YY-1939  
  5. 名 称 - 锁你牌手机  
+++++++++ 商品信息 ++++++++ Name:Sony 价格 - 2000.00 型号 - YY-1939 名称 - 锁你牌手机 
href:http://www.javaeye.com/topic/616088

转载于:https://www.cnblogs.com/newstar0101/archive/2010/03/30/1700213.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值