关于一个动态生成表的设计?

有这样一个系统,系统中有权益这样一个概念。权益可以表示优惠券,红包或者定向优惠券等。每一种权益其中所包含的字段都是不同的。那么对于不同的客户我可能会定义一个不同的权益,现在根据我的想法,设计根据客户定义一个配置,然后来动态的创建一张表表示这个类型的权益。请问这种设计是否合理,是否有其他的设计?如果采用采用这种设计,JAVA中有没有根据配置动态创建表的库?

阅读 5.7k
2 个回答

这种结构不确定而又可能大量创建的数据表最好是使用文档型数据库如mongodb,或者使用关系型数据库的json类型字段如postgresql,它们都是支持直接使用json字段进行查询的。

至于不支持json的数据库,也可以使用json格式的字符串来存放,如果需要使用某些json字段查询,可以抽取出来作为独立字段。如——

name varchar
owner ?
data json

以上结构,name为权益名称,owner为所属用户(也可以再设置其他一些通用字段),而data中则是以json格式存放的权益详细数据。

这样一张权益表就可以,无论用户定义何种结构的权益,一律以json存放,你所要做的只是json的解析就可以。

首先,java中可也用代码来创建数据库表。
其次,你这个需求不需要这样设计,数据表一般都是有数据量的,你想根据用户来创建表,那这么多用户需要创建多少表?
我的建议的:用户表;用户权益关系表;权益表1(优惠卷),权益表2(红包)...
创建这三类表就可以了,完全实现你的功能

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题