Re: Netzwerkstrukturen im relationalen Modell

From: Harald Fuchs <use_reply_to(at)protecting(dot)net>
To: pgsql-de-allgemein(at)postgresql(dot)org
Subject: Re: Netzwerkstrukturen im relationalen Modell
Date: 2005-04-13 16:19:42
Message-ID: pubr8ify3l.fsf@srv.protecting.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-de-allgemein

In article <20050413110046(dot)48c22bf5(dot)vortex25(at)gmx(dot)de>,
Vortex <vortex25(at)gmx(dot)de> writes:

>> create table relation (a int, b int);
>>
>> create function min(integer, integer) returns integer as
>> 'select CASE WHEN $1 > $2 THEN $2 ELSE $1 END' language 'SQL'
>> IMMUTABLE;
>>
>> create function max(integer, integer) returns integer as
>> 'select CASE WHEN $1 > $2 THEN $1 ELSE $2 END' language 'SQL'
>> IMMUTABLE;
> Hm, macht min() und max() sowas nicht von Haus aus? Nur müssten
> es halt rows sein. Ich hätte erwartet, daß sowas in der Art:
> min(generate_series($1,$2,$2-$1)) funktioniert. Aber
> generate_series() scheint andere Spalten zu generieren, als
> die aus einer "richtigen" Tabelle :-).

>> create UNIQUE INDEX relation_idx_antisymmetrie
>> ON relation (min(a,b),max(a,b));
> Aber hier wäre der Fall daß ein Objekt mit sich selbst
> verbunden wird, nicht automatisch ausgeschlossen, oder?
--> CHECK a != b ?

>> Elegant genug? :-)
> Ohja, das ist es, das ist es! :-)

Etwas _zu_ elegant für meinen Geschmack ;-)
Adjazenzabfragen sollten einen Index verwenden können

Ich würde stattdessen folgendes machen:
* PRIMARY KEY (a, b)
* CHECK (a < b)
* CREATE INDEX tbl_b_ix ON tbl (b)
* Evtl. ein BEFORE-INSERT-Trigger, der ggf. a und b vertauscht.
Damit mußt Du Dich um die Reihenfolge nicht selber kümmern
* CREATE VIEW tblv (id, adj) AS
SELECT a, b FROM tbl
UNION ALL
SELECT b, a FROM tbl
Das vereinfacht Adjazenzabfragen: SELECT adj FROM tblv WHERE id = myID

In response to

Responses

Browse pgsql-de-allgemein by date

  From Date Subject
Next Message Andreas Seltenreich 2005-04-13 16:31:38 Re: Netzwerkstrukturen im relationalen Modell
Previous Message Vortex 2005-04-13 14:20:26 Re: Netzwerkstrukturen im relationalen Modell