【问题标题】:Dynamic database components with possible connections具有可能连接的动态数据库组件
【发布时间】:2015-05-14 09:16:58
【问题描述】:

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

例如我有以下组件:

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

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

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

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

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

想到这一点,我的脑海里陷入了困境,希望有人能帮助我弄清楚如何在 mysql 中做到这一点。

【问题讨论】:

    标签: php mysql dynamic


    【解决方案1】:

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

    【讨论】:

    • 听起来像我需要的,我将深入该链接并设置一个假人。到时候我可以问你任何关于这方面的问题吗?
    • 当然。我们不得不在我们的一些应用程序中使用这个模型,所以我应该能够帮助你。
    猜你喜欢
    • 2011-12-16
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-09
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    • 1970-01-01
    相关资源
    最近更新 更多