代码之家  ›  专栏  ›  技术社区  ›  seveibar

为什么不应该在SQL模式中表示冗余状态?

  •  0
  • seveibar  · 技术社区  · 3 年前

    我的同事最近在SQL模式的模型中引入了状态机。也就是说,一列表示从数据库中的其他源计算出的状态。然后,每当在应用程序级别发生事件时,她都会重新计算此列。

    一个类似的例子是,我们有一张名为“餐厅”的桌子和一张名为“员工”的桌子。“employee”表有一个布尔列“working”,当员工正在工作时,该列被设置为true。她为餐厅引入了一个名为“is_open”的新专栏,每当我们在应用层收到一个指示员工开始/停止工作的事件时,该专栏就会设置为true或false。如果至少有一名员工在工作,那么餐厅是开放的。

    我试图解释说,数据库中的状态越少越好,最好是在运行时计算“is_open”(在ORM中或作为视图或其他东西),这样数据库中就不能表示无效状态,但她不相信我的解释。我很好奇,我是否可以在这里引用一个反模式,或者以一种更熟悉或更令人信服的方式(或者我可能错了!)

    这是反模式吗?如果是的话,向同事解释/参考它的最佳方式是什么?

    0 回复  |  直到 3 年前