我想在SQL数据库中存储许多对象类型。我应该为每种对象类型使用不同的表吗?

时间:2013-03-13 21:08:59

标签: sql schema

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

我们在讨论是否为每种对象类型使用不同的表格? (当我们想要添加一个新的对象类型时,表会很痛苦 - 这会偶尔发生......)

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

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

1 个答案:

答案 0 :(得分:6)

如果您能够获得Patterns of Enterprise Application Architecture(福勒)的副本,请查看Object-Relational Structural Patterns;每种方法都有利弊,答案会因您的特定项目背景而有所不同。

具体做法是:

Single Table Inheritance

Class Table Inheritance

Concrete Table Inheritance

Serialized LOB(如果您认为此模式还考虑使用NoSQL数据存储区而不是RDBMS)

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