0

我有一个包含复合主键 ex 的维度表:

操作员

centre
registreDuCommerce
libelleCentre
LibelleRegistreduCommerce

主键是:centre, registreDuCommerce

事实表是

我的事实表

col1
col2
col3
centre 
registreDuCommerce

中心和registreDuCommerce ?? center : 是公司所在城市的代码 registreDuCommerce : 公司标识

这些密钥有助于识别公司,因为我们可以使用相同registreDuCommerce但不同的 ce。

有什么理由要解决这个问题,因为我发现维度表中不可能有复合主键。

谢谢

4

1 回答 1

1

拥有这样的复合主键不仅不常见,而且拥有非综合主键(也许日期除外)也不常见。整数将是一个更传统的主键——您仍然可以在这些列上放置一个非空且唯一的键。

因此,您的事实表应该由维度表的整数外键以及指标组成。

create table dim_customer (
  id         integer primary key,
  first_name character,
  ...

create table dim_item (
  id           integer primary key,
  product_code character unique,
  ...


create table fct_sales (
  item_id     references dim_item(id),
  customer_id references dim_customer(id),
  ...
  sale_amount number

当原始数据与产品代码一起到达时,您将在 dim_item 表中插入一个唯一列表,其中包含所有尚不存在的产品代码。

然后,当您加载事实表时,您会从 dim_item 表中查找项目的相关 id,并将该值插入到 fct_sales 表中。

当您查询仓库时,您从事实表连接到维度表以获取有意义的值(客户名称、项目代码等)。

于 2013-06-13T20:51:13.597 回答