基于二叉排序树的商品信息动态检索研究(1)
2014-07-13 01:25
导读:计算机应用论文论文,基于二叉排序树的商品信息动态检索研究(1)应该怎么写,有什么格式要求,科教论文网提供的这篇文章是一个很好的范例:
摘 要 随着关系数据库技术的应用越来越广泛,二叉树算法、结
摘 要 随着关系数据库技术的应用越来越广泛,二叉树算法、结构化查询语言等研究对数据库查询有着实际的意义。论文提出一种用二叉排序树来表示关系表的方法,可提高商品信息的查询效率,根据用户的查询信息动态地提取用户的购买需求,形成指导企业经营的决策方案的实施计划,并在此基础上用JAVA、SQL对此二叉树进行查询和添加删改。 关键词 关系表;二叉排序树;动态检索;JAVA;SQL 1 问题的提出 目前流行的基于B/S模式的信息系统中对数据库表的查询操作大部分使用的是顺序查找法,即从第一行记录顺序的查找到满足查询条件的记录,由于数据量的巨大,查找的时间复杂度很大[1]。为此论文研究与实现了基于二叉排序树的商品信息动态检索,提高商品信息的查询效率。根据用户的查询信息动态的提取用户的购买需求,反馈给管理者,形成指导企业经营的决策方案的实施计划。2 问题的分析与实现2.1 建树 二叉排序树(Binary Sort Tree),简称BST 树,它是一种特殊的二叉树,其具有的特点:①每个结点左子树上的所有结点的关键字,值均小于该结点的关键字值;②每个结点右子树上的所有结点的关键字,值均大于或等于该结点的关键字值;③左\右子树本身又各是一棵二叉排序树[2]。二叉树的内存表示一般建立在含子树结点的指针基础上,我们这里用关系(二维表)的方法表示该二叉树。根据其数据库的商品汇总表建立该二叉树商品树表,表结构如表1所示。表1 COMMODITYTREE表结构SQL表示
字段名数据类型作用备注
COMMODITYIDint 节点的唯一标识
COMMODITYNAMEtext商品名称
COMMODITYPYvarchar 商品名称首字母
FatherInfovarchar该结点的父结点信息
SonInfobit该结点与父结点关系信息
SearchCountint记录查询次数
将表中的每行记录看成一个包含若干数据项的数据结点,在表FatherInfo 字段中其值为NULL时表示该节点为根结点,SonInfo字段中用0或1分别表示该结点的左子树和右子树,这就和二叉树的内存表示对应起来。 按照二叉排序树的原理,根据COMMODITYTREE表中COMMODITYPY(商品名称首字母)字段的信息将COMMODITY TREE表中的FatherInfo 字段和SonInfo字段补充完整。2.2 树的平衡化问题 由于BST树的形状取决于各个元素被插入二叉树的先后顺序。一个新的元素作为一个新的结点被添加到二叉树中,有可能导致二叉排序树不平衡,使查询效率降低。平衡二叉排序树,又称为AVL树,它是一棵满足“任何一个结点的左右子树高度差绝对值不超过1”的二叉排序树。某结点的左子树高减去右子树高,称为该结点的平衡因子。平衡二叉树定义了一种机制,当树变得不平衡时,对二叉树进行调整,使之重新变为平衡的。基于这种平衡二叉树结构的查找算法,是目前所有动态查找算法中效率最高的。调整算法是旋转法,分别针对不同失衡结构采用左转、右转、先左转后右转、先右转后左转4种转法,对失衡的二叉树进行调整使其达到平衡状态[3]。 2.3 查询信息的处理 (1)将用户在浏览器上输入的要查询的商品名称转换为各字拼音的首字母。与COMMODITY TREE表中COMMOD ITYPY(商品名称首字母)字段信息依次比较各字母串中的字符,直到找到与用户输入商品名称拼音首字母相同的商品名。若首字母相同,还需进一步比较COMMODITYNAME是否相同,因为有可能出现不同商品名其首字母相同的情况。 (2)在设计之初,建立一个空数据表(NEEDCOMMOD ITY表)用来存储没有查询到的商品,其表结构如表2所示,当该产品被查询次数累计到一定值M(由管理者设定)时,要对管理者进行提醒是否该经销此商品。如果决定经销此商品并开始进货经销,则将其添加到相应的商品汇总表和COMMODITYTREE表。表2 NEEDCOMMODITY 表结构