Java 对于MYSQL树形结构如何统计各个节点对应的业务数量?

对于MYSQL树形结构如何统计各个节点对应的业务数量
例如:mysql有id、type、parentId、num字段,type 1、2、3代表省市县,parentId为父级id,num代表各个类型的人口数量,一个市下面有多个县,市的num数量是该市下所有县num数量的和,省也是同理。
如果县人口出现了变化,有什么方案快速高效的更新各个节点的num。
如果人口变动这个业务在代码中各个模块都有涉及,并且还有批量变更和同时变更的情况,要保证数据的一致性该如何设计

阅读 936
2 个回答

是问数据库的设计?还是当县人数发生变化时,如何去统计区/市/省的最新人数?
1、数据库按照当前设计即可,id、type、parentId、num...。县的parentId为区,区的parentId为市,市的parentId为省
2、统计某市或省下最新总人数,可以自己写mysql的函数。传递省市区的id,递归查询增加数量即可
3、为了方便统计,在用户操作层面,不管是批量变更还是同时变更,都应该以 县 为单位。比如,只能修改某省市区下 县的人数,而不能直接修改省市区的人数

那就用触发器最合适啊,直接在数据库层,你代码在多少地方用都不麻烦。而且触发器里的sql跟触发动作的sql是一个事务,也保证了一致性

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题