表设计时候,如果一块业务需要一张新表来实现,但是很多字段都是存在已有的表内的,是否还要将这些字段加入到这个新表中以方便直接单表查询. - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
Renco

表设计时候,如果一块业务需要一张新表来实现,但是很多字段都是存在已有的表内的,是否还要将这些字段加入到这个新表中以方便直接单表查询.

  •  
  •   Renco 2020 年 9 月 16 日 2131 次点击
    这是一个创建于 2047 天前的主题,其中的信息可能已经有所发展或是发生改变。

    考虑将已有字段全部加入到新表这种做法主要查询的时候。相关数据可以直接通过单表查询,不需要再做表关联。代码也简单。但是会带来一个问题就算原有表的数据改动,新表存储的字段数据依旧是老的,会造成数据的不一致。但数据改动的情况是极少数的,所以这边的设计是要怎么样比较合理一点。

    9 条回复    2020-09-16 14:22:51 +08:00
    Renco
        1
    Renco  
    OP
       2020 年 9 月 16 日
    补充一个这个新表的主要功能是做 流水记录。
    Renco
        2
    Renco  
    OP
       2020 年 9 月 16 日
    个人理解上觉得 即便流水表记录的是老数据,整体影响也不大。
    wangritian
        3
    wangritian  
       2020 年 9 月 16 日
    我的想法是如果项目初期,需求变动频繁,qps 要求不高,可以 join 求灵活;反之需求稳定,qps 要求高,或新旧表业务关联性不高,就复制字段,需要同步修改的时候让旧表模块广播个消息
    libook
        4
    libook  
       2020 年 9 月 16 日
    自己的项目经验来看,数据能放在一个地方就不要复制两份,维护缓存是一个超级烦人的问题,还容易出错。

    新字段为什么不能直接加到旧表里,是维度不一样嘛?

    如果是日志表的话,仅承诺数据是当时记录发生时的数据,业务上都以旧表的数据为准就好了。
    richzhu
        5
    richzhu  
       2020 年 9 月 16 日
    同样有这个疑问。。。被困扰好久
    saulshao
        6
    saulshao  
       2020 年 9 月 16 日
    设计原则的第一条是简单.所谓的冗余字段是为了特殊的需求而进行的额外设计。
    因此,一般情况下不应该将旧表的字段复制到新表中。
    yalin
        7
    yalin  
       2020 年 9 月 16 日
    简单双写?
    TomVista
        8
    TomVista  
       2020 年 9 月 16 日
    我有一个经验是:
    关系型数据库一般不重复定义,
    非关系型数据库,有这样的需求就应当重复定义字段
    zlowly
        9
    zlowly  
       2020 年 9 月 16 日
    虽然我们尽可能至少按 3NF 以上设计数据库时,但有时候也要兼顾性能来冗余数据,所以并不是绝对的。
    另外还有一点就是有时候表面看上去的冗余也是并不一定是冗余。例如一个流水表,里面有录入人员代码,而人员代码表里有部门代码,那原则上流水表中就不需要有部门代码。但实际上人员是有可能变更部门的,那么这时候在流水表里加部门代码字段,就表示流水发生当时人员所属部门,并不算冗余。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2983 人在线   高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 64ms UTC 06:50 PVG 14:50 LAX 23:50 JFK 02:50
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86