mysql 表设计字段冗余问题

业务中需要保存行政区域信息,不知道行政区域字段是否可以冗余?只设计一个areaId(区、县) 还是 可以冗余provinceId,provinceName,cityId,cityName,areaName字段?

比如用户表设计,出生地:安徽省合肥市蜀山区,我是只保存蜀山区的id还是把安徽省和合肥市的id和名称也保存 ?

如果这个地方你将就自己,以后可能设计其他的类似的很可能就这样做了。现实中有很多类似的层级关系例子,例如组织架构、职员上下级、
产品结构等。只需要额外加一个字段就行了(父项Id),顶级的父项为null。这样设计便于查询和维护。字段:Id, Name, ParentId(父项Id),Type(表示类别:省、市、县/区等)

从数据库设计范式来说是只存areaid,但是现在存储方面不存在问题,还是要结合业务考虑。
如果数据量少,这个就存areaid,查询多但是也满不了多少,而且可以把地区部转换成省、市、区的视图效率就更快了
如果数据量很大,而且要对省、市、区做数据分析可以考虑把省、市、区id都加上,如果只是展示可以考虑只存areaid,然后把完整的xx省xx市xx区存起来

主要还是看你的业务需求,如果需要大量通过省份这些的查询,那么就冗余存
如果偶尔查查,那就需要的时候联查就好了