现在我有一些我以前没见过的东西:数据库非常通用。例如:我们有一个通用的:device,而不是具体的类型,它与自定义属性表有关。
不幸的是,其实体上的模型代表了那些表格,因此该模型根本不讨论业务。
最后编程很混乱:没有人设计或定义应该在通用表中的自定义属性,因此很难知道在哪里放什么。而且你只需要检索一个属性就需要很多代码。
你认为通用模型的通用数据库是反模式的某种吗?任何亲?
答案 0 :(得分:3)
这让我想起Inner Platform Effect。基本上,数据库被简化为第二个数据库系统,其中实现了具体类型。
答案 1 :(得分:2)
我过去曾使用过非常通用的数据库。这是一种管理庞大系统的合理方式,需要经常变化的需求和突然出现的互连。
执行虽然是3种表:存储某些数据类型的主要“通用”表,链接表(表格,链接,表格,链接,记录类型)和表格表格,定义存储的数据类型以及方式。 当然,这会产生一些开销,但这被发动机定制所抵消,这些定制确实加快了通用请求并使复杂的请求保持合理(并且很少见)。
所以,虽然我同意一般情况下这是反模式,但有些情况下这是正确的事情。一个特定的场景是系统是一个通用平台,非技术人员通过将通用块组合在一起来创建新服务。块连接到“数据类型”表,但这些表的使用方式(以及块将填充的内容)留给用户。
答案 2 :(得分:1)
除非它适用于某些通用域,否则我会说它听起来像反模式。将其与映射到关系模型的通常对象/关系/对象进行比较,其中大多数表表示一些真实域实体。这更直观,更易于理解和维护,并且不需要所有开销(在编码和执行中)。