我喜欢纯粹的关系设计,但有时需要一种实体/值方法来存储数据。尤其是用户需要频繁创建新类型数据的地方。
我在一些商业软件中看到他们动态创建标准表而不是使用 EV 表。
显然,这不是一个解决所有问题的解决方案,只有在您限制可以定义的数据种类时才能工作。但是,它有以下好处:-
- 该模型已明确定义 - 您无需询问架构即可理解架构。
- 您可以获得更好的性能,因为表只保存该类型数据的数据,因此不需要查询明显不相关的行。
- 同样,索引只保存表定义的数据类型的值,再次提高了性能。(即在 EV 模型中,如果索引是 valueid,entityid - 您将搜索与查询无关的实体的值 - 除非您对索引进行分区)。
所以对我来说,这听起来很棒,但是如果把这个想法通过 DBA,你会吃很多苦头。这是一个好主意,有什么陷阱,有没有人尝试过这样做?