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

数据库设计的时候从表除了关联字段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日