Frage

Ich möchte eine Datumsdimension in einem MySQL-Datawarehouse verarbeiten.(Ich bin ein Neuling in der DW-Welt)

Ich habe einige Suchanfragen mit Google durchgeführt und viele Tabellenstrukturen (größtenteils) mit Datumsdimensionen gesehen, bei denen der Primärschlüssel ein einfacher generischer Codetagcode ist.

Warum nicht ein UNSIGNED INTEGER-Feld als Primärschlüssel verwenden, da es bei MySQL 3 Bytes gegenüber 4 Bytes für DATE sind?

Beispiel:

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
...

War es hilfreich?

Lösung

Wenn Sie eine Tabelle mit einer Spalte vom Typ date haben und in der keine zwei Zeilen jemals dasselbe Datum haben, können Sie diese Spalte sicher als PRIMARY KEY verwenden.

Sie sehen viele Beispiele, bei denen der Primärschlüssel ein einfacher generischer Codetagcode ist, da es in vielen Fällen keinen perfekten Kandidaten für den Primärschlüssel gibt.Mit dem UNSIGNED INTEGER kann diese Spalte beim Einfügen automatisch von der Datenbank ausgefüllt werden (und eindeutig sein).

Andere Tipps

Datumsdimension ist etwas Besonderes - ein Datum (2011-12-07) oder eine datumsbezogene Ganzzahl (20111207) für einen Primärschlüssel wird tatsächlich bevorzugt.Dies ermöglicht eine schöne Partitionierung (nach Datum) von Faktentabellen.

Für andere Arten von Dimensionen werden Ersatzschlüssel (Ganzzahlen) empfohlen.

Als Vorlage enthält jede Dimension normalerweise Einträge für unknown, not entered, error, ..., die häufig mit den 0, -1, -2, ...-Schlüsseln übereinstimmen

Aus diesem Grund ist es üblicher, ein ganzzahlig formatiertes Datum (20111207) als Primärschlüssel anstelle eines Datums zu finden. Die Darstellung eines generischen Codetagcodes mit einem Datumsschlüssel ist etwas unübersichtlich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top