4

现在我有一些我以前没有见过的东西:数据库真的是通用的。例如:我们有一个通用类型而不是具体类型:设备,它与自定义属性表相关。

不幸的是,其实体上的模型代表了这些表,因此模型根本不谈论业务。

最后编程是相当混乱的:没有人设计或定义应该在通用表中的自定义属性,所以很难知道在哪里放什么。而且您需要大量代码来检索一个属性。

您认为具有通用模型的通用数据库是某种反模式吗?有专业的吗?

4

3 回答 3

4

这让我想起了内部平台效应。基本上,数据库被简化为第二个数据库系统,您的具体类型在其中实现。

于 2010-03-04T15:08:58.747 回答
2

我过去使用过一个非常通用的数据库。这是管理具有非常频繁变化的需求和突然出现的意外互连的庞大系统的明智方法。

执行虽然是 3 种表:存储某些数据类型的主要“通用”表,链接表(表来自,链接来自,表到,链接到,记录类型)和表,定义什么类型数据的存储方式,以及如何存储。当然,这会产生一些开销,但这被引擎定制所抵消,这些定制真正加速了通用请求并保持了复杂请求的合理性(并且很少见)。

因此,虽然我同意在一般情况下这是一种反模式,但在某些情况下这是正确的做法。一个特定的场景是系统是一个通用平台,非技术人员通过将通用块组合在一起来创建新服务。块连接到“数据类型”表,但这些表将如何使用(以及块将填充什么)留给用户。

于 2010-03-04T09:14:24.240 回答
1

除非它是针对某些通用领域的,否则我会说它听起来确实像一个反模式。将其与映射到关系模型的通常对象/关系/对象进行比较,其中大多数表代表一些真实的域实体。这更直观,更易于理解和维护,并且不需要所有开销(在编码和执行中)。

于 2010-03-04T08:51:30.623 回答