Database 如何在PostgreSQL中以星形模式结构排列数据

Database 如何在PostgreSQL中以星形模式结构排列数据,database,postgresql,business-intelligence,Database,Postgresql,Business Intelligence,我不确定用Postgres将我的数据安排成星型模式结构的最佳方式是什么 这是我的桌子: 1) 页面-保存所有页面访问的数据(访问者在访问网站期间点击的每个页面) 2) 会话-保存会话数据(例如每次访问者访问网站时) 3) 国家-县列表 4) 会话用户-用户和属性列表 5) 每日汇总基于上表的表格 谢谢 页面 用户id 会话号 访客id 会话\u国家\u id 页 网站类型 访客类型 资历 页码 结束日期 会话 用户id 会话号 访客id 访问国家/地区 操作系统id 自第一次会议以来的天数 会话

我不确定用Postgres将我的数据安排成星型模式结构的最佳方式是什么

这是我的桌子:

1) 页面-保存所有页面访问的数据(访问者在访问网站期间点击的每个页面) 2) 会话-保存会话数据(例如每次访问者访问网站时) 3) 国家-县列表 4) 会话用户-用户和属性列表 5) 每日汇总基于上表的表格

谢谢

页面 用户id 会话号 访客id 会话\u国家\u id 页 网站类型 访客类型 资历 页码 结束日期

会话 用户id 会话号 访客id 访问国家/地区 操作系统id 自第一次会议以来的天数 会话\开始\日期 会议结束日期 你回来了吗

会话\u用户 用户id 注册日期 帐户\用户\ id 购买日期

国家 国家识别号 国名

会话\u用户 用户id 注册日期 帐户\用户\ id 购买日期

每日汇总表 日期 访客数量 用户数 会话数 平均页数 先进的
定价的最佳方式取决于我们不知道的许多事情,但您希望知道(或应该知道!),包括数据量、更新频率、与数据库交互的系统或人员,您和您的用户将如何使用您的解决方案,最重要的是您试图通过数据仓库实现什么

以下是开始研究的几个地方:

简单地说,星型模式有一个或多个包含大量记录的事实表,以及多个包含较少记录的维度表。事实表包含您正在测量或计算的内容,维度包含您希望用于总结数据的特征。每个维度表中的主键与事实表中的键相关-事实表中的每个维度键组合都是唯一的

那么,首先,你要衡量的事实是什么?收入击打?还是怎样那么,你的维度是什么?每个维度有什么特征?一个获得答案的好地方是思考你正在解决的业务问题。得到这些答案后,表格设计如下。读几本关于数据仓库设计的书是非常值得的,以获得一些关于建模日期和时间维度的提示

就Postgresql而言,表创建查询可能如下所示:

create table dimension1 (
     dimension1_key serial primary key,
     attribute1 text not null default 'unknown',
     attribute2 text  not null default 'unknown');

create table dimension2 (
     dimension2_key serial primary key,
     attribute1 text not null default 'unknown',
     attribute2 text  not null default 'unknown');



create table fact1 (
    dimension1_key integer references dimension1,
    dimension2_key integer references dimension2,
    fact integer,
    constraint pk primary key (dimension1_key,dimension2_key)
    )
您通常会将索引放在要摘要的列上:

create index dimension2_attribute1 on dimension2(attribute1);    
我认为给你一个比这个更完整的答案是不可能的,甚至是不可取的。我认为你自己理解仓库设计是很重要的,为此你需要做一些阅读