MySQL数据库结构 - 存储Facebook FQL结果

时间:2011-04-17 04:32:48

标签: php mysql facebook structure facebook-fql

我正在使用FQL查询Facebook Insights table并将数据返回到我的服务器,我计划将其存储在MySQL数据库中。

我发现所有Insights指标都会返回值字段的不同数据类型。例如, application_installation_adds 之类的内容将返回如下值:

Array
(
    [0] => stdClass Object
        (
            [metric] => application_installation_adds
            [value] => 3
        )

)

..如果 application_permission_views_top 这样的指标在有数据时会返回此值:

Array
(
    [0] => stdClass Object
        (
            [metric] => application_permission_views_top
            [value] => stdClass Object
                (
                    [permissions_impression_email] => 5
                    [permissions_impression_user_birthday] => 4
                    [permissions_impression_read_insights] => 4
                )

        )

)

..如果它是空的,那就是这个:

Array
(
    [0] => stdClass Object
        (
            [metric] => application_permission_views_top
            [value] => Array
                (
                )

        )

)

鉴于不同的数据类型和值,我想知道在我的数据库中存储这些数据的最佳方法是什么。

我正在考虑建立一个这样的表:

  • METRIC_NAME
  • metric_subname

然后使用这样的过程:

  1. 获取FQL结果。
  2. 如果是空数组,则不执行任何操作(因为没有数据)
  3. 如果是单个值,请插入metric_name和value。给metric_subname一个值“Singlular”(这样我知道它只是一个单值的度量标准)
  4. 如果是stdCLass对象,请使用foreach循环填写metric_subname列。
  5. 这应该给我一个这样的表格,这样我就可以轻松地在轨道上查询数据:http://i.stack.imgur.com/0fekJ.png

    有人可以提供反馈吗?这是一个很好的方法,还是有更好的选择?

    提前致谢! :)

1 个答案:

答案 0 :(得分:0)

您知道指标层次结构可以达到多少级别?如果超过两个,则您的解决方案无法扩展。

假设在某些时候深度将达到> 2并设计一个通用模式。我想到的是保留两个表:metrics和user_metrics。度量表只包含可能度量的层次结构,只有一个更改:而不是名称和子名称,实现id,name,parent_id。第二个表将度量与用户相关联,并存储该值,因此:metric_id,user_id,value。