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

实习生新人问些问题

  •  
  •   BadCat · 2017-11-03 11:46:07 +08:00 · 2857 次点击
    这是一个创建于 2577 天前的主题,其中的信息可能已经有所发展或是发生改变。

    要写一个数据库整合的工具 遇到了一个问题 2 张表 a 表的主键 id 是 1、2、3、4。算是一个类型表 b 表外键关联的 a 表的主键,结构根图片差不多, 然后 a 表的 id 更新了,成了 4、5、6、7 所以我 b 表关联的外键列该怎样更新呢

    12 条回复    2017-11-05 17:42:03 +08:00
    BadCat
        1
    BadCat  
    OP
       2017-11-03 11:46:35 +08:00
    anthow
        2
    anthow  
       2017-11-03 11:54:18 +08:00
    划重点。。。lz 头像
    HarrisonZ
        3
    HarrisonZ  
       2017-11-03 11:54:48 +08:00
    如果用了外键,数据库会自己处理。如果没有用外键,自己把 A 表变动的对应关系记录一下,然后在 B 表对应着变更不就可以了。数据量不大的话,一次 fetch 出 A 表所有的 id,id 为 key,变更后的 id 为 value,构建一个 hashtable,然后取出 B 表数据,直接用 hashtable 的 k/v 替换一下就好了
    BadCat
        4
    BadCat  
    OP
       2017-11-03 12:01:23 +08:00
    @HarrisonZ 没有外键,外包用的 ef。数据量非常大,a 表更新后的 id 都是没法掌控的,所以这点就很烦。记录变动的话要怎么记录?放在 dictionary 中,key 是原先的 a 表 id,value 是更新后 a 表的 id,然后判断 b 表外键 如果是 1 的话 就等于 这个 1 ( key )所对应的 value 吗。不知道是这样意思吗
    HarrisonZ
        5
    HarrisonZ  
       2017-11-03 14:59:14 +08:00
    @BadCat 就是你理解的意思,数据量大就分段慢慢跑吧,数据这种小心点,一旦 id 变了就找不回了。先备份再操作。
    BadCat
        6
    BadCat  
    OP
       2017-11-03 15:04:08 +08:00
    @HarrisonZ 好的 谢谢
    hbn
        7
    hbn  
       2017-11-03 15:21:26 +08:00
    重点是头像 楼主也是老司机
    zhangjiha
        8
    zhangjiha  
       2017-11-03 15:27:37 +08:00
    我是因为楼主头像进来的
    JKeita
        9
    JKeita  
       2017-11-03 16:30:35 +08:00
    表设计就有问题,正常主键就不能改变
    BadCat
        10
    BadCat  
    OP
       2017-11-03 16:31:53 +08:00
    @JKeita 因为要合并数据库,防止数据冲突
    leitwolf
        11
    leitwolf  
       2017-11-04 11:29:43 +08:00
    头像确实是重点,次要的数据库问题表示不懂:)
    kyuuseiryuu
        12
    kyuuseiryuu  
       2017-11-05 17:42:03 +08:00
    外连接查表生成新表就好了呀。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1004 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 23:10 · PVG 07:10 · LAX 15:10 · JFK 18:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.