【问题标题】:I would like to store many object types in a SQL database. Should I have a different table for each object type?我想在 SQL 数据库中存储许多对象类型。我应该为每种对象类型设置不同的表吗?
【发布时间】:2013-03-02 01:10:29
【问题描述】:

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

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

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

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

【问题讨论】:

标签: sql schema


【解决方案1】:

如果您可以获得Patterns of Enterprise Application Architecture (Fowler) 的副本,请查看Object-Relational Structural Patterns;每种方法都有利有弊,答案会因您的特定项目环境而异。

具体来说:

Single Table Inheritance

Class Table Inheritance

Concrete Table Inheritance

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

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

【讨论】:

  • 一如既往,清楚了解业务需求是做出明智技术选择的必要先决条件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-30
  • 2012-10-11
  • 1970-01-01
  • 1970-01-01
  • 2010-12-27
  • 2010-09-13
相关资源
最近更新 更多