我有一个带有复合主键ex:
的维度表Operateur :
centre
registreDuCommerce
libelleCentre
LibelleRegistreduCommerce
主键是:centre, registreDuCommerce
事实表是
MyFactTable :
col1
col2
col3
centre
registreDuCommerce
中心和registreDuCommerce ?? center:是城市的代码 公司安装的地方registreDuCommerce:idenfiant of the 公司
这些密钥有助于识别公司,因为我们可以使用相同的registreDuCommerce
,但使用不同的公司。
有什么原因可以解决这个问题,因为我发现维度表中不可能有复合主键。
由于
答案 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表中。
当您查询仓库时,您从事实表加入维度表以获取有意义的值(客户名称,项目代码等)。