13

MySQLデータウェアハウスで日付ディメンションを処理したい。(私はDWの世界の初心者です)

私はグーグルでいくつかの検索を行い、主キーが単純である多くのテーブル構造(ほとんど)の日付ディメンションを見ましたUNSIGNED INTEGER

DATEMySQLでは3バイト対4バイトであるため、フィールドを主キーとして使用しないのはなぜINTEGERですか?

元:

CREATE TABLE dimDate
id INTEGER UNSIGNED NOT NULL PRIMARY AUTOI_NCREMENT,
date DATE NOT NULL,
dayOfWeek
...

VS

CREATE TABLE dimDate
date DATE NOT NULL PRIMARY,
dayOfWeek
...
4

2 に答える 2

24

日付ディメンションは一種の特別なものです。主キーに日付(2011-12-07)または日付関連の整数(20111207)を使用することをお勧めします。これにより、ファクトテーブルの(日付による)適切なパーティション分割が可能になります。

他のタイプの寸法については、代理(整数)キーをお勧めします。

テンプレートとして、各ディメンションには通常unknown, not entered, error, ...、キーと一致することが多いエントリがあります0, -1, -2, ...

このため、日付ではなく整数形式の日付(20111207)を主キーとして見つけるのが一般的です unknown, not entered, error, ...。日付型のキーで表すのは少し面倒です。

于 2011-12-07T14:02:36.900 に答える
12

タイプの列を持つテーブルがありdate、2つの行が同じ日付になることはない場合は、この列をとして使用できますPRIMARY KEY

UNSIGNED INTEGER主キーの完全な候補がない場合が多いため、主キーが単純な例がたくさんあります。を使用AUTO_INCREMENTすると、挿入時にこの列がデータベースによって自動的に入力されます(一意になります)。

于 2011-12-07T13:07:54.413 に答える