自适应商品属性变化的商品库设计与访问研究概要Word下载.docx
《自适应商品属性变化的商品库设计与访问研究概要Word下载.docx》由会员分享,可在线阅读,更多相关《自适应商品属性变化的商品库设计与访问研究概要Word下载.docx(12页珍藏版)》请在冰点文库上搜索。
所以,在数据库设计时,需要构建用户数据字典,其中存放不同商品表的表名、字段名、类型等元数据,用来模仿系统表的作用,这是关键和核心,两者区别在于:
先后顺序不同:
只有先创建了用户表,系统表中才会记录该用户表的元数据;
只有模仿系统表的用户数据字典中先记录了用户表的元数据,才能创建用户表。
维护的方式不同:
系统表的维护工作由数据库服务器自动来完,而模仿系统表的用户数据字典是由用户自己维护的。
用户数据字典中还要存放反映商品重要特征的用户购买商品时所关心的参数、查询条件和查询值的信息以及其它变化的数据。
程序从客户端界面根据用户的点击、输入和用户数据字典提取参数,动态构建SQL语句,完成对数据库的操作,拓扑结构如图1所示。
2011,Vol.32,No.113707
商品种类表的存储结构汲取了单层BOM表结构优点,同时又作了改进,满足了业务的需求,提高了遍历和查找的效率。
比如查找所有根节点只要判断Level为0。
种类表的属性是不变的,但是不同种类所对应的商品表的属性是变化的,所以只有取得叶节点的种类号,才能获得对应的商品表。
表2说明:
数据分层就是将实体的属性层次化,结合了面向对象的分析能力,使关系具有可继承性,增强E-R模型的能力。
可以使用主表和扩展表相结合的方式来存储和组织数据。
主表中存储的是共性部分,即不变的属性部分,比如这里的Goods_Base表;
扩展表中存储的是个性化的部分,即变化的属性部分,解决数据的普适性问题,扩展表通过关键字与主表关联,比如这里的种类号和商品号。
优点:
可以方便的在一张主表中对所有商品进行统一的管理和查询。
如果将主属性和扩展属性放在一张表中,那么对共有属性的查询必须遍历所有的商品表。
比如查询某个品牌下的商品,首先需找到所有种类的叶节点,然后根据种类号遍历所有的商品表,非常低效。
另外,库结构清晰,并完整保存了所有有用数据。
如果在垂直方向有多个扩展表,还会避
2商品库的设计
如何动态生成不同种类的商品表?
重要的是需将不同商
免大量数据冗余问题。
表3说明:
保存所有扩展表的元数据,是用户数据字典表,模仿系统表的作用。
如何自适应商品属性的变化?
表3是关键。
将所有扩展
品的个性化属性元数据自定义在用户的数据字典中,即将商品属性的差异化部分使用不同关系表来存储,使用二维关系表来拥抱变化的属性部分,而将不变的属性部分统一存储。
这里既有模仿系统表,也有数据分层的设计理念,主要的库结构设计如表1~表6所示。
表1说明:
单层BOM表结构采用的是“单父一单子”的形式,对于每种层次结构只定义一次,数据库冗余少,易于保证BOM数据的完整性和一致性[11-12]。
表1
字段名GoodsSpeciesIDSpeciesName
LevelChildIDState
商品种类表Goods_Species结构
注解商品种类号,主键
种类名
层次,为0表示是根节点孩子种类号,为0表示是叶节点1:
表示叶结点的属性字段已建立
2:
表示叶结点对应的商品表已建立3:
对应商品表的数据已经录入
描述种类路径,从根节点种类开始到自身,主要用于创建物理文件夹名,存放图片,防止BOM结构产生循环
…
Path…
37082011,Vol.32,No.11计算机工程与设计ComputerEngineeringandDesign
1.5-2.0GHz等。
表5和表6的价值是为了用户在商品浏览过程中能根据关心的商品特征参数进行有效方便的查询,从而避免用户自己输入值及不知输入什么样格式的值而带来的不良用户商品浏览体验。
表5
商品查询项目表GoodsSelect_Item
注解查询项编号,主键字段所属种类号
提供给用户的查询项,比如品牌、主频对应要查的表中字段名FieldName是在主表还是扩展表
表的元数据存放在表GoodSExtend_Fields中,就可以动态生成具体的商品扩展表。
这里假定所有商品扩展表的表名为“Goods_”+变量GoodsSpeciesID,比如电脑的种类号为123,则其扩展表的表名为“Goods_123”,当然也可以使用一张表来保存GoodsSpeciesID和GoodsTable的映射关系。
商品的个性化属性值往往是客户关心的重要指标,比如cup主频大小。
这需要专业人生整理和公司实际业务需要,才能弄清它们,不能泛泛用一张表来保存所有的商品信息。
所以此表的设计和表中的值至关重要。
如果商品扩展表的元数据不被保存在表GoodSExtend_Fields中,那么当需要添加新种类商品从事电子商务活动时,就需要被动添加扩展表,同时需要修改局部程序。
不能做到自适应属性的变化。
因为扩展表是在系统运行过程中产生的,所以在录入扩展属性值时,需要考虑使用什么控件来接收和选择数据,兼顾客户端界面设计。
系统核心表的结构如图2所示,向上箭头代表数据分层为主表和扩展表,有继承的含义;
向下箭头代表扩展表的生成方式和数据访问方式,表明只有自上而下才能访问。
字段名SelectItemIDGoodsSpeciesIDSelectItemValue
FieldName
Positoin
表6商品查询明显表GoodsSelect_DetailItem
字段名SelectItemDetailId
注解
查询明细项编号,主键
查询项编号
明细相值
SelectItemIDSelectItemDetailValue
表3至表6都使用了自定义变化的数据在关系表中,甚至是元数据,以很好的自适应系统的灵活性和扩展性。
3数据访问算法和客户端界面
数据访问的一个核心难点是如何构建满足需要的SQL字
符串。
动态SQL问题是数据库系统设计开发者研究的热点,最具代表性的方案是自主建立系统数据字典或者调用系统关系元数据字典来实现[10,13-17]。
下面探讨如何利用自主建立的系统数据字典、利用用户添加的各种逻辑关系的控制和动态界面上输入的数据,构建动态SQL语句。
3.1
表4说明:
存放商品展示信息,是用户数据字典表,便于灵活调整展示信息。
表4
字段名GoodIDGoodsSpeciesIDBaseFieldNamesExtendFieldNames
FileIDFirst
商品扩展表的创建
首先将商品的扩展信息字段自定义到表GoodSExtend_
Fields中,然后动态构建商品扩展表,算法描述如下:
(1数据管理员从客户端界面点击商品种类叶节点,即可提取种类号参数GoodsSpeciesID;
(2根据GoodsSpeciesID,从表GoodSExtend_Fields提取该种类所有扩展字段元信息,包括扩展字段名、类型、约束等;
(3动态构建createtalbe语句,表名为“Goods_”+Goods-SpeciesID。
商品展示表GoodsShow_Fields结构
注解商品号所属种类号
规定展示商品时要显示的主表中的字段集合,
有的字段是不便展示给用户的。
规定展示商品详细信息时还要显示的扩展表中字段集合
文件号
标识是否是首次展示的图片
3.2商品展示
商品展示的数据访问算法描述如下:
(1浏览商品种类,提取参数GoodsSpeciesID;
(2根据GoodsSpeciesID,从主表Goods_Base提取商品基
本参数;
主要包括要展示的基本和扩展字段集合、图片集合等。
另外,还有一张文件表用于保存商品图片或零部件图片(属性值对应的图片的信息,路径的默认值是叶节点种类的path字段值。
表5说明:
存放客户关心的不同商品查询项,即特征参数。
表6说明:
存放客户关心的查询相的明细值,供用户再选择,以查询满足条件的商品。
比如SelectItemValue字段值若为电脑主频,则SelectItemDetailValue的值可定义为2.0-2.5GHz、
(3根据GoodsSpeciesID,从扩展表“Goods_”+GoodsSpeciesID提取商品扩展信息;
(4根据展示表GoodsShow_Fields和文件表,筛选要展示的主字段、扩展字段和图片;
(5只展示规定的字段信息给客户,界面如图3所示,工作人员可以在WinForm窗体界面上看到敏感的数据,比如底价。
3.3查询
主要分为商品的宏观查询和微观查询。
宏观查询即基本
自适应商品属性变化的商品库设计与访问研究2011,Vol.32,No.113709
属性共性化的查询,是对商品主表Goods_Base进行所有商品的公共字段的组合查询,组合的条件可以是“与”和“或”的关系,字段条件可以是“包含”、“大于”、“范围限制”等关系,通过用户的操作构建动态的查询条件语句,如图4所示。
有受到多大影响,因为有如下的处理方式:
建立合适的主键、外键和索引。
主表和扩展表通过商品号关联,对查询项建立索引。
从微观查询上来说,不同种类的商品扩展属性存储在不同的扩展表“Goods_”+GoodsSpeciesID中,微观查询时需要扫
微观查询即扩展属性个性化查询,是根据用户所关心的商品的特征参数为条件进行查询。
查询信息自定义在查询表中,以自适应商品种类的变化和好的客户体验。
比如对于电脑来说,用户关心的是品牌、价格、主频、内存等参数,则将它们作为查询项显示在界面上,点击后,显示查询项的明细值,再根据明细值去查客户关心的具体商品,数据访问算法设计描述如下:
(1提取参数GoodsSpeciesID;
(2从表GoodsSelect_Item提取查询项值在界面显示;
(3根据用户对查询项的选择,再从表GoodsSelect_Detail-Item提取查询项明细值显示;
(4点击明细项,即可生成动态的SQL查询语句,Goods-SpeciesID决定扩展表名、GoodsSelect_Item决定条件字段、GoodsSelect_DetailItem决定条件值,提取满足用户选择明细项条件的商品信息,界面如图5所示,下方显示客户关心的查询项,右边显示明细项。
微观查询还包括同类商品对比的查询,数据访问算法设计描述如下:
(1在同类商品的浏览过程中,保存浏览过的商品,并将商品名显示在对比界面上;
(2选择对比界面,客户可以选择对哪些同类商品进行对比,这时显示商品的可展示的属性参数,供用户选择进行对比;
(3选择对比参数,提取数据,对比的界面如图6所示。
描的记录数要少得多。
从宏观查询上来说,不同种类商品的主属性存储在一张主表Goods_Base中,宏观查询时先扫描表Goods_Base,定位到具体商品后,才扫描个别的商品表,无需扫描所有的扩展表;
按需提取数据,以减少数据库服务器的负荷和网络的负载,比如当客户浏览商品种类的时候,只需提取其点击的叶节点种类的商品,而不是所有种类的商品,并将商品种类和商品集合保存在内存中,而当用户更换其它叶节点种类的商品查询时,将上一次的商品集合从内存删除,释放内存空间;
对微观数据的查询,充分利用前面的查询结果和内存,从内存提取数据,大大加快数据访问速度和减少与数据库的I/O交互。
4结束语
该商品库的设计已在江苏苏泽电子商务系统中得到较好
应用。
该设计的自适应体现如下:
自适应因商品种类的变化而导致的商品属性的变化,因为无需重新设计数据库。
商品表的变化部分是由用户自定义在系统数据字典中的,扩展表的设计是动态的,生成也是动态的;
自适应对商品数据的访问,因为数据访问是动态的,对商品表的访问是动态的,对数据的提取和查询也是动态的。
数据的访问无需修改程序,因为SQL语句的生成是由客户的操作、输入和对数据库中用户字典数据的提取共同构成的,变化的数据部分已经自定义在用户数据字典中。
自适应客户端动态界面的生成,因为用户数据字典中已
3.4数据访问性能
虽然使用了元数据和动态数据访问技术,但是性能并没
37102011,Vol.32,No.11计算机工程与设计ComputerEngineeringandDesign
[7][8][9]
黄亮,吴可嘉.一种模仿XML的灵活的关系数据库设计[J].电脑知识与技术,2010,6(10:
2305-2310.
梁晔,刘宏哲.支持语义查询的扩展关系型数据库设计及应用[J].北京联合大学学报(自然科学版,2007,21(4:
15-18.丁烨,蒋外文.基于动态数据库设计模式的方法[J].计算机与现代化,2006(4:
85-87.
[10]孙仁鹏.基于系统表的通用动态查询系统设计与实现[J].计算
机工程与设计,2007,28(23:
5819-5821.
[11]彭克勤,岳清.BOM的关系型数据库设计及算法研究[J].计算
机与数字工程,2009,37(12:
14-16.
[12]张翠丽,张申生.制药行业BOM的数据库设计及算法的研究
[J].计算机工程,2006,32(1:
270-272.
[13]岳连德,孔令举.基于通用模式的高校学生成绩管理系统设计
[J].计算机工程与设计,2006,27(8:
1476-1478.
[14]穆彤娜,于洪敏.数据库系统综合查询方法研究[J].中国矿业大
学学报,2006,35(2:
260-264.
[15]杨红卫,童小华.基于动态查询和报表创建的海南锆钛砂矿系
统[J].河南科技人学学报:
自然科学版,2010,31(5:
102-103.[16]樊新华.关系数据库的查询优化技术[J].计算机与数字工程,
2009,37(12:
188-192.
[17]杨建红.Web动态组合查询的设计与实现[J].湖北工业大学学
报,2010,25(5:
75-76.
经自定义了变化的元数据和数据。
所以,当需要添加新的种类商品时,无需修改任何程序。
为了减少客户端程序的维护,往往需要灵活的数据库设计,将变化的部分自定义在数据库中,完善用户数据字典,甚至有时还需要使用系统元数据,有兴趣的读者可以参考文献[10];
另外,往往还需要对客户端变化的部分做配置,配置信息一般自定义在专门的XML文件中,通过修改配置信息而无需修改程序来适应外界的变化。
参考文献:
[1][2][3][4][5][6]
刘洋,高连生.一种面向应用扩展的树状数据库设计模型[J].计算机工程与设计,2006,27(21:
4074-4077.
盛春健,吴绍春.支持数据库动态建模的框架系统研究[J].计算机工程与设计,2008,29(19:
4903-4909.
张勇,杜平安.动态扩充参数化零件库的数据库设计[J].机械设计与制作,2008,11(11:
24-26.
罗舒,曹旻.基于树结构的数据库设计方案及应用[J].计算机工程,2009,35(22:
91-93.
洪伟,吴云.基于树形结构的汽车试验集成系统数据库设计[J].计算机技术与发展,2008,18(2:
177-183.
邹沿新.层次数据模型在关系数据库设计中的实现方式[J].岳阳职业技术学院学报,2008,23(3:
69-71.
[1][2][3][4][5][6][7]
卜先锦.指控单元战术协同效果分析、建模与应用[D].长沙:
国防科技大学博士学位论文,2006.
汪文元.基于工作流的兵力调度技术研究[D].长沙:
国防科技大学博士学位论文,2005.
杨健,史红权.基于多Agent的编队对潜作战智能辅助决策系统研究[J].舰船科学技术,2010,32(2:
73-76.
李瑛,毕义明.作战仿真中指挥Agent的实现[J].火力与指挥控制,2010,35(4:
164-166.
李志强,胡晓峰,司光亚,等.战争系统复杂性及其基于Agent建模仿真研究进展[J].火力与指挥控制,2006,31(10:
1-3.郑守华,何明远.第一场国际反恐怖战争:
阿富汗战争[M].北京:
军事科学出版社,2009.
李哲,封汉颍.网络中心战条件下的导弹作战模拟方法[J].兵工自动化-先进制造与管理,2007,26(5:
43-44.
[8][9]
詹红霞,颜泉.MultiAgent系统在电力系统中的应用[J].重庆大学学报(自然科学版,2006,29(11:
53-57.
刘强,薛惠锋.基于Multi-Agent的智能指控系统建模[J].火力与指挥控制,2008,33(6:
[10]高翔,王宏柯,王治军,等.基于多Agent的多机协同空战仿真系
统设计和实现[J].系统工程与电子技术,2010,32(4:
807-811.[11]李晓宁,于洪敏,张华才.基于作战指挥Agent协作模型研究[J].
兵工自动化-武器装备自动化,2007,26(12:
8-10.
[12]苗德成,黄莉萍,张晓东,等.基于分布实时多Agent技术的防空
兵群指挥决策研究[J].指挥控制与仿真,2006,28(1:
89-93.[13]赵杰,林辉.基于AGENT的防空作战CGF行为建模研究[J].
系统仿真学报,2007,19(10:
2321-2323.
[14]廖守亿.复杂系统基于Agent的建模与仿真方法研究及应用
[D].长沙:
[15]陈红业,李海刚,王力民,等.美国网络中心战的发展动向与分析
[J].舰船电子工程,2008,28(6:
21-26.