自定义表单系统构想
近来淘宝,发现淘宝网的商品查询做得很细致,很灵活,能通过产品各个角度进行搜索。这个功能是怎么实现的呢,不会是通过BI系统的维度抽取来实现的吧,如果各个产品都是结构化的数据库表格,那需要的表格就会很多很多,是不是通过自定义表单系统实现的呢?
经过今天晚上的思考,自定义表单系统的初步数据库设计如下:
表单项模板表(ItemTemplate):包含数据类型(按照数据类型对应到数据库中不同的表中去) 、数据长度 、UI配置信息、关联实体、关联条件等;
表单模板表(FormTemplate):包含集合items(each item为ItemTemplate)、表单名称、UI配置信息等;
表单项表(Item):包含template(ItemTemplate)+value等信息;
表单表(Form):包含template(FormTemplate)、录入时间等信息,items集合(each item为Item);
通过这4个表可以灵活地生成各个产品所需要的表单模板,根据表单模板可以生成表单的查询条件,这种设计在应对结构多样性非常明显的产品实体设计的时候应该能满足需求,可以包含产品的各个具体信息,而且可以在用户使用习惯的培养过程中逐渐结构化产品实体,满足更精确的查询需要。
自定义表单的界面设计,应该是技术上的一个难点,可以参考extjs的GUI插件等方式来实现表单模板的设计,传统html界面设计结合未加界面设计的表单模板既可以保证美观又能获得自定义表单系统的优点。
这种方式感觉就是在实现简单的数据库一样,和在数据库中生成各个产品的结构化表格相比,不清楚哪个方案更好一点,请有研究的朋友指点指点。