首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
HolmLoh
V2EX  ›  程序员

大家会使用外键吗?例如在建立数据库表使用 RBAC 模型时中间表是否会使用外键

  •  1
     
  •   HolmLoh · 268 天前 · 1903 次点击
    这是一个创建于 268 天前的主题,其中的信息可能已经有所发展或是发生改变。

    主要起因是因为我最近在给一个新项目建立 RBAC 的模型

    突然发现我们公司对这些连表的字段采取的手段缺只是从程序里面进行控制,不建立外键。而我读书的时候老师跟我们讲的是外键可以更好的管理和更规范,于是我突然就产生出了一个疑问,如果在实际企业中研发不使用的话,那外键的使用场景其实应该是在哪里

    那么大家有对外键有什么看法吗?对外键看法是什么

    8 回复  |  直到 2019-05-11 23:56:56 +08:00
    chenset
        1
    chenset   268 天前   ♥ 2
    不要使用数据库外键, 使用程序逻辑控制关系.
    TommyLemon
        2
    TommyLemon   268 天前   ♥ 2
    麻烦,改下相关的表结构或记录,得把外键关联的字段或数据调整下,不适合敏捷开发,后面全删掉了。
    #1 建议是很符合大部分互联网项目的需求的,需求不定,结构就经常调整,不适合用外键,在应用层关联更好。
    zidian9
        3
    zidian9   268 天前   ♥ 2
    互联网我这儿完全没有外键,没有表之间的关系。已经不用关心底层存储是不是关系型数据库了。默认都是非关系的。
    many2333
        4
    many2333   268 天前
    @chenset 我以前的公司也是这么规定的 这样有什么特别的好处吗请问? 我不太明白为什么
    junbaor
        5
    junbaor   268 天前 via iPhone   ♥ 3
    互联网业务一般访问量比较大,倾向于让数据库少做事,因为出现瓶颈不好扩展。加外键会影响效率,在业务上保持结构一致就行了。还是老话:具体情况具体分析。
    qlhai
        6
    qlhai   268 天前
    DBA 不让用
    passerbytiny
        7
    passerbytiny   268 天前   ♥ 2
    如果你要加一个技术上的约束,就要加一个由业务定义的、有效的约束。而很明显,外键既不是业务定义的,也无效。

    要不是历史遗留( ER 图的关系部分没有对应的物理模型),外键早就应该消失了。
    hsluoyz
        8
    hsluoyz   256 天前   ♥ 1
    我从另一个角度说说,也许可以不写 RBAC 数据库表,直接用 Casbin 来做 RBAC 权限管理即可: https://casbin.org/ ,原生支持多种数据库
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2018 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 32ms · UTC 11:42 · PVG 19:42 · LAX 03:42 · JFK 06:42
    ♥ Do have faith in what you're doing.