V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
dapengzhao
V2EX  ›  问与答

不懂就问,解决了单点登录。但新的问题也随之产生,用户表被单独拿出来后之前的外键关系该如何维持?

  •  
  •   dapengzhao · 2019-12-23 15:10:35 +08:00 · 1334 次点击
    这是一个创建于 1799 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1 谢谢之前在帖子里耐心解答的大佬们。
    2 使用 django-cas-ng,django-mama-cas 完成了单点登录
    
    遇到的问题,之前 A,B 系统的用户表都在自己所在的服务器上,并且用户表跟其他表有外键联系,现在把 A,B 系统的用户表统一到了认证服务器( c )上,这时候问题就出现了,A,B 上与用户表关联的数据无法展示了。有解决过这类问题的老哥给个思路吧。
    
    目前想的的是在 A,B 再加一个数据库( c )用户表使用( c )上的,但是看了 django 文档好像这种不支持外键。
    ’Django 当前不支持跨多个数据库的外键或多对多关系。如果使用路由器将模型分区到不同的数据库,则任何外键和这些模型定义的多对多关系必须在单个数据库内部。‘
    
    第 1 条附言  ·  2019-12-24 09:44:50 +08:00
    尽量还是用外键,否则好几个系统修改起来太麻烦,所以逻辑外键不好用,目前想到的是加一个中间件,把每次请求来的用户信息存到对应的系统中,每个系统还是有自己的用户表,只不过这个表只作为与关联数据展示的时候用。
    2 条回复    2019-12-23 20:19:38 +08:00
    hejunxin
        1
    hejunxin  
       2019-12-23 18:29:43 +08:00
    逻辑外键啊 不能在 A、B 系统里 自己查自己需要的信息吗
    crclz
        2
    crclz  
       2019-12-23 20:19:38 +08:00
    认证库 C:
    user_id | password
    ------------------------------
    123 | 88888888

    数据库 A:
    user_id | money | age
    -------------------------------
    123 | 8000 | 20

    数据库 B:
    user_id | some_property
    123 | "Some Value"
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1525 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 17:06 · PVG 01:06 · LAX 09:06 · JFK 12:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.