是在表里加一个字段还是联查一下另一个表里的这个字段比较合适?

比如 A 用户表有一个用户权限字段, B 功能表和 A表通过 uid 关联。我现在通过一个用户的 uid 来查询 B 表的数据,但是需要 A 表的权限。 我在 B 表加一个 用户权限(和A表重复了),因为我是不喜欢联查各种表除非必要。但是我一个同事就说不能这样,不利于表的维护,还有点浪费。所以就想问问各位大佬是写复杂的查询语句好,还是加一个适当的字段比较好

了先生有天去划船,孑孓孑孓孑孓孑孓孑孓~~
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 6
CrazyZard

我的建议就是说 A用户表 就是单单用户的数据 并不牵扯用户权限字段 除非一些必要的冗余字段
把权限表单独拉出来 可以查考rbac的表结构

5年前 评论
jltxwesley

这种查询语句一点也不复杂吧,没必要加重复的权限,如果权限变更了,你需要2个表都修改?

5年前 评论

@jltxwesley 当时的那个 app 项目就三类用户,三个权限。不会改的!所以通过用户 id 来判断权限

5年前 评论

@CrazyZard 嗯嗯,确实是一种好的设计方法。因为当时还是新手,所以设计的表不太合理:joy: .假如没有合理的设计表,那是改表比较好还是写 个联查比较好呢

5年前 评论
yema

表的设计最好不要2个表存在相同的数据,不符合设计原理。除非是死数据,比如下订单,订单会存商品的名字和当时的价格,哪怕后面该商品的价格发生变化,那这个订单里的商品依旧是下单时的价格。这个时候时需要存在相同的字段的。

5年前 评论
CrazyZard

@坐忘 对于接手的项目 不改动原始结构 推荐就是表联查 就是工作量增加了点 但能减少一些额外的突发事情

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!