• 请不要在回答技术问题时复制粘贴 AI 生成的内容
kikione
V2EX  ›  程序员

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

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

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