闲来无事思考了下电子商务中最常遇到的商品分类表的设计问题,思考结果如下,欢迎大家来评。
商品分类表的设计
1 数据库设计
最常用的2个表,简单字段
1.1 分类表
Code编码规则
第一层2位10-99
其他层3位 100-999
1.2 商品信息表
Keywords字段用于商品的搜索
Belong_category用于点击分类后的商品查找,由于其外键是分类表的code字段,故很容易搜索某个大类下的所有商品,且根据belong_category的值可以很容易的指导该商品属于哪个大类。
2 构造数据
2.1 构造树形的分类测试数据
构造好的数据
代码
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 测试用例
3.1 测试并构造树形
public class TreeHelper {
- TreeData root = new TreeData();
- protected final transient Logger log = LoggerFactory.getLogger(getClass());
-
- public TreeHelper(List<GoodsCategory> goodCategories) {
- buildTree(goodCategories);
- }
-
- public TreeData getRoot() {
- return root;
- }
-
- private void buildTree(List<GoodsCategory> goodCategories) {
- root.setCodes("0");
- root.setName("Root");
- TreeData td_pre = root;
- int codelenth_pre = 0;
- String code_pre="";
- for (GoodsCategory goodsCategory : goodCategories) {
- String code = goodsCategory.getCode();
- int codelenth_current = code.length();
- TreeData td_current = new TreeData();
- td_current.setCodes(code);
- td_current.setName(goodsCategory.getName());
-
- log.info("codelenth_last="+codelenth_pre+" codelenth_current="+codelenth_current);
- log.info("code_pre="+code_pre+" code_current="+code);
-
- if (codelenth_pre < codelenth_current) {
-
- td_pre.addChild(td_current);
- td_current.setParent(td_pre);
- td_pre = td_current;
- code_pre = code;
- }
-
- else if (codelenth_pre == codelenth_current) {
- td_pre.getParent().addChild(td_current);
- td_current.setParent(td_pre.getParent());
- }
-
- else {
- int dilevel = (int) Math.ceil(new Double(codelenth_pre - codelenth_current)/ 3);
- log.info("dilevel="+dilevel);
- for (int i = 0; i < dilevel; i++) {
- td_pre = td_pre.getParent();
- log.info("td_pre code="+td_pre.getCodes());
- }
- code_pre = td_pre.getCodes();
-
- td_pre.getParent().addChild(td_current);
- td_current.setParent(td_pre.getParent());
- td_pre = td_current;
- }
-
- codelenth_pre = codelenth_current;
-
-
相关推荐
可直接导入MySQL数据库,另存为TXT文件后可导入Oracle数据库。
1、商品分类表 2、商品表 3、商品规格表(商品SPU表、商品规格表、商品规格项表、商品规格组合表) 4、商品属性表 5、商品属性值表 6、商品筛选表 7、商品筛选值表 8、用户表 8、评论表 9、购物车表 10、收货地址表 ...
商品分类三级联动数据库,包含三个表,商品三级分类,mysql
数据库表结构 "序号 "分类 "名称 "表名 "备注 " "1 "用户管理 "用户表 "t_user_info " " "2 "商品销售 "商品信息表 "t_goods_info " " " "管理 " " " " "3 " "购物车表 "t_shoppingcar " " 8 用户信息表 "表名:t_...
商城项目数据库表设计:有商品spu ,sku设计 ,规格-规格值;分类,品牌,订单,退货,评价
完整的商城系统数据结构,有商品spu ,sku设计 ,规格-规格值;分类,品牌,订单,退货,评价
海关商品归类HS编码原则和方法学习教案.pptx
随着科学技术不断发展的今天,计算机已渐渐渗入到各个领域。伴随着网络进入千家万户,通过网络购买到自己...包括用户登录,商品详细分类,商品分类添加和删除,商品动态展示等内容。使用ASP技术和ACCESS数据库来实现。
现在的超市商品众多,可谓琳琅满目,让人看的眼花缭乱,想...(2)商品分类管理功能(查看分类、添加分类、修改分类、删除分类) (3)商品信息管理功能 (查看商品、添加商品、修改商品信息、删除商品、查询商品信息)
1 开发背景 超市是当今社会重要的组成... 信息分类清晰、准确。 强大的查询功能,保证数据查询的灵活性。 提供销售排行榜,为管理员提供真实的数据信息。 提供灵活、方便的权限设置功能,使整个系统的管理分工明确。
(2)经上述系统功能分析和需求总结,考虑到将来功能的扩展,设计如下的数据项和数 据结构:商品类型信息,包括数据项有:商品信息,包括的数据项有:商品编号、商品名称、 商品的的生产日期、库存量等。商供应商信息...
2019最新淘宝后台全品类商品分类明细名表,后台sku类目树设计,包含标题,id,具体url资源
设计一个简单商品分类管理系统,对某超市商品进行分类存储和管理. (孩子兄弟法+父指针);商品信息描述如下:商品代码,商品名称,商品价格,商品数量。 基本要求 1、浏览当前商品分类目录的所有内容(子分类和...
在数据库设计方面,我们根据商品信息分类的需求,设计了包括商品信息表、分类信息表等在内的数据表结构,并建立了合理的数据关系,确保数据的完整性和一致性。 在程序开发上,我们采用SSM框架搭建系统的后端架构,...
5.2.3商品分类管理页面 5.2.4商品管理页面 5.2.5商品订单管理页面 第6章 系统测试 6.1系统调试的目的和意义 6.2测试环境 6.3功能测试用例 6.3.1商品展示页显示 6.3.2用户余额展示 6.3.3会员管理
图2.1 商品分类设计视图 图2.2 商品分类数据视图 2、超市库存表 该表主要的功能是显示已剩下的库存,给下次的进货提供信息。 图2.3 库存设计视图 图2.4 库存数据视图 3、进货信息表 该表主要是显示进货商品的基本...
个人中心、用户管理、员工管理、商品分类管理、商品信息管理、商品维护管理、入库记录管理、出库记录管理、销售统计管理、管理员管理、留言板管理、系统管理、订单管理、留言管理,员工;个人中心、用户管理、商品...
Python基于朴素贝叶斯的京东商品评论分类源码+数据集+设计报告(好评与差评).zip 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到94.5分,放心下载使用! 该资源适合...
对于三层构建// 查询的方法 public Set selectAll() { // 用HashSet查询 Set li1 = new HashSet(); // 用TreeSet查询 Set li2 = new TreeSet(); // 用LinkedHashSet查询 Set li3 = new LinkedHashSet()...
图2.1 商品分类设计视图 图2.2 商品分类数据视图 2、超市库存表 该表主要的功能是显示已剩下的库存,给下次的进货提供信息。 图2.3 库存设计视图 图2.4 库存数据视图 3、进货信息表 该表主要是显示进货商品的基本...