5

该数据库存储工程项目的不同对象类型:电机、电缆、泵、传感器等。

我们正在讨论是否为每种对象类型设置不同的表?(成堆的表,当我们想要添加一个新的对象类型时很痛苦——这会不时发生......)

或者,就像我们目前所做的那样,我们是否应该有一个存储对象类型(ID、名称)的表和另一个存储每个对象类型的可能属性的表,以及另一个存储每个属性类型的每个属性值的表?(一个真正的 PITA,但灵活。)

有人做过类似的事情吗?需要考虑的要点?执行?

4

1 回答 1

7

如果您可以获得企业应用程序架构模式(Fowler) 的副本,请查看Object-Relational Structural Patterns;每种方法都有利有弊,答案会根据您的特定项目的上下文而有所不同。

具体来说:

单表继承

类表继承

具体表继承

序列化 LOB(如果您考虑这种模式,还可以考虑使用 NoSQL 数据存储而不是 RDBMS)

您需要回答的最大问题是关系数据库是否适合您的数据。您只是在寻找存储数据的地方吗?你会使用来自不同对象的数据吗?在序列化 LOB中使用出色的序列化框架(如Kryo)并在标准列中存储搜索或关联关系所需的元数据可能就足够了。

于 2013-03-13T21:19:34.563 回答