Re: Check Constraint mit Subselect

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

In response to

Browse pgsql-de-allgemein by date

  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"