设计-用户查询

用户查询范围

当查询用户时,查询条件不是通过用户唯一ID查询,而是通过不唯一的条件查询。
例如:通过用户手机号查询用户。
用户的手机都是不同的,是唯一的。

  1. 项目只服务一家公司时,根据业务场景判断手机号可以确认为唯一性。
    这种场景比较简单,查询用户时直接通过手机号即可:
SELECT * FROM WHERE user WHERE mobile = ?
  1. 项目服务多家公司,每家公司都有不同的用户群体。
    查询所属某公司下的用户,单纯的只用手机号做条件会导致查询出不属于当前公司的用户。所以SQL需要增加条件。
// 是这个公司的 并且手机号是xxx
SELECT * FROM WHERE user WHERE mobile = ? AND vendor_id = ?
  1. 业务需求出现变化,用户被禁用后,可以再创建相同手机号的正常状态用户。
    正常状态用户手机号是唯一的。

此时查询条件再次出现变化,需要查询正常状态的用户手机号只能有一个,禁用状态的用户可以出现多个。

SELECT * FROM WHERE user WHERE mobile = ? 
AND vendor_id = ? AND sidable = false

总结

当服务于多家公司时,用户前台查询数据,每次必须要带上这个公司的vendor_id。代码里出现给用户前台做查询没有带vendor_id 只是 mobile = ? 或者 name = ? 一定是有问题的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值