`
gauss2008
  • 浏览: 41068 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

商品分类表的设计

    博客分类:
  • java
阅读更多

&l

商品分类表的设计

 

闲来无事思考了下电子商务中最常遇到的商品分类表的设计问题,思考结果如下,欢迎大家来评。

商品分类表的设计

数据库设计

   最常用的2个表,简单字段

1.1     分类表

           category

   Code编码规则

第一层210-99

其他层3  100-999

1.2 商品信息表

           

Keywords字段用于商品的搜索

Belong_category用于点击分类后的商品查找,由于其外键是分类表的code字段,故很容易搜索某个大类下的所有商品,且根据belong_category的值可以很容易的指导该商品属于哪个大类。

构造数据

2.1 构造树形的分类测试数据

 

构造好的数据

 datas

 

 代码

 

 

Java代码 
private int totalLevel = 5;
	
	private int brotherCount=10;

	@Before
	public void setUp() throws Exception {
	}

	@After
	public void tearDown() throws Exception {
	}

	@Test
	@Rollback(false)
	public void testSave() {
		insertTestData(brotherCount);

	}

	private void insertTestData(int brotherCount) {

		insertFirstLayer(brotherCount);
		for (int i = 0; i < brotherCount; i++)
			insertOtherLayer(10 + i, brotherCount, 2);

	}

	private void insertFirstLayer(int brothersCount) {
		for (int i = 0; i < brothersCount; i++) {
			GoodsCategory first = new GoodsCategory();
			first.setName("The first layer" + i);
			first.setCode(String.valueOf(10 + i));
			first.setParentCode(String.valueOf(0));
			this.categoryDao.save(first);
		}
	}

	private void insertOtherLayer(long parent_code, int brothersCount, final int currentLevel) {
		int currentLevel_tmp = currentLevel;
		if (currentLevel > totalLevel)
			return;
		logger.debug("parent_code==" + parent_code);
		for (int k = 0; k < brothersCount; k++) {
			GoodsCategory otherlayer = new GoodsCategory();
			long code_tmp = 100;
			String current_code = String.valueOf(parent_code) + String.valueOf(code_tmp + k);
			otherlayer.setName("The " + currentLevel_tmp + " layer");
			otherlayer.setCode(current_code);
			otherlayer.setParentCode(String.valueOf(parent_code));
			this.categoryDao.save(otherlayer);
			insertOtherLayer(Long.parseLong(current_code), brothersCount, currentLevel_tmp + 1);
		} 
	}

	@Test
	public void testGetAllCategorys() {
		// fail("Not yet implemented");
		long totalRecordCount=0;
		for (int i = 1; i < totalLevel+1; i++) {
			totalRecordCount+=Math.pow(brotherCount, i);
		}
		System.out.println("totalRecordCount========"+totalRecordCount);
		
		List<GoodsCategory> goodCategories = this.categoryDao.getAll();
		System.out.println("list size======"+goodCategories.size());
		TreeHelper treeHelper = new TreeHelper(goodCategories);
		System.out.println("print tree");
		//treeHelper.printRoot();

	}
 

测试用例

3.1 测试并构造树形

 

 public class TreeHelper {

  1.     TreeData root = new TreeData();  
  2.     protected final transient Logger log = LoggerFactory.getLogger(getClass());  
  3.   
  4.     public TreeHelper(List<GoodsCategory> goodCategories) {  
  5.         buildTree(goodCategories);  
  6.     }  
  7.   
  8.     public TreeData getRoot() {  
  9.         return root;  
  10.     }  
  11.   
  12.     private void buildTree(List<GoodsCategory> goodCategories) {  
  13.         root.setCodes("0");  
  14.         root.setName("Root");  
  15.         TreeData td_pre = root;  
  16.         int codelenth_pre = 0;  
  17.         String code_pre="";  
  18.         for (GoodsCategory goodsCategory : goodCategories) {  
  19.             String code = goodsCategory.getCode();  
  20.             int codelenth_current = code.length();  
  21.             TreeData td_current = new TreeData();  
  22.             td_current.setCodes(code);  
  23.             td_current.setName(goodsCategory.getName());  
  24.               
  25.             log.info("codelenth_last="+codelenth_pre+" codelenth_current="+codelenth_current);  
  26.             log.info("code_pre="+code_pre+" code_current="+code);  
  27.             // create new child  
  28.             if (codelenth_pre < codelenth_current) {  
  29.   
  30.                 td_pre.addChild(td_current);  
  31.                 td_current.setParent(td_pre);  
  32.                 td_pre = td_current;  
  33.                 code_pre = code;  
  34.             }  
  35.             // add child to parent  
  36.             else if (codelenth_pre == codelenth_current) {  
  37.                 td_pre.getParent().addChild(td_current);  
  38.                 td_current.setParent(td_pre.getParent());  
  39.             }  
  40.             // add child continue  
  41.             else {  
  42.                 int dilevel = (int) Math.ceil(new Double(codelenth_pre - codelenth_current)/ 3);  
  43.                 log.info("dilevel="+dilevel);  
  44.                 for (int i = 0; i < dilevel; i++) {  
  45.                     td_pre = td_pre.getParent();  
  46.                     log.info("td_pre  code="+td_pre.getCodes());  
  47.                 }  
  48.                 code_pre = td_pre.getCodes();  
  49.                   
  50.                 td_pre.getParent().addChild(td_current);  
  51.                 td_current.setParent(td_pre.getParent());  
  52.                 td_pre = td_current;  
  53.             }  
  54.   
  55.             codelenth_pre = codelenth_current;  
  56.   
分享到:
评论
1 楼 spyker 2010-01-29  
如果商品的种类不多的话 这样基本够用
如果多的话
就要考虑其他方式

相关推荐

    京东商城商品分类表

    可直接导入MySQL数据库,另存为TXT文件后可导入Oracle数据库。

    MySQL数据库电子商务网站表的实现

    1、商品分类表 2、商品表 3、商品规格表(商品SPU表、商品规格表、商品规格项表、商品规格组合表) 4、商品属性表 5、商品属性值表 6、商品筛选表 7、商品筛选值表 8、用户表 8、评论表 9、购物车表 10、收货地址表 ...

    电商项目商品规格参数表设计SKU和SPU表设计

    SPU表通常包含商品的基本信息,如商品名称、品牌、分类、市场价等,不涉及具体的库存和价格。SPU与规格值之间的关系通常是多对多,通过关联表实现,这样可以方便地将多个规格值组合成不同的商品版本。 然后是SKU的...

    进销存数据库表设计

    商品类别字段可以使用外键关联到商品类别表,以便进行分类管理。 2. 类别表(Category) 类别表用来管理商品的大类和子类,例如电器、服装、食品等。字段包括类别ID、类别名称、父类别ID(如果允许有层级关系)等。...

    商城商品三级分类,类目,类 sql

    在IT行业中,数据库管理和SQL...综上所述,这个商场商品的三级分类系统涉及到数据库设计、SQL查询、数据关系以及性能优化等多个方面的知识点。理解和熟练掌握这些概念对于构建高效、可靠的电商平台至关重要。

    商品与分类数据库设计说明书(前台).docx

    "商品与分类数据库设计说明书(前台)" 本文档是关于商品与分类数据库设计的说明书,主要涉及到前台系统的数据库设计。下面是从文档中提取的相关知识点: 一、数据库设计的书写要求 在数据库设计中,需要以模块为...

    商品信息系统设计PPT

    客户端系统的一大亮点是根据日期自动生成编号,简化了操作,同时也实现了多仓库管理,使得商品分类和仓库分配更为灵活。 用户管理部分设计了一张登陆用户表,包含用户名、密码和权限。用户权限分为三类:系统管理员...

    Javaweb课程设计-商品管理

    商品管理可能涉及到商品表、分类表、库存表等,需要理解如何设计数据库表结构,以及如何编写高效的SQL查询语句。 4. **MyEclipse集成开发环境**:MyEclipse是用于开发JavaWeb应用的IDE,它集成了代码编辑、调试、...

    聚美优品商品分类

    聚美优品作为知名的美妆电商,其商品分类设计尤为重要,因为它直接影响到用户能否快速找到自己想要的商品。下面我们将深入探讨商品分类的相关知识点。 首先,商品分类是基于商品特性和消费者需求进行的一种逻辑划分...

    电商平台商品管理设计.pdf

    分类管理的设计应该科学合理,以支持各种商品的归类和展示。 2. 品牌管理:品牌管理是为商品赋予品牌信息的环节。通过品牌管理,可以提高商品的辨识度和品牌效应。 3. 规格管理:规格管理涉及到商品规格的定义,它...

    CoolShark商城数据库与数据表设计 商品表和管理员表

    5. `category_id`:分类ID,关联到类别表,方便按类别查找商品。 6. `brand`:品牌名称,有助于用户识别商品来源。 7. `stock`:库存数量,跟踪可售商品数量,避免超卖。 8. `image_url`:商品图片URL,展示商品外观...

    商品配置表与陈列设计说明.doc

    2. 责权分工:通常由采购人员主导,各部门协作完成,包括确定货架布局、商品分类、面积分配、价格、排面数、最小订货单位和商品空间位置等。 3. 制作程序:首先进行市场调查,确定销售商品和卖场面积;其次,按商品...

    商城项目数据库表设计

    商城项目数据库表设计:有商品spu ,sku设计 ,规格-规格值;分类,品牌,订单,退货,评价

    毕业设计手表销售系统论文

    系统设计的分类可能包括前端用户界面设计和后端服务器端处理。系统设计的特点可能涉及易用性、安全性、扩展性和性能。系统功能简述则明确了系统的各项业务逻辑,如用户管理、商品管理、订单管理等。数据库实体结构...

    商品分类三级联动数据库

    在构建一个商品分类三级联动数据库时,...在设计商品分类三级联动数据库时,不仅要考虑到数据的组织和查询效率,还要关注用户体验,确保分类的清晰性和易用性。这样才能提供一个既功能强大又易于导航的商品分类系统。

    淘宝商品分类数据库

    这个数据库由三张表构成,设计得详尽且全面,总计有2000多条数据,能够支持各种类型的商城系统进行商品分类管理和展示。接下来,我们将深入探讨这个数据库的相关知识点。 首先,我们来了解一级、二级和三级分类的...

    eshop数据库表设计201612101

    2. **网站商品分类菜单导航表**:此模块涉及一级菜单分类表、二级菜单分类表、三级菜单分类表以及店铺的一级和二级菜单表。这些表用于构建网站的商品分类结构,方便用户浏览和查找商品。每个表都有序列号、创建/修改...

    海关商品归类HS编码原则和方法学习教案.pptx

    HS编码是国际通行的商品分类系统,由World Customs Organization(世界海关组织)制定。该系统将商品分为21个大类,每个大类又可分为更细的子类。 HS编码的主要特点是使用四层次结构,即章、品目、子目和tariff项。...

    完整的电子商城表结构设计.xlsx

    完整的商城系统数据结构,有商品spu ,sku设计 ,规格-规格值;分类,品牌,订单,退货,评价

Global site tag (gtag.js) - Google Analytics