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

标签 sql schema

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

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

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

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

最佳答案

如果你能拿到一份 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并存储在标准列中搜索或关联关系所需的元数据。

关于sql - 我想在 SQL 数据库中存储许多对象类型。我应该为每种对象类型使用不同的表吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15396514/

相关文章:

ruby-on-rails - rake 数据库 :schema:load works in development but not production

sql - Postgres : Returning first 3 characters of a JSON property

sql - DB 存储与 DB CPU - 存储计算数据或使用 View 进行计算

SQL Server 2008 似乎为每个查询选择 PK 索引,即使似乎存在更好的索引

mysql - 我该如何改进这个数据库,表之间的关系是否良好?

php - 让用户根据 CodeIgniter 中的角色/权限访问 Controller

sql - 计算字符串中实例的数量

java - 列 "file"的类型为 oid,但表达式的类型为 byte

ruby-on-rails - MongoDB Schema Design --- 与团体的友谊

python - BigQuery 拒绝在流式传输时插入少量记录