This topic created in 1608 days ago, the information mentioned may be changed or developed.
各位大佬好,给大佬倒卡布奇诺,如下
例子:
数据库内容
index deptname deptfullname upstreamAuthorities
1 开发中心 开发中心 0
2 java 开发中心-java 1
3 Linux 开发中心-java-Linux 2
用的是 springboot
现在修改 java 名字为 Python 相应的 deptfullname 和 Linux 的 deptfullname 也要修改 只要是被修改 java 的下级部门全称包含 java 的也要修改 当然部门层级以上只是一小部分
现在只想到二级部门用分割的办法 感觉不严谨 希望各位大佬不吝赐教 指点一二思路或者有类似的教程的链接
刚转行入门的菜鸡 如有描述功能不当还望各位大佬指正批评
祝大佬 头发浓密 睡眠良好 情绪稳定 抱拳。
20 replies • 2021-12-30 11:29:38 +08:00
 |
|
1
Lyv5 Dec 29, 2021
index deptname deptfullname upstreamAuthorities 1 开发中心 开发中心 0 2 java 开发中心-java 1 3 Linux 开发中心-java-Linux 2
格式问题
|
 |
|
2
Quarter Dec 29, 2021 via iPhone
我觉得可以在查询的时候处理拼接,本身数据库存可以不需要存 fullName ,不知道是不是个方法
|
 |
|
3
vanton Dec 29, 2021 5
不要存全名,存一个上级 id 。 从 id 获取到上级名称后拼接。
|
 |
|
4
Quarter Dec 29, 2021 via iPhone
对对,忘记说了,还要个 parentId 的字段保存层级关系
|
 |
|
5
Wien Dec 29, 2021 1
1. 查询的时候拼接 deptfullname ,单条记录只存一个 deptname ,修改也只需要修改一条记录。列表查询也直接查出来自己内存中组装 deptfullname 。 2. 加一个字段存所有上级的 id 路径 upstreamIdPath 。如 3 Linux Linux 2 1/2 。这样后续可以直接通过单条记录快速拼接出 deptfullname 。
|
 |
|
6
kekxv Dec 29, 2021 via iPhone
你这个我觉得直接改数据库更快🐶
|
 |
|
7
coolmenu Dec 29, 2021
数据库加个 view ,让 python 访问视图呗
|
 |
|
9
h82258652 Dec 29, 2021
楼主可以看一下树状结构在数据库应该怎么存 像这个一般会存一个 path(例如 1/3/7)和 parentid
|
 |
|
10
Lyv5 Dec 29, 2021
springboot 后端修改 例如进入 web 界面修改 一个二级部门 java 为 Python 相应的下级部门全称也要在数据库中修改 数据库字段不能修改
|
 |
|
11
Saxton Dec 29, 2021
查的时候拼接不行吗,为什么要冗余
|
 |
|
12
heiyo0 Dec 29, 2021
我也有一张这种表,然后我冗余这个 fullname 主要是为了方便能快速的查出单条记录,比如说我能通过“开发中心-java-Linux”,“运维中心-Linux”快速查出这两条记录, 那如果不冗余存储的话,请问是要怎么可以快速查出来呢?我也一直觉得这样冗余存储非常不好,但我又不知道怎么能快速查出单条数据来
|
 |
|
13
zhouyou457 Dec 29, 2021
如果不想改代码,可以直接在这个表加字段更新触发器。但是数据库的触发器的性能有点儿惨
|
 |
|
14
sujin190 Dec 29, 2021
其实这种要是有个有格式的部门编码就好了,比如用 bitint 保存,用 18 个数字作为部门编码,每两个数字组成一个部门 ID ,共可以有 9 级,每级最多可以 99 个部门,一级部门在最前面,后面部门依次往后,不足 18 个数字后面补 0
比如:
一级销售部 010000000000000000 一级研发部 020000000000000000
二级销售-北京 010100000000000000 二级研发-java 020100000000000000
三级研发-java-linux 020101000000000000
这样查询子级部门啥的就是个大小比较,很方便,新增修改部门也不算麻烦,如果想级别更多,那就搞两个 bigint 字段似乎就行啊,同级别 99 个子级部门估计够用了吧
|
 |
|
15
pengtdyd Dec 29, 2021
和 java 没关系,是表结构设计的不行
|
 |
|
16
chihiro2014 Dec 29, 2021
=。=你数据库里面没必要存名字啊,存 12345 ,然后代码里面写枚举类啊,这样你就不用替换了
|
 |
|
17
fishDD Dec 29, 2021
个人拙见哈,不知道对不对。简单看了下,这里涉及到三个地方: 1:接口返回名称 2: 代码中的名称 3: 数据库名称 看你想要的最终目的是什么,如果仅仅只是接口返回的话,那可以通过字典表的形式去映射,这样后面如果修改的话,那直接改字典表就行了。
|
 |
|
20
hiwind Dec 30, 2021
不能改数据库设计的话: 严格使用“-”进行拼接,并且名称限制不可以包含“-”,那么使用“-”进行分割然后修改也无不妥吧。按理来说修改不是很频繁的话慢一点倒也无所谓。
|