嵌套对象/实体时如何存储EAV数据

时间:2019-01-26 18:05:08

标签: php mysql entity-attribute-value

我有同时具有嵌套对象和属性的json数据。例如一个json对象:

(在将json_decode转换为数组之后:)

Array
(
    [attributename1] => attributevalue1
    [attributename2] => attributevalue2
    [NestedEntity1] => Array (

                [0] => Array (
                            [attributename1] => attributevalue1
                            [attributename2] => attributevalue2
                             )
                [1] => Array (
                            [attributename1] => attributevalue1
                            [attributename2] => attributevalue2
                             )
                [2] => Array (
                            [attributename1] => attributevalue1
                            [attributename2] => attributevalue2
                            [NestedEntity1.2] => Array (

                                    [0] => Array (
                                                [attributename1] => attributevalue1
                                                [attributename2] => attributevalue2
                                                 )
                                    [1] => Array (
                                                [attributename1] => attributevalue1
                                                [attributename2] => attributevalue2
                                                 )

                             )

                  )

) )

注意:实体可以进一步嵌套在嵌套实体中

我的问题是:如何将这些数据存储到MySQL中?

如果只是属性,那么在MySQL中为EAV数据设置一个表就很容易。但是,如果我有嵌套的对象,那么我对如何存储它完全迷失了。重要的是,我必须能够旋转表并进行查询,例如“ SELECT * FROM实体,如B等。

我怀疑我可能不得不将嵌套实体拆分成它们自己的新表,然后在“父”和“子”之间建立一对多的关系。然而: (1)我不知道这样做,以便可以容纳任何json数据。这可能意味着某些程序必须自动检测嵌套对象。 (2)尽管我愿意将单个json对象的数据填充到多个表中,每个表代表一个(嵌套的)实体,但是我在考虑是否有可能将所有内容填充到MySQL中的单个表中。这样可以避免在需要时创建新的表架构。

如果需要编程,请在可能的情况下建议使用PHP。

0 个答案:

没有答案