日期:2014-05-16  浏览次数:20655 次

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

比如我有一些用户,里面涉及所在城市,用的两张表,一张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)总数,但是如果需求在查询出一些城市相关的其他信息时,将会是比较麻烦的,比如在“查询这个城市的人数,城市的邮编,区号”等等吧
------解决方案--------------------
第一种好
------解决方案--------------------
加一个字段吧,这种不算冗余,只是牺牲很小的空间来换取效率