数据库-查询系统中,用户可自增加字段,如何高效的设计表结构?
需求如下:
1.目前有个查询系统,所有字段由用户进行添加,理论上可以增加无数个字段。
比如,用户可以增加【发货日期】,【运营商】等等。
2.其中要求某些字段为枚举类型,比如【运营商】,要求只能包含如下的枚举字段【中国移动】,【联通】,【电信】等。
3.查询条件,由用户自行组合决定。比如:运营商 包含 移动、联通,金额 不大于 10000。
求大家帮设计下这个需求的表结构。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
你这个需求跟我们现在做的发布系统的需求很像,我们是这样的,在前端让用户可以选择要创建的字段名称、类型、长度、是否可索引等,然后数据库上创建两个表,一个是"索引表"(这是我们起的名称),一个是"数据表"(数据表只有两个字段:key,value),当用户选择的字段是可索引(当然可索引的字段只能是基本数据,比较char varchar int等)的,那么就为这个字段在索引表创建一个字段,然后将用户的所有输入数据序列化或者JSON后放入数据表,这样的好处是当查询的时候只有涉及到索引表的数据就只要从索引表里取,有涉及到数据表的的数据就就从数据表取,当然数据这个Key就要你自己设计了,可以用索引表的ID或者是其它的都可以,只要能和索引表关联起来就行。
建议使用nosql数据库 如mongoDB
不用预先定义好数据结构,一个collection里可以放不同结构的数据
使用纵向表的方式,具体纵向表的结构,你可以从网上查查,将来一个字段存储正则表达式,以此在程序中做类型的验证。希望对你有帮助。