维度表中的复合主键

时间:2013-06-13 20:18:33

标签: database-design data-warehouse business-intelligence

我有一个带有复合主键ex:

的维度表

Operateur

centre
registreDuCommerce
libelleCentre
LibelleRegistreduCommerce

主键是:centre, registreDuCommerce

事实表是

MyFactTable

col1
col2
col3
centre 
registreDuCommerce
  

中心和registreDuCommerce ?? center:是城市的代码   公司安装的地方registreDuCommerce:idenfiant of the   公司

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

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

由于

1 个答案:

答案 0 :(得分: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表中。

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