我正在与一位刚接触编程的同事一起工作,我正在尝试解释 ORM(和 SRP)的一些概念,但不知何故我失败了。这是一个 Rails 应用程序。
我正在使用的应用程序的类层次结构如下所示:
-CallFlow——
路由(多态)
——RouteOptions
有特定于各种 Route 的属性,每个 RouteType 都有自己的一组选项。理想情况下,对我来说,会有一个 call_flows 表,每个路由类型的表,然后对于具有选项的路由类型,该路由类型的选项表。一个非常粗糙的模型:
Simple_route 和 outbound_route 没有选项。在确实有选项的路线中,它是一个 has_many 关系,为我们提供了该路线的一系列选项。
相反,我的同事想将特定于每个路由的所有字段放在 call_flows 表中。这是该模式的模型:
因此,您将拥有一个大的 call_flows 表,其中的字段并不适用于每条记录。事实上,只有少数人愿意。我的建模决定背后的原因如下:
- 它遵循基本的标准化模式
- 它减少了空值的数量,从而减少了数据库大小
- 改变更灵活
- 它遵循基本的SRP原则
我错过了什么吗?如果有任何资源可以帮助新程序员了解 DB 规范化的重要性,那就太好了。
谢谢!