Es scheint langweilig, aber ich würde eine Tabelle für jedes Produkt in der Summe erstellen.
CREATE TABLE foo (id uuid PRIMARY KEY);
CREATE TABLE bar (id uuid PRIMARY KEY,
s text NOT NULL);
CREATE TABLE baz (id uuid PRIMARY KEY,
a integer NOT NULL,
b integer NOT NULL,
c integer NOT NULL);
Sie wollen wahrscheinlich einige Metadaten speichern, zusammen mit Aufzeichnungen jeder Art:
CREATE TABLE envelope (id uuid PRIMARY KEY,
t timestamptz NOT NULL DEFAULT now(),
by text NOT NULL DEFAULT sessions_user);
Und dies deutet auf eine Fremdschlüssel:
CREATE TABLE foo (id uuid PRIMARY KEY REFERENCES envelope);
CREATE TABLE bar (id uuid PRIMARY KEY REFERENCES envelope,
s text NOT NULL);
CREATE TABLE baz (id uuid PRIMARY KEY REFERENCES envelope,
a integer NOT NULL,
b integer NOT NULL,
c integer NOT NULL);
Und wenn Sie sogar Sie strengere könnte vorstellen, eine ty
Spalte mit den Namen des Typs zu speichern und damit einen zusammengesetzten Fremdschlüssel zu erstellen. (Wie beschrieben unter "Where Not to Use Table Inheritance" in der LedgerSMB Blog.)
Könnten Sie bitte ein Beispiel für echte Daten geben, die Sie speichern möchten? – Shnugo
Meine erste Idee wäre XML. Sie können beliebige hierarchisch strukturierte Daten zusammen mit beschreibenden Metadaten (Attributen) hinterlegen. Aber du wirst eine hohe Logik brauchen, um das zu interpretieren ... – Shnugo
@shnugo Wie ich schon erwähnt habe, bin ich an relationalen Datenbanken interessiert. – Halst