• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

,关于数据库表格设计

mysql 搞代码 7年前 (2018-06-02) 125次浏览 已收录 0个评论

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

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


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:,关于数据库表格设计
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址