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

设计数据库表结构必须遵从 3 范式吗? 我感觉字段冗余更好用呀?冗余的字段也不超过 10 个

  •  
  •   kikione · 205 天前 · 2892 次点击
    这是一个创建于 205 天前的主题,其中的信息可能已经有所发展或是发生改变。
    26 条回复    2022-03-13 14:54:30 +08:00
    RainCats
        1
    RainCats  
       205 天前
    范式就是拿来打破的,冗余看情况
    aristotll
        2
    aristotll  
       205 天前
    一般第二范式就好了。冗余看业务场景
    pendulum
        3
    pendulum  
       205 天前
    个人项目喜欢 BCNF ,其他的随意
    iseki
        4
    iseki  
       205 天前
    你想好万一出现修改该怎么办就好
    chenxytw
        5
    chenxytw  
       205 天前
    看实际情况。最最常见的不遵守范式的理由就是更在意性能吞吐。
    iseki
        6
    iseki  
       205 天前
    能不打破就别打破,但有时候也没办法
    NCry
        7
    NCry  
       205 天前   ❤️ 1
    我的看法是只要你明确知道自己为什么需要冗余字段,并且考虑到了可能带来的问题,那么就可以不遵循。
    dobelee
        8
    dobelee  
       205 天前 via iPhone
    是范式,不是规范,更不是规定。实际情况大把冗余和快照以避免连表。
    Chad0000
        9
    Chad0000  
       205 天前 via iPhone
    想想微服务,数据更冗余了
    falsemask
        10
    falsemask  
       205 天前
    可千万别,接手的一个项目完全按照第三范式规则来的,A-B-C-D-E-F ,从左到右都是一对多的映射,都是用一个 id 对应,到了 F 表,完全看不出来对应的 A 表的字段是啥了,每次查个数据,血压都高了
    elboble
        11
    elboble  
       205 天前
    来 v2 时间不长,知道的月经讨论有两个,
    sql 要不要物理外键,
    http 除了 get,post 其他行为能不能用,

    是否遵守范式可以算第三个吧。
    Chad0000
        12
    Chad0000  
       205 天前
    @elboble 还有 win/mac android/iOS ,感觉这个都属于周经了。
    ye4tar
        13
    ye4tar  
       205 天前   ❤️ 1
    请先设计好数据结构,有了好的数据结构,ORM 会自动生成你想要的数据库,当然,性能问题可能不好,
    但是有数据结构,代码写的飞起,根本不在乎数据库里叫什么,怎么存的。
    要是用 typescript 的 typeorm 。连 hibernat 里恶心的 nested object mapper 问题都没了。那开发速度更进一部,这样,你就有时间做自己想做的事情了
    kingjpa
        14
    kingjpa  
       205 天前
    对于大厂为了性能,肯定能遵守最好了啊
    对于我们外包仔,null text like 满天飞,
    交付了事,规矩多就是给自己找不自在
    glovebx
        15
    glovebx  
       205 天前
    适当冗余,用空间换效率很划算
    westoy
        16
    westoy  
       205 天前
    抛开业务类型和规模谈这个没意义啊
    melkor
        17
    melkor  
       205 天前 via iPhone
    @falsemask 写个类把这逻辑都封装起来呀
    xuanbg
        18
    xuanbg  
       205 天前
    可以冗余的当然就要冗余,不然什么都联表查询效率就太低了。
    huyi23
        19
    huyi23  
       205 天前
    能冗余尽量冗余,一切为了不连表
    huyi23
        20
    huyi23  
       205 天前
    @huyi23 有一个前提,当前值基本不存在更新操作
    huyi23
        21
    huyi23  
       205 天前
    @huyi23 如果读取远远大于写入或者更新,这个前提也不需要遵守
    IvanLi127
        22
    IvanLi127  
       205 天前 via Android
    如果性能允许,尽量遵守咯。关联表查询不就是关系型数据库干的活么。要是很多字段都冗余,可以换文档型数据库了
    falsemask
        23
    falsemask  
       205 天前
    @melkor 我直接从数据库查个值为啥还要用代码跑
    melkor
        24
    melkor  
       205 天前 via iPhone
    @falsemask 有数据库操作权限是危险的行为,所以压根不该直接进数据库查数据。如果为了查业务数据,应该有一层 ORM 把逻辑封装了,直接按对象查询;如果为了离线运营,应该把数据上报离线存储后重新组织成宽表。
    ychost
        25
    ychost  
       205 天前
    尽量不要 join 表,一旦多了维护起来真炒蛋
    andytao
        26
    andytao  
       204 天前
    范式太严谨,真的很讨厌,各种连接找数据;命名不规范直接降低效率;
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1981 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 06:28 · PVG 14:28 · LAX 23:28 · JFK 02:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.