具有可能连接的动态数据库组件

Dynamic database components with possible connections

目前正在开发一个新项目,可以输入不同的组件并相互连接。诀窍在于组件的数量和组件中的数据可以是任何东西,这使得在涉及 table-setup 和 keys 时很难在其中找到某种数据库逻辑。

例如我有以下组件:

cars
    name: audi, color: red, horsepower: 500
bicycle
    name: mybike, color: blue, lights: front and back

等等。这些组件有一些共同的类型,如名称和颜色,但也有一些不同的类型,如汽车的马力和自行车的灯。

这些组件实际上可以是任何东西,但我需要一种方法 link 以某种方式将它们组合在一个仍然有意义的数据库结构中。

我想我可以定义一个组件-table,它只提供一个 ID,每个组件旁边都有一个单独的组件类型 table。然而,每当有人想出一个新组件时,这将需要不同的 table(这又可以是任何时候的任何东西)。

我确实需要能够以某种方式将这些和 link 它们组合在一起,例如 link 那辆车到那辆自行车。

我 运行 一想到这个就有点头疼了,希望 mysql 的人能帮我弄清楚如何做到这一点。

适合此用例的开放式数据库模型是实体属性值 (EAV) 模型 http://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model。您在使用此模型时遇到的问题是查询的性能和复杂性。现在一些数据库可以帮助您使用将行转换为列的数据透视函数,但 MySQL 不是其中之一。因此,如果您使用此模型,则使用 postgres,因为它具有交叉表,可以将实体的单行属性转换为列。