省市区要建三张表,感觉永远成不了CTO

Listar 发布于 2016/10/12 16:12
阅读 5K+
收藏 2

页面上省市区下拉框选择,CTO把省市区建了三张表,t_province, t_city, t_area。

问:为什么不建一张表。

答:一张表数据冗余。

然后我就没有然后了。

希望大神分析其原因

加载中
4
梅开源
梅开源

想用一张表的,最后成了程序员

想用三张表的,最后成了CTO

不管用什么的只管画省市县三级联动图的,最后成了产品经理

不管用什么只管什么时候做完的,最后成了项目经理

不知道什么叫做表的,最后成了老板。

知道道理的人,往往被道理所迷惑而专心钻研却没有收益。不知道道理的人,在别的地方收获了。

乌龟壳
乌龟壳
技术和赚钱本来就是两回事,70年的技术人比做买卖的有地位多了,后来才变成越有钱越有地位。这个和时代有关。至于你想钻研赚钱方面还是技术方面,看你个人的理想。
3
乌龟壳
乌龟壳

这问题还要拿出来问吗。光看数据怎么存是没用的。

省市区可以用文件存,可以用脑袋存,也可以写在纸上需要用的时候当场读取照片进行文字识别解析出来。

关键是要怎么用。如果你知道要怎么用。一张表存和三张表存,写写代码实现功能就知道哪种合适了。 所以这问题没啥好问的,试试就知道了。

阿信sxq
阿信sxq
赞同,脱离实际场景,谈“架构”,纯粹就是扯淡
2
OSC首席保安
OSC首席保安

引用来自“web4j”的评论

我只建立一张表,ID,name,parentID。

可以再加一个level,标识几线城市。

有时候需要把所有的二线城市全部读出来

0
月月川
月月川
因为  省   市  区  是固定的   而他们组合起来  数据量会几何倍数增加  
0
坏孩子
坏孩子
纠结这些小问题 永远成不了CTO
0
m
magiclogy
首先他根本不知道什么叫冗余。。。

看个例子:
id    firstName    secondName
1     赵           一
2     赵           二




两个“赵”冗余了?

数据库冗余指的是下面这种情况:
id   title       writenBy    authorFirstName
1    no name     1           赵
2    untitlted   1           赵



authorFirstName和firstName是同一个东西但是出现在两张数据表里,这才叫冗余。

另外数据冗余是有好处的,就是简化数据库查询,提高性能(比如点赞数这种数据,每次都使用COUNT的话,开销非常巨大)。省市区数据分开来的话,程序写起来每次的多表JOIN会死人的。。。

值得注意的是,除了国家进行行政区划管理,省市区数据对于任何用户都是常量,只有数据库请求,没有其他数据库操作,这样建模的时候甚至不需要在意数据库范式。
Sel8616
Sel8616
回复 @Isaac-c : 你说的都对~~但在“省市区县”这个需求中,都忽略,谢谢。
乌龟壳
乌龟壳
回复 @Sel8616 : 在比较合格的数据库中,视图在查询的时候会展开,和直接把视图里的join写在sql里从性能上来说区别不大,只不过有了视图写起来方便点而已。但是mysql是个特例,傻得很,写在视图里不一定会被展开。
sss6666
sss6666
回复 @Sel8616 : 如果数据量大,拷贝数据的时间是否会很长呢
sss6666
sss6666
回复 @Sel8616 : 那我请问,视图的数据是怎么来的呢,它的更新机制又是怎样的呢?
Sel8616
Sel8616
回复 @Isaac-c : 当然不一样。用视图实现查询,只需要在DBMS里维护一下视图的定义,在应用程序中就不需要每次都写JOIN。
下一页
0
IdleMan
IdleMan
id,name,code,p_id
0
Holt_Vong
Holt_Vong
这个问题讨论过不少了。。。
0
xinson
xinson
用mongodb
0
随风巽
随风巽

 业务上,三个行政级别,在不同的业务场景,可能要分开使用的。三张表方便很多。

 目前省份是常量。但是市与区显示是变动的。每年都有变动。请参考全国行政区域查询http://202.108.98.30/map

返回顶部
顶部