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

时间:2015-03-12 09:29:47

标签: php mysql dynamic

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

例如,我有以下组件:

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

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

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

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

我确实需要能够构建这些并以某种方式将它们链接在一起,例如将汽车链接到那辆自行车。

我脑子里想到了这一点,并希望有人可以帮我弄清楚如何在mysql中做到这一点。

1 个答案:

答案 0 :(得分:0)

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