使用DATE字段作为MySQL日期维度的主键

nem*_*ems 9 mysql schema date data-warehouse dimension

我想在MySQL数据仓库中处理日期维度.(我是DW世界的新手)

我在google上进行了一些搜索,看到了很多表结构(大部分)日期维度,其中主键很简单UNSIGNED INTEGER.

为什么不使用DATE字段作为主键,因为使用MySQL它是3字节VS 4字节INTEGER

例如:

CREATE TABLE dimDate
id INTEGER UNSIGNED NOT NULL PRIMARY AUTOI_NCREMENT,
date DATE NOT NULL,
dayOfWeek
...
Run Code Online (Sandbox Code Playgroud)

VS

CREATE TABLE dimDate
date DATE NOT NULL PRIMARY,
dayOfWeek
...
Run Code Online (Sandbox Code Playgroud)

Dam*_*vic 21

日期维度是一种特殊的 - 主键的日期(2011-12-07)或日期相关的整数(20111207)实际上是首选.这允许事实表的良好分区(按日期).

对于其他类型的尺寸,建议使用代理(整数)键.

作为模板,每个维度通常具有unknown, not entered, error, ...通常与键匹配的条目0, -1, -2, ...

因此,更常见的是将整数格式的日期(20111207)作为主键而不是日期 - unknown, not entered, error, ...使用日期类型键表示有点混乱 .


ype*_*eᵀᴹ 10

如果您的表具有date类型的列,并且没有两行将具有相同的日期,那么您肯定可以使用此列作为PRIMARY KEY.

您可以看到许多示例,其中主键很简单,UNSIGNED INTEGER因为很多情况下主键没有完美的候选者.在AUTO_INCREMENT允许此列由数据库被自动填充(和是唯一的)插入期间.