btlyeo 2024-08-16 11:23 采纳率: 0%
浏览 8

数据库设计的时候从表除了关联字段id要不要存关联字段的名字

比如创建order表,有createBy,updateBy,DeleteBy这几个用户id

每次写查询的时候都要关联3次user表,为了取这几个name,

感觉数据库开销变大很多,

是有什么的sql语句解决这个问题,还是干脆在order表里面加上createName,updateName,DeleteName这几个字段得了?

  • 写回答

2条回答 默认 最新

  • 一直免费一直爽 2024-08-16 11:23
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    在数据库设计中,通常不建议将关联字段的名字直接存储在从表中,因为这会导致数据冗余和不一致。相反,可以通过编写SQL查询来获取关联字段的名字,这样可以减少数据库开销并保持数据的一致性。

    例如,你可以使用以下SQL查询来获取order表中的createBy、updateBy和deleteBy对应的用户名:

    SELECT o.id, u1.username AS createName, u2.username AS updateName, u3.username AS deleteName
    FROM order o
    JOIN user u1 ON o.createBy = u1.id
    JOIN user u2 ON o.updateBy = u2.id
    JOIN user u3 ON o.deleteBy = u3.id;
    

    这样,你可以在需要的时候获取这些名字,而不是每次都从user表中查询。当然,如果你发现这种查询方式对性能有影响,可以考虑在order表中添加额外的字段(如createName, updateName, deleteName)来存储这些信息。但是,这样做可能会导致数据冗余和一致性问题,因此需要权衡利弊。

    评论

报告相同问题?

问题事件

  • 创建了问题 8月16日

悬赏问题

  • ¥15 关于#c语言#的问题:求完整代码条件好说
  • ¥100 HALCON DELPHI
  • ¥15 (需要远程,AI不回)VB6二进制文件转换成功,但是C#转换总是失败
  • ¥15 关于#matlab#的问题:有没有什么其他办法能够保证不退出进程(相关搜索:matlab调用)
  • ¥15 依据报错在原代吗格式的基础上解决问题
  • ¥15 在虚拟机中安装flash code
  • ¥15 单片机stm32f10x编写光敏电阻调节3.3伏大功率灯亮度(光强越大灯越暗,白天正常光强灯不亮,使用ADC,PWM等模块)望各位找一下错误或者提供一个可实现功能的代码
  • ¥20 verilog状态机方法流水灯
  • ¥15 pandas代码实现不了意图
  • ¥15 GD32H7 从存储器到外设SPI传输数据无法重复启用DMA