我这里是个比较简单的应用,我想做成IGOOGLE的那种,但是要和用户关联。现在有3个表。user表,tab表(代表IGOOGLE里面用户自己定义的TAB标签),然后是widget表(就是每个标签下的小工具)。user表和tab表是一对多,一个用户拥有多个tab标签是没有问题的。现在大家都知道IGOOGLE的那个应用,是开发好的,然后点应用就是应用上你的这个用户的这个TAB标签里面,那么TAB标签在业务上是一对多widget表的。但是我想直接把widget表做成一个资源表,因为如果不是这样的话会造成一个widget表数据量会很多的情况,相当于比如说:10000个用户平均有7个tab标签,那么等于tab表就有70000个记录,然后widget表又是针对每个标签来一对多的话,那么肯定有几十万个widget.这还只是10000个用户的情况。但是one-to-many在逻辑上是这样的,但是我想的是另外的设计方案。
如果我不把widget表设计成资源表,比如说就是IGOOGLE的应用列表,就最多几万个而已。tab表中有个字段是一个字符串类型的但是用逗号隔开,我相信会hibernate的人都知道,hibernate可以自定义类型很方便的把这样类型映射成一个LIST。这样我一个用户进入系统,点一个TAB标签的时候,就只会查询出来10来过widget而且是从几万个数据中查,应该效率高,但是在展示的时候涉及到循环。而且我拿到的也只是ID而已。我不知道这样的设计是否比较好,我想寻求大家的帮助。
这里还有个问题就是如果不做one-to-many更新的话会比较麻烦,但是都还好。看大家的意见。
如果我不把widget表设计成资源表,比如说就是IGOOGLE的应用列表,就最多几万个而已。tab表中有个字段是一个字符串类型的但是用逗号隔开,我相信会hibernate的人都知道,hibernate可以自定义类型很方便的把这样类型映射成一个LIST。这样我一个用户进入系统,点一个TAB标签的时候,就只会查询出来10来过widget而且是从几万个数据中查,应该效率高,但是在展示的时候涉及到循环。而且我拿到的也只是ID而已。我不知道这样的设计是否比较好,我想寻求大家的帮助。
这里还有个问题就是如果不做one-to-many更新的话会比较麻烦,但是都还好。看大家的意见。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货