找回密码
 立即注册

QQ登录

只需一步,快速开始

小崔
金牌服务用户   /  发表于:2024-11-15 11:20  /   查看:74  /  回复:5
1金币
背景:
EQM_EQD_1000_LOCAL/EQM_EQD_1000_EXT 业务表,两表一对一根据EQUDATA1000SYSID字段关联,EQM_EQD_1000_EXT作为EQM_EQD_1000_LOCAL的字段补充表
T_SYS_DICT为字典表,业务表中部分字段只记录代码值,需要配合该表获取对应的名称

1.数据库设计:主键能否设置为文本,uuid模式

2.数据查询:代码值与字典表关联以获取对应的名称的设计模式,字典表只有一张,通过ZDLBBM/SJDM/ZDDM组合形成唯一主键,但关联字段时只支持两表字段一对一关联,ZDDM可能出现重复的问题导致业务数据数量错误
=>业务表增加虚拟字段,字典表增加ZDLBBM/SJDM/ZDDM组合后的字段,两个新字段关联可解决问题
=>还有别的解决方案?

3.数据更新:EQM_EQD_1000_LOCAL中字段直接修改更新没问题,但无法更新EQM_EQD_1000_EXT字段补充表的数据

附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

5 个回复

倒序浏览
Lay.Li悬赏达人认证 活字格认证
超级版主   /  发表于:3 天前
沙发
您好,
问题1,数据库主键可以设置为文本,uuid模式
外连库的话,主键只要不为下方的字段类型就可以






问题2的话,目前活字格中不支持多个字段关联多个字段的功能,所以正如您所述,需要再单独新增一个唯一的字段,然后去做关联即可
问题3的话,这里实际上有涉及了三张表的更新,所以在页面中使用单个数据表操作命令是不行的,只能更新一张表
由于这里EQM_EQD_1000_EXT的EQUDATA1000SYSID是主键,没有办法在数据表操作命令中添加,后续可以考虑修改为执行sql命令去写sql更新,
当然如果在外连库中这个字段不是主键的话,直接使用数据表操作更新也可以

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
小崔
金牌服务用户   /  发表于:3 天前
板凳
Lay.Li 发表于 2024-11-15 12:14
您好,
问题1,数据库主键可以设置为文本,uuid模式
外连库的话,主键只要不为下方的字段类型就可以

1.数据库主键可以设置为文本,uuid模式  这个说的是内置表吗?具体要怎么设置,文档好像没有相关资料



另外,针对问题3的回复,延伸下几个问题:
2.回复的修改工程文件里面,把数据更新的逻辑都放到服务端命令里面,是否不建议前端命令直接执行数据库更新命令?
3.若问题2答复支持允许前端命令直接执行数据库更新命令的话,我们就不考虑采用服务端命令的模式,开发/维护太麻烦了,实际的业务场景可能有几十上百个参数字段需要更新维护,单表更新不需要额外进行字段绑定省去很多工作,我现在不是很理解的是既然主表EQM_EQD_1000_LOCAL可以正常的更新修改数据,为什么EQM_EQD_1000_EXT 不可以,改为特定行更新也不可以,不能理解


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Lay.Li悬赏达人认证 活字格认证
超级版主   /  发表于:3 天前
地板
您好
1.内置表的话,目前不支持设置文本类型的主键,内置表的话,创建表之后就会自动添加一个整数类型的ID字段作为主键且不支持修改主键,所以这里要用文本类型,uuid模式的字段作为主键的话只能是去用外连表。

不过内置表可以创建文本字段,然后使用生成uuid之类的插件生成uuid保存uuid到这个字段中,但是主键只能是自动创建好的ID字段




2.是的,一般这种多表同时修改的复杂逻辑,我们都是建议在服务端命令中去实现对应逻辑,服务端命令相较于前端命令具有性能好,数据安全等的优势

3.前端实际上也可以实现相关的逻辑,看截图猜测可能这里第一个命令更新数据后重新加载了数据,造成第二个命令执行的时候页面的值变化了,所以第二个命令执行有问题,另外这里截图更新的逻辑感觉有些问题,如果用户是将EQUDATA1000SYSID更新了,那更新的时候用页面中的EQUDATA1000SYSID感觉不太对,得用id去查找更新前的EQUDATA1000SYSID数据,再去更新其他的子表数据

您这里说服务端命令开发/维护太麻烦具体是指哪儿麻烦呢,目前新版本支持一键从数据表生成参数

和调用时批量选择参数,应该可以轻松一些了


活字格10.0 update1新功能解密:二丶 前后端分离Plus - 快速选择单元格
https://gcdn.grapecity.com.cn/showtopic-224489-1-1.html
(出处: 葡萄城开发者社区)



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
小崔
金牌服务用户   /  发表于:3 天前
5#
Lay.Li 发表于 2024-11-15 13:59
您好
1.内置表的话,目前不支持设置文本类型的主键,内置表的话,创建表之后就会自动添加一个整数类型的ID ...

"另外这里截图更新的逻辑感觉有些问题,如果用户是将EQUDATA1000SYSID更新了,那更新的时候用页面中的EQUDATA1000SYSID感觉不太对,得用id去查找更新前的EQUDATA1000SYSID数据,再去更新其他的子表数据"

这里可能我界面做的有点歧义,我把那个文本框设置为只读了,只是方便我演示,并无意修改EQUDATA1000SYSID的值,我后续我测试了一下,就算关闭"调用成功后重新加载数据"勾选也是无法更新EQM_EQD_1000_EXT


但是基于前面的回答,我感觉还是采用服务端命令实现会好一点


最后感谢技术的快速响应回复,总结下相关问题与答复:
1.数据库设计:主键能否设置为文本,uuid模式
=>内置库仅支持数字型作为主键,外联库可自行设置,UUID生成可通过相关插件实现,也可在数据库表中设置默认值实现

2.数据查询:代码值与字典表关联以获取对应的名称的设计模式,字典表只有一张,通过ZDLBBM/SJDM/ZDDM组合形成唯一主键,但关联字段时只支持两表字段一对一关联,ZDDM可能出现重复的问题导致业务数据数量错误
=>业务表增加虚拟字段,字典表增加ZDLBBM/SJDM/ZDDM组合后的字段,两个新字段关联可解决问题

3.数据更新/新增:多表同时修改的复杂逻辑,建议在服务端命令中去实现对应逻辑,服务端命令相较于前端命令具有性能好,数据安全等的优势
可以使用一键从数据表生成参数/调用时批量选择参数的功能提高效率

评分

参与人数 1金币 +66 收起 理由
Lay.Li + 66 赞一个!

查看全部评分

回复 使用道具 举报
Lay.Li悬赏达人认证 活字格认证
超级版主   /  发表于:3 天前
6#
不客气哈~

这儿边也添加了一下前端命令,和您截图中的命令是一样的。测试是可以的,您要可以看看,后边有问题欢迎您继续发帖交流哈

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部