【发布时间】:2011-08-17 12:45:39
【问题描述】:
目前,我正在使用 PHP/MySQL 从头开始为开源 Business Intelligence 软件开发时间机器。
我的时间机器表被所有其他需要日期信息(例如订单、产品等)的表使用,并且它们与time_id 绑定。所以它的 MySQL 表是这样的:
time_id | timestamp | day | week | month | quarter
1 1303689654 25 17 4 2
2 1303813842 26 17 4 2
...
订单表绑定如下:
order_id | time_id ...
3123 2
...
编辑:类似于STAR SCHEMA。
问题还在于获取 TIME (13:45) 信息。通常我不需要这个,但就像订单一样,有时有几张桌子需要这个 HOUR/MINUTE 信息。
如何巧妙地解决这个问题?我有几个解决方案,但首先我想看看你的意见..
【问题讨论】:
-
看起来像一个设计缺陷。使所有其他表依赖于计时表。帮自己一个忙,用简单的时间戳替换 time_id 列。并将解析该信息的逻辑添加到您需要的各个组件中。
-
我不明白这样做的目的。为什么不直接使用
DATETIME字段?您可以从中提取所有其他信息(日、周、月...)。 -
@netbrain - 我使用此表进行实时分析 (BI)。所以它就像启动模式。所以我必须这样做。
-
@Pekka - 类似于星型模式 (en.wikipedia.org/wiki/Star_schema)
-
@dino beytar:我想你不明白,日期就是这样,一个日期,而不是你会在星型模式中引用的对象。星型模式的起点是在特定日期售出的单位数,其中日期是时间戳或日期时间,并且您存储单位数和产品 ID,这将反过来引用您的产品表等。
标签: php mysql business-intelligence timemachine