多个子系统共享用户信息的数据库设计思路?

问题

有两个独立的系统,A系统是班级信息管理系统,B系统是图书管理系统。
现在的设计思路是,A系统和B系统分为两个独立的业务项目,其数据库也各自独立,分为A数据库和B数据库。
A系统和B系统之间的唯一联系就是用户信息表,即A系统中的用户信息在B系统中也同样存在。
请问这种需求的系统,数据库怎么设计会比较合理?

我的思考

方案1

由于A数据库和B数据库中各自都有用户表,但是他们的内容是相同的,所以我可以开发一个单独的C系统专门用来同步这些用户的基础信息。
难点:用户信息同步太麻烦,总觉得这么做不是很好。

方案2

单独将用户信息表抽离成第三个数据库,当A系统或B系统需要访问用户信息的时候直接跨数据库联查。
难点:跨数据库联查感觉更麻烦- -;

总结:

具体的设计思路我不是很清晰,或者说对于这种需求,是否已经有成熟的解决方案?求支招。

阅读 5k
2 个回答

oAuth 不就为了解决你这种问题的吗

用户做成一个库和应用,我称之为通行证
表设计如下
用户

用户ID,昵称,头像,手机,姓名,...你需要的用户信息

登录凭证(因为有很多子系统,不可能用cookie去做认证)

token,created_at,expires_at,user_id,platform(platform看你需求,A站登录了,B站也能用的话就不加,否则就加上,各个platform独立)

该系统提供RPC或者HTTP接口给具体的业务站调用,大致接口列表:

  1. 注册用户
  2. 用户登录
  3. 检测用户token是否有效
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
1 篇内容引用
宣传栏