MySQLで日付ディメンションの主キーとしてDATEフィールドを使用する
-
29-10-2019 - |
質問
MySQLデータウェアハウスで日付ディメンションを処理したい。(私はDWの世界の初心者です)
グーグルでいくつか検索したところ、主キーが単純なジェネラコディセタグコードである多くのテーブル構造(ほとんど)の日付ディメンションが見つかりました。
MySQLではUNSIGNED INTEGER
の場合は3バイト対4バイトであるため、DATE
フィールドを主キーとして使用しないのはなぜですか?
例: ジェネラコディセタグプレ
VS ジェネラコディセタグプレ
解決
date
タイプの列を持つテーブルがあり、2つの行が同じ日付になることはない場合は、この列をPRIMARY KEY
として使用できます。
主キーの完全な候補がない場合が多いため、主キーが単純なジェネラコディセタグコードである例がたくさんあります。UNSIGNED INTEGER
を使用すると、挿入時にこの列をデータベースによって自動的に入力できます(一意になります)。
他のヒント
日付ディメンションは一種の特別なものです。主キーには日付(2011-12-07)または日付関連の整数(20111207)を使用することをお勧めします。これにより、ファクトテーブルを(日付で)適切に分割できます。
他のタイプの寸法については、代理(整数)キーをお勧めします。
テンプレートとして、各ディメンションには通常、unknown, not entered, error, ...
のエントリがあり、多くの場合、キー0, -1, -2, ...
と一致します
このため、日付ではなく整数形式の日付(20111207)を主キーとして見つけるのが一般的です。一般的なタグコードを日付型キーで表すのは少し面倒です。