-- Effektive (Ist-)Werte, Roadmap Nr. 5 (SPEZIFIKATION 3.9). -- -- Ein Ist-Satz gehoert zum PLAN, nicht zum Szenario: Die Realitaet ist dieselbe, egal gegen -- welches Szenario man sie haelt. Die Zuordnung auf die szenario-eigenen Element-IDs laeuft -- ueber die Herkunfts-Kette (sourceElementId) in der Applikationsschicht. CREATE TABLE "ActualsSet" ( "id" TEXT NOT NULL, "planId" TEXT NOT NULL, -- Exaktes Erfassungsdatum: erscheint in der Liste und auf der Zeitachse. "recordedOn" DATE NOT NULL, -- Kalenderjahr. NUR dieses geht in die Berechnung ein (der Rechenkern arbeitet in -- ganzen Jahren ab Planbeginn). "year" INTEGER NOT NULL, "comment" TEXT, -- Effektiver Cash-Bestand. Eigenes Feld, weil Cash kein FinancialElement ist. "cash" DOUBLE PRECISION, -- Werte je WURZEL-Element: { "": { "value": 120000, "mortgage": 400000 } } "values" JSONB NOT NULL DEFAULT '{}', "createdById" TEXT NOT NULL, "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT "ActualsSet_pkey" PRIMARY KEY ("id") ); -- Die Saetze werden immer nach Jahr sortiert gelesen (aeltester zuerst fuer die Rechnung). CREATE INDEX "ActualsSet_planId_year_idx" ON "ActualsSet"("planId", "year"); ALTER TABLE "ActualsSet" ADD CONSTRAINT "ActualsSet_planId_fkey" FOREIGN KEY ("planId") REFERENCES "Plan"("id") ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE "ActualsSet" ADD CONSTRAINT "ActualsSet_createdById_fkey" FOREIGN KEY ("createdById") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;