From: | Enrico Weigelt <weigelt(at)metux(dot)de> |
---|---|
To: | pgsql-de-allgemein <pgsql-de-allgemein(at)postgresql(dot)org> |
Subject: | Re: Check Constraint mit Subselect |
Date: | 2008-04-03 08:13:57 |
Message-ID: | 20080403081357.GD14034@nibiru.local |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-de-allgemein |
* Thomas Guettler <hv(at)tbz-pariv(dot)de> schrieb:
Hi,
> Wie kann ich dann sicherstellen, dass es bei einer 1:N Beziehung, N
> nicht Null sein darf.
> Es muss also mindestens einen Datensatz geben.
>
> Beispiel: Zu einer Rechnung muss es immer Rechnungspositionen geben.
erstmal würde ich bezweifeln, daß dieses Definition sinnvoll ist.
Ich könnte mir viele Situationen denken, in denen eine Rechnung
vielleicht ohne Posten sein könnte (zb. bei Stornierungen). Ergo
müßtest Du erstmal sicherstellen, daß bei den dahinterliegenden
Prozessen solch eine Situation ausgeschlossen ist !
Im Übrigen würd ich Dir einen ganz anderen Ansatz vorschlagen:
Erst die offenen Posten erfassen und dann daraus (evtl. aus einer
Teilmenge) die Rechnung erzeugen. Das kapselst Du dann über Views
oder Functions - ein direkter Zugriff auf Rechnungsposten ist verboten!
Es gibt nur diese schreibenden Operationen:
* Rechnung anlegen (-> Posten => RE-ID)
* Rechnung stornieren ( -> RE-ID => void)
* Metadaten setzen (-> RE-ID, Attribut, Wert => void)
Für mich ist eine RE auch keine akkumulierte Forderung, sondern
ledeglich die Benachrichtigung darüber bzw. Zustands-Element im
Payroll-Prozeß.
cu
--
---------------------------------------------------------------------
Enrico Weigelt == metux IT service - http://www.metux.de/
---------------------------------------------------------------------
Please visit the OpenSource QM Taskforce:
http://wiki.metux.de/public/OpenSource_QM_Taskforce
Patches / Fixes for a lot dozens of packages in dozens of versions:
http://patches.metux.de/
---------------------------------------------------------------------
From | Date | Subject | |
---|---|---|---|
Next Message | Enrico Weigelt | 2008-04-03 08:24:35 | Re: Trigger für DDL Änderungen |
Previous Message | Enrico Weigelt | 2008-04-03 07:45:18 | Re: Verstaendnisfrage zu "could not open relation with OID" |