我正在使用 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_subname
- 值(value)
然后使用这样的过程:
- 获取 FQL 结果。
- 如果是空数组,什么都不做(因为没有数据)。
- 如果是单个值,请插入 metric_name 和值。为 metric_subname 指定一个值“Singlular”(这样我就知道它只是一个单值指标)。
- 如果是 stdCLass 对象,使用 foreach 循环填充 metric_subname 列。
这应该给我一个像这样的表,这将允许我以一种简单的方式沿着轨道查询数据:http://i.stack.imgur.com/0fekJ.png
有人可以提供反馈吗?这是解决问题的好方法,还是有更好的选择?
提前致谢! :)
最佳答案
您知道指标层次结构可以达到多少层级吗?如果超过两个,您的解决方案将无法扩展。
假设在某个点深度将达到 > 2 并设计一个通用模式。我想到的一个是保留两个表:metrics 和 user_metrics。指标表将只包含可能指标的层次结构,有一个变化:代替名称和子名称,实现 id、名称、parent_id。第二个表会将指标与用户相关联,并存储值,因此:metric_id、user_id、value。
关于php - MySQL 数据库结构 - 存储 Facebook FQL 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5691490/