数据库是mysql,比如说现在要设计个商城网站的商品表goods,里面要包含:
id 一级分类 二级分类 商品名 成本价 卖价 库存 上线时间 下线时间 排序 标题 图片地址 商品详情1 商品详情2 商品详情3蓝色的三个字段为text型 因为里面要存储大量文本数据
红色的字段内容都较短,而且要频繁参与where筛选现在的问题是 这应该是分成两个表好呢还是就把这些字段都在一个表里是这样:
goods表:id 一级分类 二级分类 商品名 成本价 卖价 库存 上线时间 下线时间 排序 标题 图片地址 
goods_detail表:商品详情1 商品详情2 商品详情3
还是这样?
goods表:id 一级分类 二级分类 商品名 成本价 卖价 库存 上线时间 下线时间 排序 标题 图片地址 商品详情1 商品详情2 商品详情3goods表的id为自增主键
如果分表的话,goods_detail表的goods_id(goods_detail.goods_id = goods.id)应该设置成唯一呢还是不唯一?
菜鸟求救!

解决方案 »

  1.   

    首先要先明确 商品的“商品详情1 商品详情2 商品详情3” 属性是否每个商品都有,如果不是每个都有建议分表;否则建议不分表,但在查询时应该注意尽量使用“select 商品属性1,商品属性2 from 商品表”代替“select * 商品表" ,并给需要频繁查询的“条件”属性添加适当索引;
      

  2.   

    商品详情1 商品详情2 商品详情3 永远不会参与where查询的 相当于文章的头部 中部 尾部三块
      

  3.   

    要根据你们的业务来看,如果大部分情况下都不需要查询商品详情,可以考虑分表。两表如果是1对1的关系,goods_id设成唯一
      

  4.   

    应该先关注数据中是否有大量冗余,比如一二级分类这一栏如果有大量的重复数据,就可考虑分表。
    如果原表没有太多的冗余信息,就可不考虑分表。
    goods_id 应该设置成唯一,可用id作为外键。