麻烦问下各位大大及前辈一个数据库表格设计问题,比如我有一些用户,里面涉及所在城市,用的两张表,一张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了。到底应该用什么办法好呢?请各位大大指点一二,说说好外,坏处。

解决方案 »

  1.   

    第一种“citys里面设置userCount字段,每次插入新用户时,更新这个字段值,加1”好些
    第二种可以在一张表很方便的查询出某个城市的count(cityid)总数,但是如果需求在查询出一些城市相关的其他信息时,将会是比较麻烦的,比如在“查询这个城市的人数,城市的邮编,区号”等等吧