V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ca1123
V2EX  ›  数据库

关于关系型数据库第二范式的问题: 列之间计算出来的数据, 算违反第二范式么?

  •  
  •   ca1123 · 2022-07-13 03:57:53 +08:00 · 1078 次点击
    这是一个创建于 624 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如我有一个表记录事件, 包括一个列是发生时间, 那么我再记录一个发生间隔行么? 还是说和事件的性质有关? 如果事件是不会被删除的, 那就无所谓. 如果事件可能会被删除或者变化, 那就不能记录? 因为第二范式是为了保证列操作的独立性?

    2 条回复    2022-07-14 19:06:42 +08:00
    DonaldY
        1
    DonaldY  
       2022-07-13 08:54:45 +08:00
    行。

    第二范式属性完全依赖于主键。

    举个栗子:
    表 1 (订单 Id 、商品 Id 、商品名、数量、单位、价格),<订单 Id 、商品 Id> 为联合主键
    但商品名只与商品 Id 相关,不与订单 Id 相关。

    拆分为:表 1 (订单 Id 、商品 Id ),表 2 (商品 Id 、商品名、单位、价格),表 3 (订单 Id 、数量)
    ca1123
        2
    ca1123  
    OP
       2022-07-14 19:06:42 +08:00
    @DonaldY 我想到一种情况, 就是说假设有事件 A, B, C, 我们来看 C, C 的间隔在记录的时候是 C-B, 但是如果 B 被删掉了, 是不是就变成 C-A 了? 这决定于事件这个 entity 的性质, 比如人事问题, 记录了什么, 是在职员工的, 还是历史员工的?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3249 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 12:13 · PVG 20:13 · LAX 05:13 · JFK 08:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.