Ich erstelle Tabellen für eine Datenbank (mit Redshift), um die Ereignisse mehrerer mobiler Apps zu speichern, die aus mehreren Quellen wiederhergestellt werden. Problem ist, dass es nicht sehr benutzerfreundlich/explizit ist, da es sie zwingt, Abfragen in mehrere Tabellen zu machen, um die Werte der Spalten wiederherzustellen, um zu verstehen, was es in den Zeilen ist, wie die meisten Daten in den Zeilen des Ereignisses Tabelle sind Ganzzahlen.Datenbankdesign: bessere lesbare Zeilen
CREATE TABLE source (
id serial PRIMARY KEY,
value string NOT NULL
);
CREATE TABLE application (
id serial PRIMARY KEY,
value string NOT NULL
);
CREATE TABLE platform (
id serial PRIMARY KEY,
value string NOT NULL
);
CREATE TABLE country (
id serial PRIMARY KEY,
value string NOT NULL
);
CREATE TABLE event (
id serial PRIMARY KEY,
source_id integer REFERENCES source(id),
application_id integer REFERENCES application(id),
platform_id integer REFERENCES platform(id),
country_id integer REFERENCES country(id),
...
updated_at date NOT NULL,
value decimal(100, 2) NOT NULL
);
Zum Beispiel dachte ich, die ENUM Art der Verwendung direkt um die Werte zu erhalten, aber ich fühle mich wie es weniger flexibel ist. Glaubst du, es gibt eine alternative Lösung, die ich verwenden könnte?
Danke!
Wie wäre das Erstellen einer Ansicht, wo die Tabellen verknüpft werden, so dass die Werte in der Ansicht direkt sichtbar sind? – michaeak
Es ist üblich, eine de-normalisierte Schicht zu haben, die für das Reporting verwendet wird. Kimbal-Sternmodellierung ist eines der häufigsten Modellierungsmuster dafür. Auf diese Weise kann die Anwendung eine normalisierte Struktur haben und das Reporting wird vereinfacht. –
Danke für Ihre Antworten. Ich dachte nicht an Ansichten, aber ich denke, es ist eine sehr einfache und effektive Lösung. Ich werde mir Kimballs Sternmodellierung ansehen. Danke noch einmal! – azekirel555