首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Mysql >

,关于数据库表格设计

2012-04-26 
求助,关于数据库表格设计麻烦问下各位大大及前辈一个数据库表格设计问题,比如我有一些用户,里面涉及所在城

求助,关于数据库表格设计
麻烦问下各位大大及前辈一个数据库表格设计问题,

比如我有一些用户,里面涉及所在城市,用的两张表,一张userInfo,一张citys,userInfo里面有一个字段是cityId,我的问题是有没有必要在citys表格中设置userCount字段统计一个城市有拥有的人数?

原来是想在citys里面设置userCount字段,每次插入新用户时,更新这个字段值,加1。查询的时候,用select userCount from citys就能查出这个城市有多少人,但是一想,userInfo里面有cityId这个字段了,用select count(cityId) from user where cId = ‘城市id’也可以查出这个城市有多少人,但是这样citys表里的userCount显得没有用了,冗余了,可是用后一种方法,每次还要查出城市id才行。如果将所有城市用列表显示出来,那查询量将非常大。如果用前一种方法,在citys里面设置userCount字段,那么,增加,删除用户都要更新userCount了。

到底应该用什么办法好呢?请各位大大指点一二,说说好外,坏处。

[解决办法]
一般来说有时间换空间和空间换时间的方法,增加一些冗余字段主要是为了使用上的方便。
具体的时候需不需要,看你是查询用的多还是增删改的多,查的多就可以冗余,否则就不冗余。
[解决办法]
第一种“citys里面设置userCount字段,每次插入新用户时,更新这个字段值,加1”好些
第二种可以在一张表很方便的查询出某个城市的count(cityid)总数,但是如果需求在查询出一些城市相关的其他信息时,将会是比较麻烦的,比如在“查询这个城市的人数,城市的邮编,区号”等等吧
[解决办法]
第一种好
[解决办法]
加一个字段吧,这种不算冗余,只是牺牲很小的空间来换取效率

热点排行