Skip site navigation (1) Skip section navigation (2)

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 (view raw or flat)
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

pgsql-de-allgemein by date

Next:From: Enrico WeigeltDate: 2008-04-03 08:24:35
Subject: Re: Tr?==?iso-8859-1?Q?igger für DDL Änderungen
Previous:From: Enrico WeigeltDate: 2008-04-03 07:45:18
Subject: Re: Verstaendnisfrage zu "could not open relation with OID"

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group